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