@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,13 +1,12 @@
|
|
|
1
1
|
import * as THREE from "three";
|
|
2
|
-
import * as object from "../engine/engine_components";
|
|
3
2
|
import { Mathf } from "../engine/engine_math";
|
|
4
3
|
import * as threeutils from "../engine/engine_three_utils";
|
|
5
|
-
import * as utils from "../engine/engine_utils";
|
|
6
4
|
import { activeInHierarchyFieldName } from "../engine/engine_constants";
|
|
7
5
|
import { Context, FrameEvent } from "../engine/engine_setup";
|
|
8
6
|
import * as main from "../engine/engine_mainloop_utils";
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
7
|
+
import { syncDestroy, syncInstantiate } from "../engine/engine_networking_instantiate";
|
|
8
|
+
import { addNewComponentInstance, destroyComponentInstance, findObjectOfType, findObjectsOfType, getComponent, getComponentInChildren, getComponentInParent, getComponents, getComponentsInChildren, getComponentsInParent, getOrAddComponent, moveComponentInstance, removeComponent } from "../engine/engine_components";
|
|
9
|
+
import { findByGuid, destroy, instantiate, foreachComponent, markAsInstancedRendered, isActiveInHierarchy, isActiveSelf, isUsingInstancing } from "../engine/engine_gameobject";
|
|
11
10
|
// export interface ISerializationCallbackReceiver {
|
|
12
11
|
// onBeforeSerialize?(): object | void;
|
|
13
12
|
// onAfterSerialize?();
|
|
@@ -15,31 +14,6 @@ import * as Object3DExtensions from "./js-extensions/Object3D";
|
|
|
15
14
|
// onAfterDeserialize?();
|
|
16
15
|
// onDeserialize?(key: string, value: any): any | void;
|
|
17
16
|
// }
|
|
18
|
-
const debug = utils.getParam("debugcomponents");
|
|
19
|
-
export var HideFlags;
|
|
20
|
-
(function (HideFlags) {
|
|
21
|
-
HideFlags[HideFlags["None"] = 0] = "None";
|
|
22
|
-
HideFlags[HideFlags["HideInHierarchy"] = 1] = "HideInHierarchy";
|
|
23
|
-
HideFlags[HideFlags["HideInInspector"] = 2] = "HideInInspector";
|
|
24
|
-
HideFlags[HideFlags["DontSaveInEditor"] = 4] = "DontSaveInEditor";
|
|
25
|
-
HideFlags[HideFlags["NotEditable"] = 8] = "NotEditable";
|
|
26
|
-
HideFlags[HideFlags["DontSaveInBuild"] = 16] = "DontSaveInBuild";
|
|
27
|
-
HideFlags[HideFlags["DontUnloadUnusedAsset"] = 32] = "DontUnloadUnusedAsset";
|
|
28
|
-
HideFlags[HideFlags["DontSave"] = 52] = "DontSave";
|
|
29
|
-
HideFlags[HideFlags["HideAndDontSave"] = 61] = "HideAndDontSave";
|
|
30
|
-
})(HideFlags || (HideFlags = {}));
|
|
31
|
-
export class InstantiateOptions {
|
|
32
|
-
idProvider;
|
|
33
|
-
//** parent guid */
|
|
34
|
-
parent;
|
|
35
|
-
/** for duplicatable parenting */
|
|
36
|
-
keepWorldPosition;
|
|
37
|
-
position;
|
|
38
|
-
rotation;
|
|
39
|
-
scale;
|
|
40
|
-
visible;
|
|
41
|
-
context;
|
|
42
|
-
}
|
|
43
17
|
class GameObject extends THREE.Object3D {
|
|
44
18
|
guid;
|
|
45
19
|
static setActive(go, active, processStart = true) {
|
|
@@ -51,38 +25,17 @@ class GameObject extends THREE.Object3D {
|
|
|
51
25
|
main.processStart(Context.Current, go);
|
|
52
26
|
}
|
|
53
27
|
static isActiveSelf(go) {
|
|
54
|
-
return
|
|
28
|
+
return isActiveSelf(go);
|
|
55
29
|
}
|
|
56
30
|
static isActiveInHierarchy(go) {
|
|
57
|
-
return
|
|
31
|
+
return isActiveInHierarchy(go);
|
|
58
32
|
}
|
|
59
33
|
static markAsInstancedRendered(go, instanced) {
|
|
60
|
-
go
|
|
34
|
+
markAsInstancedRendered(go, instanced);
|
|
61
35
|
}
|
|
62
|
-
static isUsingInstancing(instance) { return instance
|
|
36
|
+
static isUsingInstancing(instance) { return isUsingInstancing(instance); }
|
|
63
37
|
static foreachComponent(instance, cb, recursive = true) {
|
|
64
|
-
|
|
65
|
-
return;
|
|
66
|
-
if (instance.userData.components) {
|
|
67
|
-
for (let i = 0; i < instance.userData.components.length; i++) {
|
|
68
|
-
const comp = instance.userData.components[i];
|
|
69
|
-
if (comp instanceof Behaviour) {
|
|
70
|
-
const res = cb(comp);
|
|
71
|
-
if (res !== undefined)
|
|
72
|
-
return res;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (recursive && instance.children) {
|
|
77
|
-
for (let i = 0; i < instance.children.length; i++) {
|
|
78
|
-
const child = instance.children[i];
|
|
79
|
-
if (!child)
|
|
80
|
-
continue;
|
|
81
|
-
const res = GameObject.foreachComponent(child, cb, recursive);
|
|
82
|
-
if (res !== undefined)
|
|
83
|
-
return res;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
38
|
+
return foreachComponent(instance, cb, recursive);
|
|
86
39
|
}
|
|
87
40
|
static instantiateSynced(instance, opts) {
|
|
88
41
|
if (!instance)
|
|
@@ -90,336 +43,7 @@ class GameObject extends THREE.Object3D {
|
|
|
90
43
|
return syncInstantiate(instance, opts);
|
|
91
44
|
}
|
|
92
45
|
static instantiate(instance, opts = null) {
|
|
93
|
-
|
|
94
|
-
return null;
|
|
95
|
-
let options = null;
|
|
96
|
-
if (opts !== null) {
|
|
97
|
-
// if x is defined assume this is a vec3 - this is just to not break everything at once and stay a little bit backwards compatible
|
|
98
|
-
if (opts["x"] !== undefined) {
|
|
99
|
-
options = new InstantiateOptions();
|
|
100
|
-
options.position = opts;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
// if (opts instanceof InstantiateOptions)
|
|
104
|
-
options = opts;
|
|
105
|
-
// else {
|
|
106
|
-
// options = new InstantiateOptions();
|
|
107
|
-
// Object.assign(options, opts);
|
|
108
|
-
// }
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
let context = Context.Current;
|
|
112
|
-
if (options?.context)
|
|
113
|
-
context = options.context;
|
|
114
|
-
if (debug && context.alias)
|
|
115
|
-
console.log("context", context.alias);
|
|
116
|
-
// we need to create the id provider before calling internal instantiate because cloned gameobjects also create new guids
|
|
117
|
-
if (options && !options.idProvider) {
|
|
118
|
-
options.idProvider = new InstantiateIdProvider(Date.now());
|
|
119
|
-
}
|
|
120
|
-
const components = [];
|
|
121
|
-
const goMapping = {}; // used to resolve references on components to components on other gameobjects to their new counterpart
|
|
122
|
-
const skinnedMeshes = {};
|
|
123
|
-
const clone = this.internalInstantiate(context, instance, options, components, goMapping, skinnedMeshes);
|
|
124
|
-
if (clone) {
|
|
125
|
-
this.resolveReferences(goMapping);
|
|
126
|
-
this.resolveAndBindSkinnedMeshBones(skinnedMeshes, goMapping);
|
|
127
|
-
}
|
|
128
|
-
if (debug) {
|
|
129
|
-
threeutils.logHierarchy(instance, true);
|
|
130
|
-
threeutils.logHierarchy(clone, true);
|
|
131
|
-
}
|
|
132
|
-
const guidsMap = {};
|
|
133
|
-
for (const i in components) {
|
|
134
|
-
const copy = components[i];
|
|
135
|
-
const oldGuid = copy.guid;
|
|
136
|
-
if (options && options.idProvider) {
|
|
137
|
-
copy.guid = options.idProvider.generateUUID();
|
|
138
|
-
guidsMap[oldGuid] = copy.guid;
|
|
139
|
-
if (debug)
|
|
140
|
-
console.log(copy.name, copy.guid);
|
|
141
|
-
}
|
|
142
|
-
object.registerComponent(copy, context);
|
|
143
|
-
if (copy.__internalNewInstanceCreated)
|
|
144
|
-
copy.__internalNewInstanceCreated();
|
|
145
|
-
}
|
|
146
|
-
for (const i in components) {
|
|
147
|
-
const copy = components[i];
|
|
148
|
-
if (copy.resolveGuids)
|
|
149
|
-
copy.resolveGuids(guidsMap);
|
|
150
|
-
if (copy.enabled === false)
|
|
151
|
-
continue;
|
|
152
|
-
else
|
|
153
|
-
copy.enabled = true;
|
|
154
|
-
}
|
|
155
|
-
main.processNewScripts(context);
|
|
156
|
-
return clone;
|
|
157
|
-
}
|
|
158
|
-
static internalInstantiate(context, instance, opts, componentsList, newGameObjectsMap, skinnedMeshesMap) {
|
|
159
|
-
if (!instance)
|
|
160
|
-
return null;
|
|
161
|
-
// prepare, remove things that dont work out of the box
|
|
162
|
-
// e.g. user data we want to manually clone
|
|
163
|
-
// also children throw errors (e.g. recursive toJson with nested meshes)
|
|
164
|
-
const userData = instance.userData;
|
|
165
|
-
instance.userData = {};
|
|
166
|
-
const children = instance.children;
|
|
167
|
-
instance.children = [];
|
|
168
|
-
let clone;
|
|
169
|
-
clone = instance.clone(false);
|
|
170
|
-
Object3DExtensions.apply(clone);
|
|
171
|
-
instance.userData = userData;
|
|
172
|
-
instance.children = children;
|
|
173
|
-
// make reference from old id to new object
|
|
174
|
-
newGameObjectsMap[instance.uuid] = { original: instance, clone: clone };
|
|
175
|
-
if (instance.type === "SkinnedMesh") {
|
|
176
|
-
skinnedMeshesMap[instance.uuid] = { original: instance, clone: clone };
|
|
177
|
-
}
|
|
178
|
-
// DO NOT EVER RENAME BECAUSE IT BREAKS / MIGHT BREAK ANIMATIONS
|
|
179
|
-
// clone.name += " (Clone)";
|
|
180
|
-
if (opts?.visible !== undefined)
|
|
181
|
-
clone.visible = opts.visible;
|
|
182
|
-
if (opts?.idProvider) {
|
|
183
|
-
clone.uuid = opts.idProvider.generateUUID();
|
|
184
|
-
const cloneGo = clone;
|
|
185
|
-
if (cloneGo)
|
|
186
|
-
cloneGo.guid = clone.uuid;
|
|
187
|
-
}
|
|
188
|
-
if (instance.animations && instance.animations.length > 0) {
|
|
189
|
-
clone.animations = [...instance.animations];
|
|
190
|
-
}
|
|
191
|
-
const parent = instance.parent;
|
|
192
|
-
if (parent) {
|
|
193
|
-
parent.add(clone);
|
|
194
|
-
}
|
|
195
|
-
// apply transform
|
|
196
|
-
if (opts?.position) {
|
|
197
|
-
threeutils.setWorldPosition(clone, opts.position);
|
|
198
|
-
}
|
|
199
|
-
else
|
|
200
|
-
clone.position.copy(instance.position);
|
|
201
|
-
if (opts?.rotation) {
|
|
202
|
-
threeutils.setWorldQuaternion(clone, opts.rotation);
|
|
203
|
-
// clone.quaternion.copy(opts.rotation);
|
|
204
|
-
}
|
|
205
|
-
else
|
|
206
|
-
clone.quaternion.copy(instance.quaternion);
|
|
207
|
-
if (opts?.scale) {
|
|
208
|
-
// TODO: make set world scale work
|
|
209
|
-
clone.scale.copy(opts.scale);
|
|
210
|
-
}
|
|
211
|
-
else
|
|
212
|
-
clone.scale.copy(instance.scale);
|
|
213
|
-
if (opts?.parent && opts.parent !== "scene") {
|
|
214
|
-
let requestedParent = null;
|
|
215
|
-
if (typeof opts.parent === "string") {
|
|
216
|
-
requestedParent = utils.tryFindObject(opts.parent, context.scene, true);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
requestedParent = opts.parent;
|
|
220
|
-
}
|
|
221
|
-
if (requestedParent) {
|
|
222
|
-
const func = opts.keepWorldPosition === true ? requestedParent.attach : requestedParent.add;
|
|
223
|
-
if (!func)
|
|
224
|
-
console.error("Invalid parent object", requestedParent, "received when instantiating:", instance);
|
|
225
|
-
else
|
|
226
|
-
func.call(requestedParent, clone);
|
|
227
|
-
}
|
|
228
|
-
else
|
|
229
|
-
console.warn("could not find parent:", opts.parent);
|
|
230
|
-
}
|
|
231
|
-
for (const [key, value] of Object.entries(instance.userData)) {
|
|
232
|
-
if (key === "components")
|
|
233
|
-
continue;
|
|
234
|
-
clone.userData[key] = value;
|
|
235
|
-
}
|
|
236
|
-
if (instance.userData?.components) {
|
|
237
|
-
const components = instance.userData.components;
|
|
238
|
-
const newComponents = [];
|
|
239
|
-
clone.userData.components = newComponents;
|
|
240
|
-
for (let i = 0; i < components.length; i++) {
|
|
241
|
-
const comp = components[i];
|
|
242
|
-
const copy = Object.create(comp);
|
|
243
|
-
Object.assign(copy, comp);
|
|
244
|
-
newComponents.push(copy);
|
|
245
|
-
copy.gameObject = clone;
|
|
246
|
-
// copy.transform = clone;
|
|
247
|
-
componentsList.push(copy);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
// children should just clone the original transform
|
|
251
|
-
if (opts) {
|
|
252
|
-
opts.position = undefined;
|
|
253
|
-
opts.rotation = undefined;
|
|
254
|
-
opts.scale = undefined;
|
|
255
|
-
opts.parent = undefined;
|
|
256
|
-
}
|
|
257
|
-
for (const ch in instance.children) {
|
|
258
|
-
const child = instance.children[ch];
|
|
259
|
-
const newChild = GameObject.internalInstantiate(context, child, opts, componentsList, newGameObjectsMap, skinnedMeshesMap);
|
|
260
|
-
if (newChild)
|
|
261
|
-
clone.add(newChild);
|
|
262
|
-
}
|
|
263
|
-
return clone;
|
|
264
|
-
}
|
|
265
|
-
static resolveAndBindSkinnedMeshBones(skinnedMeshes, newObjectsMap) {
|
|
266
|
-
for (const key in skinnedMeshes) {
|
|
267
|
-
const val = skinnedMeshes[key];
|
|
268
|
-
const original = val.original;
|
|
269
|
-
const originalSkeleton = original.skeleton;
|
|
270
|
-
const clone = val.clone;
|
|
271
|
-
// clone.updateWorldMatrix(true, true);
|
|
272
|
-
if (!originalSkeleton) {
|
|
273
|
-
console.warn("Skinned mesh has no skeleton?", val);
|
|
274
|
-
continue;
|
|
275
|
-
}
|
|
276
|
-
const originalBones = originalSkeleton.bones;
|
|
277
|
-
const clonedSkeleton = clone.skeleton.clone();
|
|
278
|
-
clone.skeleton = clonedSkeleton;
|
|
279
|
-
clone.bindMatrix.clone().copy(original.bindMatrix);
|
|
280
|
-
// console.log(clone.bindMatrix)
|
|
281
|
-
clone.bindMatrixInverse.copy(original.bindMatrixInverse);
|
|
282
|
-
// clone.bindMatrix.multiplyScalar(.025);
|
|
283
|
-
// console.assert(originalSkeleton.uuid !== clonedSkeleton.uuid);
|
|
284
|
-
// console.assert(originalBones.length === clonedSkeleton.bones.length);
|
|
285
|
-
const bones = [];
|
|
286
|
-
clonedSkeleton.bones = bones;
|
|
287
|
-
for (let i = 0; i < originalBones.length; i++) {
|
|
288
|
-
const bone = originalBones[i];
|
|
289
|
-
const newBoneInfo = newObjectsMap[bone.uuid];
|
|
290
|
-
const clonedBone = newBoneInfo.clone;
|
|
291
|
-
// console.log("NEW BONE: ", clonedBone, "BEFORE", newBoneInfo.original);
|
|
292
|
-
bones.push(clonedBone);
|
|
293
|
-
}
|
|
294
|
-
// clone.skeleton = new THREE.Skeleton(bones);
|
|
295
|
-
// clone.skeleton.update();
|
|
296
|
-
// clone.pose();
|
|
297
|
-
// clone.scale.set(1,1,1);
|
|
298
|
-
// clone.position.y += .1;
|
|
299
|
-
// console.log("ORIG", original, "CLONE", clone);
|
|
300
|
-
}
|
|
301
|
-
for (const key in skinnedMeshes) {
|
|
302
|
-
const clone = skinnedMeshes[key].clone;
|
|
303
|
-
clone.skeleton.update();
|
|
304
|
-
// clone.skeleton.calculateInverses();
|
|
305
|
-
clone.bind(clone.skeleton, clone.bindMatrix);
|
|
306
|
-
clone.updateMatrixWorld(true);
|
|
307
|
-
// clone.pose();
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
// private static bindNewSkinnedMeshBones(source, clone) {
|
|
311
|
-
// const sourceLookup = new Map();
|
|
312
|
-
// const cloneLookup = new Map();
|
|
313
|
-
// // const clone = source.clone(false);
|
|
314
|
-
// function parallelTraverse(a, b, callback) {
|
|
315
|
-
// callback(a, b);
|
|
316
|
-
// for (let i = 0; i < a.children.length; i++) {
|
|
317
|
-
// parallelTraverse(a.children[i], b.children[i], callback);
|
|
318
|
-
// }
|
|
319
|
-
// }
|
|
320
|
-
// parallelTraverse(source, clone, function (sourceNode, clonedNode) {
|
|
321
|
-
// sourceLookup.set(clonedNode, sourceNode);
|
|
322
|
-
// cloneLookup.set(sourceNode, clonedNode);
|
|
323
|
-
// });
|
|
324
|
-
// clone.traverse(function (node) {
|
|
325
|
-
// if (!node.isSkinnedMesh) return;
|
|
326
|
-
// const clonedMesh = node;
|
|
327
|
-
// const sourceMesh = sourceLookup.get(node);
|
|
328
|
-
// const sourceBones = sourceMesh.skeleton.bones;
|
|
329
|
-
// clonedMesh.skeleton = sourceMesh.skeleton.clone();
|
|
330
|
-
// clonedMesh.bindMatrix.copy(sourceMesh.bindMatrix);
|
|
331
|
-
// clonedMesh.skeleton.bones = sourceBones.map(function (bone) {
|
|
332
|
-
// return cloneLookup.get(bone);
|
|
333
|
-
// });
|
|
334
|
-
// clonedMesh.bind(clonedMesh.skeleton, clonedMesh.bindMatrix);
|
|
335
|
-
// });
|
|
336
|
-
// return clone;
|
|
337
|
-
// }
|
|
338
|
-
static resolveReferences(newObjectsMap) {
|
|
339
|
-
// for every object that is newly created we want to update references to their newly created counterparts
|
|
340
|
-
// e.g. a collider instance referencing a rigidbody instance should be updated so that
|
|
341
|
-
// the cloned collider does not reference the cloned rigidbody (instead of the original rigidbody)
|
|
342
|
-
for (const key in newObjectsMap) {
|
|
343
|
-
const val = newObjectsMap[key];
|
|
344
|
-
const clone = val.clone;
|
|
345
|
-
// resolve references
|
|
346
|
-
if (clone.userData?.components) {
|
|
347
|
-
for (let i = 0; i < clone.userData.components.length; i++) {
|
|
348
|
-
const copy = clone.userData.components[i];
|
|
349
|
-
// find referenced within a cloned gameobject
|
|
350
|
-
const entries = Object.entries(copy);
|
|
351
|
-
// console.log(copy, entries);
|
|
352
|
-
for (const [key, value] of entries) {
|
|
353
|
-
if (Array.isArray(value)) {
|
|
354
|
-
const clonedArray = [];
|
|
355
|
-
copy[key] = clonedArray;
|
|
356
|
-
// console.log(copy, key, value, copy[key]);
|
|
357
|
-
for (let i = 0; i < value.length; i++) {
|
|
358
|
-
const entry = value[i];
|
|
359
|
-
// push value types into new array
|
|
360
|
-
if (typeof entry !== "object") {
|
|
361
|
-
clonedArray.push(entry);
|
|
362
|
-
continue;
|
|
363
|
-
}
|
|
364
|
-
const res = this.postProcessNewInstance(copy, key, entry, newObjectsMap);
|
|
365
|
-
if (res !== undefined)
|
|
366
|
-
clonedArray.push(res);
|
|
367
|
-
else
|
|
368
|
-
clonedArray.push(entry);
|
|
369
|
-
}
|
|
370
|
-
// console.log(copy[key])
|
|
371
|
-
}
|
|
372
|
-
else if (typeof value === "object") {
|
|
373
|
-
const res = this.postProcessNewInstance(copy, key, value, newObjectsMap);
|
|
374
|
-
if (res !== undefined) {
|
|
375
|
-
copy[key] = res;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
static postProcessNewInstance(copy, key, value, newObjectsMap) {
|
|
384
|
-
if (value instanceof Component || value instanceof Behaviour) {
|
|
385
|
-
const originalGameObjectReference = value["gameObject"];
|
|
386
|
-
// console.log(key, value, originalGameObjectReference);
|
|
387
|
-
if (originalGameObjectReference) {
|
|
388
|
-
const id = originalGameObjectReference.uuid;
|
|
389
|
-
const newGameObject = newObjectsMap[id]?.clone;
|
|
390
|
-
if (!newGameObject) {
|
|
391
|
-
// reference has not changed!
|
|
392
|
-
if (debug)
|
|
393
|
-
console.log("reference did not change", key, copy, value);
|
|
394
|
-
return;
|
|
395
|
-
}
|
|
396
|
-
const index = originalGameObjectReference.userData.components.indexOf(value);
|
|
397
|
-
if (index >= 0) {
|
|
398
|
-
if (debug)
|
|
399
|
-
console.log(key, id);
|
|
400
|
-
const found = newGameObject.userData.components[index];
|
|
401
|
-
return found;
|
|
402
|
-
}
|
|
403
|
-
else {
|
|
404
|
-
console.warn("could not find component", key, value);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
else if (value instanceof THREE.Object3D) {
|
|
409
|
-
// console.log(value);
|
|
410
|
-
if (key === "gameObject")
|
|
411
|
-
return;
|
|
412
|
-
const originalGameObjectReference = value;
|
|
413
|
-
if (originalGameObjectReference) {
|
|
414
|
-
const id = originalGameObjectReference.uuid;
|
|
415
|
-
const newGameObject = newObjectsMap[id]?.clone;
|
|
416
|
-
if (newGameObject) {
|
|
417
|
-
if (debug)
|
|
418
|
-
console.log(key, "old", value, "new", newGameObject);
|
|
419
|
-
return newGameObject;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
46
|
+
return instantiate(instance, opts);
|
|
423
47
|
}
|
|
424
48
|
static destroySynced(instance, context, recursive = true) {
|
|
425
49
|
if (!instance)
|
|
@@ -429,38 +53,7 @@ class GameObject extends THREE.Object3D {
|
|
|
429
53
|
syncDestroy(go, context.connection, recursive);
|
|
430
54
|
}
|
|
431
55
|
static destroy(instance, recursive = true, isRoot = true) {
|
|
432
|
-
|
|
433
|
-
if (comp.isComponent) {
|
|
434
|
-
comp.destroy();
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
const obj = instance;
|
|
438
|
-
if (debug)
|
|
439
|
-
console.log(obj);
|
|
440
|
-
if (recursive && obj.children) {
|
|
441
|
-
for (const ch of obj.children) {
|
|
442
|
-
GameObject.destroy(ch, recursive, false);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
const components = obj.userData.components;
|
|
446
|
-
if (components) {
|
|
447
|
-
let lastLength = components.length;
|
|
448
|
-
for (let i = 0; i < components.length; i++) {
|
|
449
|
-
const comp = components[i];
|
|
450
|
-
if (comp.destroy) {
|
|
451
|
-
if (debug)
|
|
452
|
-
console.log("destroying", comp);
|
|
453
|
-
comp.destroy();
|
|
454
|
-
}
|
|
455
|
-
// components will be removed from componentlist in destroy
|
|
456
|
-
if (components.length < lastLength) {
|
|
457
|
-
lastLength = components.length;
|
|
458
|
-
i--;
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
if (isRoot)
|
|
463
|
-
obj.removeFromParent();
|
|
56
|
+
return destroy(instance, recursive, isRoot);
|
|
464
57
|
}
|
|
465
58
|
/**
|
|
466
59
|
* Add an object to parent and also ensure all components are being registered
|
|
@@ -518,24 +111,22 @@ class GameObject extends THREE.Object3D {
|
|
|
518
111
|
}
|
|
519
112
|
static addNewComponent(go, type, callAwake = true) {
|
|
520
113
|
const instance = new type();
|
|
521
|
-
|
|
114
|
+
//@ts-ignore
|
|
115
|
+
addNewComponentInstance(go, instance, callAwake);
|
|
522
116
|
return instance;
|
|
523
117
|
}
|
|
524
118
|
static addComponent(go, instance) {
|
|
525
119
|
if (instance.gameObject == null) {
|
|
526
120
|
throw new Error("Did you mean to create a new component? Use addNewComponent");
|
|
527
121
|
}
|
|
528
|
-
|
|
122
|
+
moveComponentInstance(instance, go);
|
|
529
123
|
}
|
|
530
124
|
static removeComponent(instance) {
|
|
531
|
-
|
|
125
|
+
removeComponent(instance.gameObject, instance);
|
|
532
126
|
return instance;
|
|
533
127
|
}
|
|
534
128
|
static getOrAddComponent(go, typeName) {
|
|
535
|
-
|
|
536
|
-
if (comp)
|
|
537
|
-
return comp;
|
|
538
|
-
return this.addNewComponent(go, typeName);
|
|
129
|
+
return getOrAddComponent(go, typeName);
|
|
539
130
|
}
|
|
540
131
|
static getComponent(go, typeName) {
|
|
541
132
|
if (go === null)
|
|
@@ -544,35 +135,36 @@ class GameObject extends THREE.Object3D {
|
|
|
544
135
|
// not ideal, but I dont know a good/sane way to do this otherwise
|
|
545
136
|
// const res = TypeStore.get(typeName);
|
|
546
137
|
// if(res) typeName = res;
|
|
547
|
-
return
|
|
138
|
+
return getComponent(typeName, go);
|
|
548
139
|
}
|
|
549
140
|
static getComponents(go, typeName, arr = null) {
|
|
550
141
|
if (go === null)
|
|
551
142
|
return arr ?? [];
|
|
552
|
-
return
|
|
143
|
+
return getComponents(typeName, go, arr);
|
|
553
144
|
}
|
|
554
145
|
static findByGuid(guid, hierarchy) {
|
|
555
|
-
|
|
146
|
+
const res = findByGuid(guid, hierarchy);
|
|
147
|
+
return res;
|
|
556
148
|
}
|
|
557
149
|
static findObjectOfType(typeName, context, includeInactive = true) {
|
|
558
|
-
return
|
|
150
|
+
return findObjectOfType(typeName, context, includeInactive);
|
|
559
151
|
}
|
|
560
152
|
static findObjectsOfType(typeName, context) {
|
|
561
153
|
const arr = [];
|
|
562
|
-
|
|
154
|
+
findObjectsOfType(typeName, arr, context);
|
|
563
155
|
return arr;
|
|
564
156
|
}
|
|
565
157
|
static getComponentInChildren(go, typeName) {
|
|
566
|
-
return
|
|
158
|
+
return getComponentInChildren(typeName, go);
|
|
567
159
|
}
|
|
568
160
|
static getComponentsInChildren(go, typeName, arr = null) {
|
|
569
|
-
return
|
|
161
|
+
return getComponentsInChildren(typeName, go, arr ?? undefined);
|
|
570
162
|
}
|
|
571
163
|
static getComponentInParent(go, typeName) {
|
|
572
|
-
return
|
|
164
|
+
return getComponentInParent(typeName, go);
|
|
573
165
|
}
|
|
574
166
|
static getComponentsInParent(go, typeName, arr = null) {
|
|
575
|
-
return
|
|
167
|
+
return getComponentsInParent(typeName, go, arr);
|
|
576
168
|
}
|
|
577
169
|
static getAllComponents(go) {
|
|
578
170
|
const componentsList = go.userData?.components;
|
|
@@ -656,6 +248,11 @@ class Component {
|
|
|
656
248
|
return true;
|
|
657
249
|
return res;
|
|
658
250
|
}
|
|
251
|
+
set __isActiveInHierarchy(val) {
|
|
252
|
+
if (!this.gameObject)
|
|
253
|
+
return;
|
|
254
|
+
this.gameObject[activeInHierarchyFieldName] = val;
|
|
255
|
+
}
|
|
659
256
|
gameObject;
|
|
660
257
|
guid = "invalid";
|
|
661
258
|
sourceId;
|
|
@@ -677,10 +274,9 @@ class Component {
|
|
|
677
274
|
return this.__destroyed;
|
|
678
275
|
}
|
|
679
276
|
destroy() {
|
|
680
|
-
if (this.
|
|
277
|
+
if (this.__destroyed)
|
|
681
278
|
return;
|
|
682
|
-
|
|
683
|
-
object.destroyComponentInstance(this);
|
|
279
|
+
this.__internalDestroy();
|
|
684
280
|
}
|
|
685
281
|
__didAwake = false;
|
|
686
282
|
__didStart = false;
|
|
@@ -712,10 +308,11 @@ class Component {
|
|
|
712
308
|
}
|
|
713
309
|
__internalEnable() {
|
|
714
310
|
if (this.__didEnable)
|
|
715
|
-
return;
|
|
311
|
+
return false;
|
|
716
312
|
// console.trace("INTERNAL ENABLE");
|
|
717
313
|
this.__didEnable = true;
|
|
718
314
|
this.onEnable();
|
|
315
|
+
return true;
|
|
719
316
|
}
|
|
720
317
|
__internalDisable() {
|
|
721
318
|
if (!this.__didEnable)
|
|
@@ -725,7 +322,39 @@ class Component {
|
|
|
725
322
|
this.onDisable();
|
|
726
323
|
this._collisions?.clear();
|
|
727
324
|
}
|
|
325
|
+
__internalDestroy() {
|
|
326
|
+
if (this.__destroyed)
|
|
327
|
+
return;
|
|
328
|
+
this.__destroyed = true;
|
|
329
|
+
this.destroy?.call(this);
|
|
330
|
+
// console.log("destroy", this);
|
|
331
|
+
destroyComponentInstance(this);
|
|
332
|
+
}
|
|
333
|
+
// isActiveAndEnabled: boolean = false;
|
|
334
|
+
get enabled() {
|
|
335
|
+
return this.__isEnabled ?? true; // if it has no enabled field it is always enabled
|
|
336
|
+
}
|
|
337
|
+
set enabled(val) {
|
|
338
|
+
// when called from animationclip we receive numbers
|
|
339
|
+
// due to interpolation they can be anything between 0 and 1
|
|
340
|
+
if (typeof val === "number") {
|
|
341
|
+
if (val >= 0.5)
|
|
342
|
+
val = true;
|
|
343
|
+
else
|
|
344
|
+
val = false;
|
|
345
|
+
}
|
|
346
|
+
// need to check here because codegen is calling this before everything is setup
|
|
347
|
+
if (!this.__didAwake)
|
|
348
|
+
return;
|
|
349
|
+
if (val) {
|
|
350
|
+
this.__internalEnable();
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
this.__internalDisable();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
728
356
|
constructor() {
|
|
357
|
+
// super();
|
|
729
358
|
this.__internalNewInstanceCreated();
|
|
730
359
|
}
|
|
731
360
|
_collisionExitRoutine;
|
|
@@ -908,7 +537,7 @@ class Component {
|
|
|
908
537
|
Component._worldQuaternionBuffer.setFromEuler(Component._worldEulerBuffer);
|
|
909
538
|
this.worldQuaternion = Component._worldQuaternionBuffer;
|
|
910
539
|
}
|
|
911
|
-
static _forward = new THREE.Vector3(
|
|
540
|
+
static _forward = new THREE.Vector3();
|
|
912
541
|
get forward() {
|
|
913
542
|
return Component._forward.set(0, 0, -1).applyQuaternion(this.worldQuaternion);
|
|
914
543
|
}
|
|
@@ -936,33 +565,6 @@ class Component {
|
|
|
936
565
|
}
|
|
937
566
|
}
|
|
938
567
|
class Behaviour extends Component {
|
|
939
|
-
// isActiveAndEnabled: boolean = false;
|
|
940
|
-
get enabled() {
|
|
941
|
-
return this.__isEnabled ?? true; // if it has no enabled field it is always enabled
|
|
942
|
-
}
|
|
943
|
-
set enabled(val) {
|
|
944
|
-
// when called from animationclip we receive numbers
|
|
945
|
-
// due to interpolation they can be anything between 0 and 1
|
|
946
|
-
if (typeof val === "number") {
|
|
947
|
-
if (val >= 0.5)
|
|
948
|
-
val = true;
|
|
949
|
-
else
|
|
950
|
-
val = false;
|
|
951
|
-
}
|
|
952
|
-
if (val === this.__isEnabled)
|
|
953
|
-
return;
|
|
954
|
-
this.__isEnabled = val;
|
|
955
|
-
// console.log(val);
|
|
956
|
-
// need to check here because codegen is calling this before everything is setup
|
|
957
|
-
if (!this.__didAwake)
|
|
958
|
-
return;
|
|
959
|
-
if (val) {
|
|
960
|
-
this.__internalEnable();
|
|
961
|
-
}
|
|
962
|
-
else {
|
|
963
|
-
this.__internalDisable();
|
|
964
|
-
}
|
|
965
|
-
}
|
|
966
568
|
}
|
|
967
569
|
export { Behaviour, Component, GameObject };
|
|
968
570
|
//# sourceMappingURL=Component.js.map
|