@needle-tools/engine 2.33.0-pre → 2.35.0-pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/needle-engine.d.ts +3045 -2855
- package/dist/needle-engine.js +457 -407
- package/dist/needle-engine.js.map +4 -4
- package/dist/needle-engine.min.js +117 -67
- package/dist/needle-engine.min.js.map +4 -4
- package/lib/engine/api.d.ts +3 -0
- package/lib/engine/api.js +4 -0
- package/lib/engine/api.js.map +1 -0
- package/lib/engine/engine.d.ts +4 -3
- package/lib/engine/engine_addressables.d.ts +5 -4
- package/lib/engine/engine_addressables.js +8 -7
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_components.d.ts +16 -0
- package/lib/engine/engine_components.js +223 -0
- package/lib/engine/engine_components.js.map +1 -0
- package/lib/engine/engine_create_objects.d.ts +11 -0
- package/lib/engine/engine_create_objects.js +20 -0
- package/lib/engine/engine_create_objects.js.map +1 -0
- package/lib/engine/engine_element.js +2 -2
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_gameobject.d.ts +33 -0
- package/lib/engine/engine_gameobject.js +449 -0
- package/lib/engine/engine_gameobject.js.map +1 -0
- package/lib/engine/engine_gltf.d.ts +13 -2
- package/lib/engine/engine_gltf.js +7 -1
- package/lib/engine/engine_gltf.js.map +1 -1
- package/lib/engine/engine_gltf_builtin_components.d.ts +3 -3
- package/lib/engine/engine_gltf_builtin_components.js +2 -3
- package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
- package/lib/engine/engine_instancing.d.ts +5 -0
- package/lib/engine/engine_instancing.js +22 -0
- package/lib/engine/engine_instancing.js.map +1 -0
- package/lib/engine/engine_lightdata.d.ts +1 -1
- package/lib/engine/engine_lightdata.js.map +1 -1
- package/lib/engine/engine_mainloop_utils.d.ts +2 -2
- package/lib/engine/engine_mainloop_utils.js +7 -6
- package/lib/engine/engine_mainloop_utils.js.map +1 -1
- package/lib/engine/engine_networking.d.ts +2 -11
- package/lib/engine/engine_networking.js +1 -7
- package/lib/engine/engine_networking.js.map +1 -1
- package/lib/engine/engine_networking_files.d.ts +1 -1
- package/lib/engine/engine_networking_files.js +8 -7
- package/lib/engine/engine_networking_files.js.map +1 -1
- package/lib/engine/engine_networking_files_default_components.d.ts +2 -2
- package/lib/engine/engine_networking_files_default_components.js +38 -43
- package/lib/engine/engine_networking_files_default_components.js.map +1 -1
- package/lib/engine/engine_networking_instantiate.d.ts +8 -6
- package/lib/engine/engine_networking_instantiate.js +12 -9
- package/lib/engine/engine_networking_instantiate.js.map +1 -1
- package/lib/engine/engine_networking_types.d.ts +14 -0
- package/lib/engine/engine_networking_types.js +8 -0
- package/lib/engine/engine_networking_types.js.map +1 -0
- package/lib/engine/engine_physics.d.ts +1 -23
- package/lib/engine/engine_physics.js +18 -56
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_rendererdata.d.ts +1 -1
- package/lib/engine/engine_rendererdata.js.map +1 -1
- package/lib/engine/engine_scenetools.d.ts +2 -2
- package/lib/engine/engine_scenetools.js +22 -5
- package/lib/engine/engine_scenetools.js.map +1 -1
- package/lib/engine/engine_serialization_builtin_serializer.d.ts +1 -1
- package/lib/engine/engine_serialization_core.d.ts +1 -1
- package/lib/engine/engine_serialization_decorator.d.ts +1 -1
- package/lib/engine/engine_setup.d.ts +14 -15
- package/lib/engine/engine_setup.js +34 -23
- package/lib/engine/engine_setup.js.map +1 -1
- package/lib/engine/engine_three_utils.js +0 -6
- package/lib/engine/engine_three_utils.js.map +1 -1
- package/lib/engine/engine_types.d.ts +103 -0
- package/lib/engine/engine_types.js +49 -0
- package/lib/engine/engine_types.js.map +1 -0
- package/lib/engine/engine_utils.d.ts +1 -1
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_components.js +2 -2
- package/lib/engine/extensions/NEEDLE_components.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_deferred_texture.d.ts +1 -1
- package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +1 -1
- package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +1 -1
- package/lib/engine/extensions/NEEDLE_render_objects.d.ts +2 -2
- package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +1 -1
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +3 -2
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
- package/lib/engine/extensions/extensions.d.ts +1 -1
- package/lib/engine-components/Animation.js +1 -1
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/Animator.js.map +1 -1
- package/lib/engine-components/AvatarLoader.js +6 -5
- package/lib/engine-components/AvatarLoader.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +2 -2
- package/lib/engine-components/Camera.js +6 -12
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CameraUtils.d.ts +3 -0
- package/lib/engine-components/CameraUtils.js +15 -0
- package/lib/engine-components/CameraUtils.js.map +1 -0
- package/lib/engine-components/Collider.d.ts +1 -0
- package/lib/engine-components/Collider.js +4 -0
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Component.d.ts +16 -50
- package/lib/engine-components/Component.js +67 -465
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/DragControls.js +1 -1
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/Duplicatable.js +2 -1
- package/lib/engine-components/Duplicatable.js.map +1 -1
- package/lib/engine-components/LODGroup.js.map +1 -1
- package/lib/engine-components/Light.d.ts +2 -1
- package/lib/engine-components/Light.js +2 -2
- package/lib/engine-components/Light.js.map +1 -1
- package/lib/engine-components/NestedGltf.js +2 -1
- package/lib/engine-components/NestedGltf.js.map +1 -1
- package/lib/engine-components/OrbitControls.js +4 -2
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/Renderer.d.ts +3 -5
- package/lib/engine-components/Renderer.js +3 -20
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/{Rigidbody.d.ts → RigidBody.d.ts} +2 -1
- package/lib/engine-components/{Rigidbody.js → RigidBody.js} +1 -1
- package/lib/engine-components/{Rigidbody.js.map → RigidBody.js.map} +1 -1
- package/lib/engine-components/ScreenCapture.d.ts +0 -10
- package/lib/engine-components/ScreenCapture.js +8 -75
- package/lib/engine-components/ScreenCapture.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SyncedCamera.js +3 -2
- package/lib/engine-components/SyncedCamera.js.map +1 -1
- package/lib/engine-components/SyncedTransform.js +1 -1
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/TestRunner.js.map +1 -1
- package/lib/engine-components/VideoPlayer.d.ts +14 -3
- package/lib/engine-components/VideoPlayer.js +390 -47
- package/lib/engine-components/VideoPlayer.js.map +1 -1
- package/lib/engine-components/Voip.js +2 -1
- package/lib/engine-components/Voip.js.map +1 -1
- package/lib/engine-components/WebARSessionRoot.js +1 -1
- package/lib/engine-components/WebARSessionRoot.js.map +1 -1
- package/lib/engine-components/WebXR.js.map +1 -1
- package/lib/engine-components/WebXRAvatar.js +1 -1
- package/lib/engine-components/WebXRAvatar.js.map +1 -1
- package/lib/engine-components/WebXRController.d.ts +1 -0
- package/lib/engine-components/WebXRController.js +40 -9
- package/lib/engine-components/WebXRController.js.map +1 -1
- package/lib/engine-components/WebXRGrabRendering.d.ts +1 -1
- package/lib/engine-components/WebXRGrabRendering.js +1 -1
- package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
- package/lib/engine-components/WebXRSync.js +1 -1
- package/lib/engine-components/WebXRSync.js.map +1 -1
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +1 -2
- package/lib/engine-components/codegen/components.js +1 -2
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/js-extensions/ExtensionUtils.d.ts +4 -0
- package/lib/engine-components/js-extensions/ExtensionUtils.js +56 -0
- package/lib/engine-components/js-extensions/ExtensionUtils.js.map +1 -0
- package/lib/engine-components/js-extensions/Object3D.js +16 -41
- package/lib/engine-components/js-extensions/Object3D.js.map +1 -1
- package/lib/engine-components/js-extensions/Vector.d.ts +2 -0
- package/lib/engine-components/js-extensions/Vector.js +16 -0
- package/lib/engine-components/js-extensions/Vector.js.map +1 -0
- package/lib/engine-components/timeline/PlayableDirector.d.ts +2 -1
- package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
- package/lib/engine-components/ui/BaseUIComponent.d.ts +1 -0
- package/lib/engine-components/ui/BaseUIComponent.js +11 -5
- package/lib/engine-components/ui/BaseUIComponent.js.map +1 -1
- package/lib/engine-components/ui/Canvas.d.ts +3 -0
- package/lib/engine-components/ui/Canvas.js +12 -1
- package/lib/engine-components/ui/Canvas.js.map +1 -1
- package/lib/engine-components/ui/CanvasScaler.d.ts +0 -0
- package/lib/engine-components/ui/CanvasScaler.js +17 -0
- package/lib/engine-components/ui/CanvasScaler.js.map +1 -0
- package/lib/engine-components/ui/EventSystem.d.ts +4 -1
- package/lib/engine-components/ui/EventSystem.js +28 -39
- package/lib/engine-components/ui/EventSystem.js.map +1 -1
- package/lib/engine-components/ui/Graphic.js +2 -1
- package/lib/engine-components/ui/Graphic.js.map +1 -1
- package/lib/engine-components/ui/Keyboard.js +2 -1
- package/lib/engine-components/ui/Keyboard.js.map +1 -1
- package/lib/engine-components/ui/RaycastUtils.d.ts +11 -0
- package/lib/engine-components/ui/RaycastUtils.js +62 -0
- package/lib/engine-components/ui/RaycastUtils.js.map +1 -0
- package/lib/engine-components/ui/Raycaster.js.map +1 -1
- package/lib/engine-components/ui/Text.js +8 -3
- package/lib/engine-components/ui/Text.js.map +1 -1
- package/lib/engine-components/ui/Utils.js +3 -2
- package/lib/engine-components/ui/Utils.js.map +1 -1
- package/lib/needle-engine.d.ts +3 -1
- package/lib/needle-engine.js +4 -2
- package/lib/needle-engine.js.map +1 -1
- package/package.json +13 -2
- package/src/engine/api.ts +3 -0
- package/src/engine/codegen/register_types.js +4 -6
- package/src/engine/engine_addressables.ts +12 -10
- package/src/engine/{engine_components.js → engine_components.ts} +37 -47
- package/src/engine/engine_create_objects.ts +27 -0
- package/src/engine/engine_element.ts +2 -2
- package/src/engine/engine_gameobject.ts +506 -0
- package/src/engine/engine_gltf.ts +21 -2
- package/src/engine/engine_gltf_builtin_components.ts +8 -7
- package/src/engine/engine_instancing.ts +25 -0
- package/src/engine/engine_lightdata.ts +1 -1
- package/src/engine/engine_mainloop_utils.ts +13 -11
- package/src/engine/engine_networking.ts +3 -14
- package/src/engine/engine_networking_files.ts +14 -11
- package/src/engine/engine_networking_files_default_components.ts +53 -52
- package/src/engine/engine_networking_instantiate.ts +24 -14
- package/src/engine/engine_networking_types.ts +19 -0
- package/src/engine/engine_physics.ts +21 -75
- package/src/engine/engine_rendererdata.ts +1 -1
- package/src/engine/engine_scenetools.ts +30 -6
- package/src/engine/engine_serialization_core.ts +1 -1
- package/src/engine/engine_serialization_decorator.ts +1 -1
- package/src/engine/engine_setup.ts +51 -37
- package/src/engine/engine_three_utils.ts +0 -8
- package/src/engine/engine_types.ts +180 -0
- package/src/engine/engine_utils.ts +1 -3
- package/src/engine/extensions/NEEDLE_components.ts +2 -2
- package/src/engine/extensions/NEEDLE_deferred_texture.ts +1 -1
- package/src/engine/extensions/NEEDLE_lighting_settings.ts +1 -1
- package/src/engine/extensions/NEEDLE_lightmaps.ts +1 -1
- package/src/engine/extensions/NEEDLE_render_objects.ts +4 -4
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +5 -4
- package/src/engine/extensions/extensions.ts +1 -1
- package/src/engine-components/Animation.ts +1 -1
- package/src/engine-components/Animator.ts +3 -3
- package/src/engine-components/AvatarLoader.ts +6 -5
- package/src/engine-components/Camera.ts +10 -13
- package/src/engine-components/CameraUtils.ts +15 -0
- package/src/engine-components/Collider.ts +5 -0
- package/src/engine-components/Component.ts +83 -535
- package/src/engine-components/DragControls.ts +1 -1
- package/src/engine-components/Duplicatable.ts +4 -3
- package/src/engine-components/LODGroup.ts +1 -1
- package/src/engine-components/Light.ts +3 -2
- package/src/engine-components/NestedGltf.ts +2 -1
- package/src/engine-components/OrbitControls.ts +5 -5
- package/src/engine-components/Renderer.ts +7 -21
- package/src/engine-components/RigidBody.ts +2 -1
- package/src/engine-components/ScreenCapture.ts +11 -77
- package/src/engine-components/SpectatorCamera.ts +7 -5
- package/src/engine-components/SyncedCamera.ts +3 -2
- package/src/engine-components/SyncedTransform.ts +2 -2
- package/src/engine-components/TestRunner.ts +1 -2
- package/src/engine-components/VideoPlayer.ts +401 -48
- package/src/engine-components/Voip.ts +2 -1
- package/src/engine-components/WebARSessionRoot.ts +1 -1
- package/src/engine-components/WebXR.ts +2 -2
- package/src/engine-components/WebXRAvatar.ts +1 -1
- package/src/engine-components/WebXRController.ts +40 -10
- package/src/engine-components/WebXRGrabRendering.ts +1 -1
- package/src/engine-components/WebXRSync.ts +1 -1
- package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +2 -1
- package/src/engine-components/codegen/components.ts +1 -2
- package/src/engine-components/js-extensions/ExtensionUtils.ts +66 -0
- package/src/engine-components/js-extensions/Object3D.ts +22 -48
- package/src/engine-components/js-extensions/Vector.ts +17 -0
- package/src/engine-components/timeline/PlayableDirector.ts +2 -1
- package/src/engine-components/ui/BaseUIComponent.ts +17 -6
- package/src/engine-components/ui/Canvas.ts +14 -2
- package/src/engine-components/ui/CanvasScaler.ts +21 -0
- package/src/engine-components/ui/EventSystem.ts +30 -35
- package/src/engine-components/ui/Graphic.ts +2 -1
- package/src/engine-components/ui/Keyboard.ts +2 -1
- package/src/engine-components/ui/RaycastUtils.ts +64 -0
- package/src/engine-components/ui/Raycaster.ts +2 -0
- package/src/engine-components/ui/Text.ts +8 -4
- package/src/engine-components/ui/Utils.ts +3 -2
- package/src/needle-engine.ts +7 -2
|
@@ -1,55 +1,59 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Context } from
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
1
|
+
import { Object3D } from "three";
|
|
2
|
+
import { Constructor, ConstructorConcrete, IComponent as Component, IComponent, IGameObject } from "./engine_types";
|
|
3
|
+
import { Context, registerComponent } from "./engine_setup";
|
|
4
|
+
import { getParam } from "./engine_utils";
|
|
5
|
+
import { removeScriptFromContext, updateActiveInHierarchyWithoutEventCall } from "./engine_mainloop_utils";
|
|
6
|
+
import { activeInHierarchyFieldName } from "./engine_constants";
|
|
6
7
|
|
|
7
8
|
const debug = getParam("debuggetcomponent");
|
|
8
9
|
|
|
10
|
+
|
|
9
11
|
function tryGetObject(obj) {
|
|
10
|
-
if(obj === null || obj === undefined) return obj;
|
|
11
|
-
if(obj.isObject3D) return obj;
|
|
12
|
+
if (obj === null || obj === undefined) return obj;
|
|
13
|
+
if (obj.isObject3D) return obj;
|
|
12
14
|
// handle threejs intersection object
|
|
13
15
|
if (obj.object && obj.object.isObject3D) return obj.object;
|
|
14
16
|
return obj;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
export function registerComponent(script, context) {
|
|
18
|
-
if (!script) return;
|
|
19
|
-
const new_scripts = context?.new_scripts ?? Context.Current.new_scripts;
|
|
20
|
-
if (!new_scripts.includes(script)) {
|
|
21
|
-
new_scripts.push(script);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
19
|
|
|
25
|
-
export
|
|
20
|
+
export function removeComponent(go: Object3D, componentInstance: IComponent) {
|
|
26
21
|
if (!go) return;
|
|
27
22
|
if (!go.userData.components) return;
|
|
28
23
|
const index = go.userData.components.indexOf(componentInstance);
|
|
29
24
|
if (index < 0) return;
|
|
25
|
+
//@ts-ignore
|
|
30
26
|
componentInstance.gameObject = null;
|
|
31
27
|
go.userData.components.splice(index, 1);
|
|
32
28
|
}
|
|
33
29
|
|
|
34
|
-
|
|
30
|
+
export function getOrAddComponent<T extends IComponent>(go: Object3D, typeName: ConstructorConcrete<T>): T {
|
|
31
|
+
const comp = getComponent(typeName, go);
|
|
32
|
+
if (comp) return comp;
|
|
33
|
+
const newInstance = new typeName();
|
|
34
|
+
return addNewComponentInstance(go, newInstance) as unknown as T;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function addNewComponentInstance<T extends IComponent>(obj: Object3D, componentInstance: T, callAwake = true): IComponent {
|
|
35
38
|
if (!obj.userData) obj.userData = {};
|
|
36
39
|
if (!obj.userData.components) obj.userData.components = [];
|
|
37
40
|
obj.userData.components.push(componentInstance);
|
|
38
|
-
componentInstance.gameObject = obj;
|
|
41
|
+
componentInstance.gameObject = obj as IGameObject;
|
|
39
42
|
// componentInstance.transform = obj;
|
|
40
43
|
registerComponent(componentInstance);
|
|
41
44
|
try {
|
|
42
45
|
if (componentInstance.__internalAwake && callAwake) {
|
|
43
|
-
|
|
46
|
+
updateActiveInHierarchyWithoutEventCall(obj);
|
|
44
47
|
componentInstance.__internalAwake();
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
50
|
catch (err) {
|
|
48
51
|
console.error(err);
|
|
49
52
|
}
|
|
53
|
+
return componentInstance;
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
|
|
56
|
+
export function moveComponentInstance(componentInstance: IComponent, obj: Object3D) {
|
|
53
57
|
if (componentInstance.gameObject === obj) return;
|
|
54
58
|
// TODO: update raycast array
|
|
55
59
|
if (componentInstance.gameObject && componentInstance.gameObject.userData.components) {
|
|
@@ -59,12 +63,12 @@ const moveComponentInstance = function (componentInstance, obj) {
|
|
|
59
63
|
if (!obj.userData.components) obj.userData.components = [];
|
|
60
64
|
else if (obj.userData.components.includes(componentInstance)) return;
|
|
61
65
|
obj.userData.components.push(componentInstance);
|
|
62
|
-
componentInstance.gameObject = obj;
|
|
66
|
+
componentInstance.gameObject = obj as IGameObject;
|
|
63
67
|
// componentInstance.transform = obj;
|
|
64
68
|
}
|
|
65
69
|
|
|
66
70
|
|
|
67
|
-
|
|
71
|
+
export function destroyComponentInstance(componentInstance: IComponent) {
|
|
68
72
|
// console.log("destroy", componentInstance, componentInstance.onDestroy);
|
|
69
73
|
// TODO: update raycast array
|
|
70
74
|
if (componentInstance.gameObject && componentInstance.gameObject.userData.components) {
|
|
@@ -75,12 +79,13 @@ const destroyComponentInstance = function (componentInstance) {
|
|
|
75
79
|
if (componentInstance.__internalDisable) componentInstance.__internalDisable();
|
|
76
80
|
if (componentInstance.onDestroy) componentInstance.onDestroy();
|
|
77
81
|
removeScriptFromContext(componentInstance, componentInstance.context ?? Context.Current);
|
|
78
|
-
componentInstance.
|
|
82
|
+
componentInstance.__internalDestroy();
|
|
83
|
+
//@ts-ignore
|
|
79
84
|
componentInstance.gameObject = null;
|
|
80
85
|
// console.log("destroyed", index, componentInstance);
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
|
|
88
|
+
export function onGetComponent<T>(componentType: Constructor<T>, obj: Object3D, arr?: IComponent[]) {
|
|
84
89
|
if (!(obj?.userData?.components)) return null;
|
|
85
90
|
if (debug)
|
|
86
91
|
console.log("FIND", componentType);
|
|
@@ -111,16 +116,16 @@ const onGetComponent = function (componentType, obj, arr) {
|
|
|
111
116
|
return arr;
|
|
112
117
|
}
|
|
113
118
|
|
|
114
|
-
|
|
115
|
-
return onGetComponent(componentType, obj
|
|
119
|
+
export function getComponent<T>(componentType: Constructor<T>, obj) {
|
|
120
|
+
return onGetComponent(componentType, obj);
|
|
116
121
|
}
|
|
117
122
|
|
|
118
|
-
|
|
123
|
+
export function getComponents(componentType, obj, arr) {
|
|
119
124
|
if (!arr) arr = [];
|
|
120
125
|
return onGetComponent(componentType, obj, arr);
|
|
121
126
|
}
|
|
122
127
|
|
|
123
|
-
|
|
128
|
+
export function getComponentInChildren(componentType, obj, includeInactive?: boolean) {
|
|
124
129
|
const res = getComponent(componentType, obj);
|
|
125
130
|
if (includeInactive === false && res.enabled === false) return null;
|
|
126
131
|
if (res) return res;
|
|
@@ -131,7 +136,7 @@ const getComponentInChildren = function (componentType, obj, includeInactive) {
|
|
|
131
136
|
return null;
|
|
132
137
|
}
|
|
133
138
|
|
|
134
|
-
|
|
139
|
+
export function getComponentsInChildren<T extends IComponent>(componentType : Constructor<T>, obj : Object3D, arr?: T[]) {
|
|
135
140
|
if (!arr) arr = [];
|
|
136
141
|
getComponents(componentType, obj, arr);
|
|
137
142
|
for (let i = 0; i < obj?.children?.length; i++) {
|
|
@@ -140,7 +145,7 @@ const getComponentsInChildren = function (componentType, obj, arr) {
|
|
|
140
145
|
return arr;
|
|
141
146
|
}
|
|
142
147
|
|
|
143
|
-
|
|
148
|
+
export function getComponentInParent(componentType, obj) {
|
|
144
149
|
if (!obj) return null;
|
|
145
150
|
if (Array.isArray(obj)) {
|
|
146
151
|
for (let i = 0; i < obj.length; i++) {
|
|
@@ -156,14 +161,14 @@ const getComponentInParent = function (componentType, obj) {
|
|
|
156
161
|
return getComponentInParent(componentType, obj.parent);
|
|
157
162
|
}
|
|
158
163
|
|
|
159
|
-
|
|
164
|
+
export function getComponentsInParent(componentType, obj, arr) {
|
|
160
165
|
if (!arr) arr = [];
|
|
161
166
|
if (!obj) return arr;
|
|
162
167
|
getComponents(componentType, obj, arr);
|
|
163
168
|
return getComponentsInParent(componentType, obj.parent, arr);
|
|
164
169
|
}
|
|
165
170
|
|
|
166
|
-
|
|
171
|
+
export function findObjectOfType(type, contextOrScene, includeInactive) {
|
|
167
172
|
if (!type) return null;
|
|
168
173
|
if (!contextOrScene) {
|
|
169
174
|
contextOrScene = Context.Current;
|
|
@@ -183,7 +188,7 @@ const findObjectOfType = function (type, contextOrScene, includeInactive) {
|
|
|
183
188
|
return null;
|
|
184
189
|
}
|
|
185
190
|
|
|
186
|
-
|
|
191
|
+
export function findObjectsOfType(type, array, contextOrScene) {
|
|
187
192
|
if (!type) return array;
|
|
188
193
|
if (!contextOrScene) {
|
|
189
194
|
contextOrScene = Context.Current;
|
|
@@ -200,19 +205,4 @@ const findObjectsOfType = function (type, array, contextOrScene) {
|
|
|
200
205
|
getComponentsInChildren(type, child, array);
|
|
201
206
|
}
|
|
202
207
|
return array;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
export {
|
|
207
|
-
addNewComponentInstance,
|
|
208
|
-
moveComponentInstance,
|
|
209
|
-
destroyComponentInstance,
|
|
210
|
-
getComponent,
|
|
211
|
-
getComponents,
|
|
212
|
-
getComponentInChildren,
|
|
213
|
-
getComponentsInChildren,
|
|
214
|
-
getComponentInParent,
|
|
215
|
-
getComponentsInParent,
|
|
216
|
-
findObjectOfType,
|
|
217
|
-
findObjectsOfType,
|
|
218
208
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PlaneGeometry, MeshBasicMaterial, DoubleSide, Mesh, Material } from "three"
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export enum PrimitiveType {
|
|
5
|
+
Quad = 0
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type ObjectOptions = {
|
|
9
|
+
name?: string,
|
|
10
|
+
material?: Material,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class ObjectUtils {
|
|
14
|
+
|
|
15
|
+
static createPrimitive(type: PrimitiveType, opts?: ObjectOptions): Mesh {
|
|
16
|
+
let obj: Mesh;
|
|
17
|
+
switch (type) {
|
|
18
|
+
case PrimitiveType.Quad:
|
|
19
|
+
const geometry = new PlaneGeometry(1, 1, 1, 1);
|
|
20
|
+
const material = opts?.material ?? new MeshBasicMaterial({ color: 0xffffff });
|
|
21
|
+
obj = new Mesh(geometry, material);
|
|
22
|
+
}
|
|
23
|
+
if (opts?.name)
|
|
24
|
+
obj.name = opts.name;
|
|
25
|
+
return obj;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Context, build_scene_functions, LoadingOptions, LoadingProgressArgs } from "./engine_setup";
|
|
2
2
|
import { AROverlayHandler, arContainerClassName } from "./engine_element_overlay";
|
|
3
3
|
import { GameObject } from "../engine-components/Component";
|
|
4
|
-
import { loadSync } from "./engine_scenetools";
|
|
5
4
|
import { processNewScripts } from "./engine_mainloop_utils";
|
|
6
5
|
import { calculateProgress01, EngineLoadingView, ILoadingViewHandler } from "./engine_element_loading";
|
|
7
6
|
import { delay, getParam } from "./engine_utils";
|
|
8
7
|
import { setDracoDecoderPath, setDracoDecoderType, setKtx2TranscoderPath } from "./engine_loaders";
|
|
8
|
+
import { getLoader } from "../engine/engine_gltf";
|
|
9
9
|
|
|
10
10
|
const debug = getParam("debugwebcomponent");
|
|
11
11
|
|
|
@@ -42,7 +42,7 @@ class EngineElementSourceFileWatcher {
|
|
|
42
42
|
|
|
43
43
|
this.previousSource = newSource;
|
|
44
44
|
Context.Current = this.context;
|
|
45
|
-
const res = await loadSync(this.context, newSource, this.getHashFromString(newSource));
|
|
45
|
+
const res = await getLoader().loadSync(this.context, newSource, this.getHashFromString(newSource), false);
|
|
46
46
|
if (!isStartup)
|
|
47
47
|
processNewScripts(this.context);
|
|
48
48
|
const obj = res?.scene;
|