@needle-tools/engine 2.35.4-pre → 2.36.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 +26 -0
- package/dist/needle-engine.d.ts +213 -144
- package/dist/needle-engine.js +414 -358
- package/dist/needle-engine.js.map +4 -4
- package/dist/needle-engine.min.js +99 -43
- package/dist/needle-engine.min.js.map +4 -4
- package/lib/engine/api.d.ts +3 -0
- package/lib/engine/api.js +3 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/debug/debug.d.ts +3 -0
- package/lib/engine/debug/debug.js +8 -0
- package/lib/engine/debug/debug.js.map +1 -0
- package/lib/engine/debug/debug_overlay.d.ts +7 -0
- package/lib/engine/debug/debug_overlay.js +213 -0
- package/lib/engine/debug/debug_overlay.js.map +1 -0
- package/lib/engine/engine.js +1 -1
- package/lib/engine/engine.js.map +1 -1
- package/lib/engine/engine_element_loading.js +1 -1
- package/lib/engine/engine_element_loading.js.map +1 -1
- package/lib/engine/engine_gameobject.d.ts +1 -0
- package/lib/engine/engine_gameobject.js +13 -1
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_gltf_builtin_components.js +4 -0
- package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
- package/lib/engine/engine_mainloop_utils.d.ts +1 -1
- package/lib/engine/engine_mainloop_utils.js +7 -3
- package/lib/engine/engine_mainloop_utils.js.map +1 -1
- package/lib/engine/engine_physics.d.ts +29 -28
- package/lib/engine/engine_physics.js +85 -86
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_serialization_core.js +43 -0
- package/lib/engine/engine_serialization_core.js.map +1 -1
- package/lib/engine/engine_setup.js +1 -1
- package/lib/engine/engine_setup.js.map +1 -1
- package/lib/engine/engine_time.d.ts +1 -0
- package/lib/engine/engine_time.js +1 -0
- package/lib/engine/engine_time.js.map +1 -1
- package/lib/engine/engine_types.d.ts +6 -1
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine/engine_typestore.d.ts +1 -0
- package/lib/engine/engine_typestore.js +1 -0
- package/lib/engine/engine_typestore.js.map +1 -1
- package/lib/engine/engine_utils.js +1 -1
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_animator_controller_model.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_render_objects.d.ts +2 -2
- package/lib/engine/extensions/NEEDLE_render_objects.js +2 -2
- package/lib/engine/extensions/NEEDLE_render_objects.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +5 -0
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
- package/lib/engine-components/Animation.d.ts +5 -1
- package/lib/engine-components/Animation.js +21 -0
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/AnimatorController.d.ts +1 -0
- package/lib/engine-components/AnimatorController.js +14 -7
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/AudioSource.d.ts +1 -1
- package/lib/engine-components/AudioSource.js +2 -2
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/BoxHelperComponent.d.ts +2 -2
- package/lib/engine-components/BoxHelperComponent.js +27 -9
- package/lib/engine-components/BoxHelperComponent.js.map +1 -1
- package/lib/engine-components/Component.d.ts +2 -1
- package/lib/engine-components/Component.js +11 -5
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/GroundProjection.d.ts +2 -0
- package/lib/engine-components/GroundProjection.js +18 -6
- package/lib/engine-components/GroundProjection.js.map +1 -1
- package/lib/engine-components/ReflectionProbe.d.ts +22 -0
- package/lib/engine-components/ReflectionProbe.js +134 -0
- package/lib/engine-components/ReflectionProbe.js.map +1 -0
- package/lib/engine-components/Renderer.d.ts +16 -4
- package/lib/engine-components/Renderer.js +96 -45
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/WebARSessionRoot.d.ts +7 -7
- package/lib/engine-components/WebARSessionRoot.js +7 -7
- package/lib/engine-components/WebARSessionRoot.js.map +1 -1
- package/lib/engine-components/WebXR.d.ts +9 -8
- package/lib/engine-components/WebXR.js +40 -24
- package/lib/engine-components/WebXR.js.map +1 -1
- package/lib/engine-components/WebXRAvatar.d.ts +4 -5
- package/lib/engine-components/WebXRAvatar.js +9 -8
- package/lib/engine-components/WebXRAvatar.js.map +1 -1
- package/lib/engine-components/WebXRController.d.ts +21 -21
- package/lib/engine-components/WebXRController.js +83 -63
- package/lib/engine-components/WebXRController.js.map +1 -1
- package/lib/engine-components/WebXRGrabRendering.d.ts +3 -3
- package/lib/engine-components/WebXRGrabRendering.js +2 -2
- package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
- package/lib/engine-components/WebXRSync.d.ts +8 -8
- package/lib/engine-components/WebXRSync.js +15 -15
- package/lib/engine-components/WebXRSync.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +1 -0
- package/lib/engine-components/codegen/components.js +1 -0
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/js-extensions/ExtensionUtils.js +1 -1
- package/lib/engine-components/js-extensions/ExtensionUtils.js.map +1 -1
- package/lib/engine-components/ui/EventSystem.d.ts +1 -0
- package/lib/engine-components/ui/EventSystem.js +21 -1
- package/lib/engine-components/ui/EventSystem.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/api.ts +3 -0
- package/src/engine/codegen/register_types.js +293 -0
- package/src/engine/debug/debug.ts +9 -0
- package/src/engine/debug/debug_overlay.ts +224 -0
- package/src/engine/engine.ts +1 -1
- package/src/engine/engine_element_loading.ts +1 -1
- package/src/engine/engine_gameobject.ts +17 -4
- package/src/engine/engine_gltf_builtin_components.ts +5 -1
- package/src/engine/engine_mainloop_utils.ts +7 -3
- package/src/engine/engine_physics.ts +130 -130
- package/src/engine/engine_serialization_core.ts +41 -0
- package/src/engine/engine_setup.ts +1 -1
- package/src/engine/engine_time.ts +2 -0
- package/src/engine/engine_types.ts +7 -1
- package/src/engine/engine_typestore.ts +2 -0
- package/src/engine/engine_utils.ts +3 -2
- package/src/engine/extensions/EXT_texture_exr.js +1 -1
- package/src/engine/extensions/NEEDLE_animator_controller_model.ts +2 -1
- package/src/engine/extensions/NEEDLE_render_objects.ts +4 -4
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +7 -0
- package/src/engine-components/Animation.ts +16 -1
- package/src/engine-components/AnimatorController.ts +19 -9
- package/src/engine-components/AudioSource.ts +3 -3
- package/src/engine-components/BoxHelperComponent.ts +29 -9
- package/src/engine-components/Component.ts +11 -5
- package/src/engine-components/GroundProjection.ts +22 -7
- package/src/engine-components/ReflectionProbe.ts +141 -0
- package/src/engine-components/Renderer.ts +116 -54
- package/src/engine-components/WebARSessionRoot.ts +16 -16
- package/src/engine-components/WebXR.ts +53 -48
- package/src/engine-components/WebXRAvatar.ts +16 -16
- package/src/engine-components/WebXRController.ts +133 -107
- package/src/engine-components/WebXRGrabRendering.ts +6 -6
- package/src/engine-components/WebXRSync.ts +20 -20
- package/src/engine-components/codegen/components.ts +1 -0
- package/src/engine-components/js-extensions/ExtensionUtils.ts +1 -1
- package/src/engine-components/ui/EventSystem.ts +26 -3
- package/lib/engine/debug/error_overlay.d.ts +0 -1
- package/lib/engine/debug/error_overlay.js +0 -114
- package/lib/engine/debug/error_overlay.js.map +0 -1
- package/src/engine/debug/error_overlay.ts +0 -126
package/src/engine/engine.ts
CHANGED
|
@@ -2,8 +2,8 @@ import * as engine_setup from "./engine_setup";
|
|
|
2
2
|
import * as engine_scenetools from "./engine_scenetools";
|
|
3
3
|
import "./tests/test_utils";
|
|
4
4
|
import { RGBAColor } from "../engine-components/js-extensions/RGBAColor";
|
|
5
|
-
import { makeErrorsVisibleForDevelopment } from "./debug/error_overlay";
|
|
6
5
|
|
|
6
|
+
import { makeErrorsVisibleForDevelopment } from "./debug/debug_overlay";
|
|
7
7
|
makeErrorsVisibleForDevelopment();
|
|
8
8
|
|
|
9
9
|
const engine = {
|
|
@@ -45,7 +45,7 @@ export class EngineLoadingView implements ILoadingViewHandler {
|
|
|
45
45
|
if (el.classList.contains("loading")) {
|
|
46
46
|
if (!this._allowCustomLoadingElement) {
|
|
47
47
|
console.warn("Custom loading container is not allowed")
|
|
48
|
-
|
|
48
|
+
this.container.removeChild(el);
|
|
49
49
|
continue;
|
|
50
50
|
}
|
|
51
51
|
this._loadingElement = this.createLoadingElement(el);
|
|
@@ -51,8 +51,19 @@ export class InstantiateOptions {
|
|
|
51
51
|
// main.processStart(Context.Current, go);
|
|
52
52
|
// }
|
|
53
53
|
|
|
54
|
+
const $isActive = Symbol("isActive");
|
|
55
|
+
|
|
54
56
|
export function isActiveSelf(go: Object3D): boolean {
|
|
55
|
-
|
|
57
|
+
const visible = go.visible || isUsingInstancing(go);
|
|
58
|
+
if (go[$isActive] === undefined) {
|
|
59
|
+
go[$isActive] = visible;
|
|
60
|
+
}
|
|
61
|
+
return go[$isActive] && visible;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function setActive(go:Object3D, active:boolean, setVisible = true){
|
|
65
|
+
go[$isActive] = active;
|
|
66
|
+
if(setVisible) go.visible = active;
|
|
56
67
|
}
|
|
57
68
|
|
|
58
69
|
export function isActiveInHierarchy(go: Object3D): boolean {
|
|
@@ -74,6 +85,7 @@ export function findByGuid(guid: string, hierarchy: THREE.Object3D): GameObject
|
|
|
74
85
|
export function destroy(instance: Object3D | Component, recursive: boolean = true, isRoot: boolean = true) {
|
|
75
86
|
const comp = instance as Component;
|
|
76
87
|
if (comp.isComponent) {
|
|
88
|
+
comp.__internalDisable();
|
|
77
89
|
comp.__internalDestroy();
|
|
78
90
|
return;
|
|
79
91
|
}
|
|
@@ -92,6 +104,7 @@ export function destroy(instance: Object3D | Component, recursive: boolean = tru
|
|
|
92
104
|
let lastLength = components.length;
|
|
93
105
|
for (let i = 0; i < components.length; i++) {
|
|
94
106
|
const comp: Component = components[i];
|
|
107
|
+
comp.__internalDisable();
|
|
95
108
|
comp.__internalDestroy();
|
|
96
109
|
// if (comp.destroy) {
|
|
97
110
|
// if (debug) console.log("destroying", comp);
|
|
@@ -111,7 +124,7 @@ export function destroy(instance: Object3D | Component, recursive: boolean = tru
|
|
|
111
124
|
|
|
112
125
|
export function foreachComponent(instance: THREE.Object3D, cb: (comp: Component) => any, recursive: boolean = true): any {
|
|
113
126
|
if (!instance) return;
|
|
114
|
-
if(!instance.isObject3D){
|
|
127
|
+
if (!instance.isObject3D) {
|
|
115
128
|
new Error("Expected Object3D but got " + instance);
|
|
116
129
|
}
|
|
117
130
|
if (instance.userData?.components) {
|
|
@@ -464,8 +477,8 @@ function resolveReferences(newObjectsMap: { [key: string]: NewGameObjectReferenc
|
|
|
464
477
|
|
|
465
478
|
}
|
|
466
479
|
|
|
467
|
-
function postProcessNewInstance(copy: THREE.Object3D, key: string, value
|
|
468
|
-
if(value === null || value === undefined) return;
|
|
480
|
+
function postProcessNewInstance(copy: THREE.Object3D, key: string, value: IComponent | Object3D, newObjectsMap: { [key: string]: NewGameObjectReferenceInfo }) {
|
|
481
|
+
if (value === null || value === undefined) return;
|
|
469
482
|
if ((value as IComponent).isComponent === true) {
|
|
470
483
|
const originalGameObjectReference = value["gameObject"];
|
|
471
484
|
// console.log(key, value, originalGameObjectReference);
|
|
@@ -13,11 +13,13 @@ import { SourceIdentifier } from "./engine_types";
|
|
|
13
13
|
import { UIDProvider } from "./engine_types";
|
|
14
14
|
import { addNewComponentInstance } from "./engine_components";
|
|
15
15
|
import { getParam } from "./engine_utils";
|
|
16
|
+
import { LogType, showBalloonMessage } from "./debug/debug";
|
|
17
|
+
import { isLocalNetwork } from "./engine_networking_utils";
|
|
16
18
|
|
|
17
19
|
|
|
18
20
|
const debug = debugExtension;
|
|
19
21
|
const debugTypeStore = getParam("debugtypestore");
|
|
20
|
-
if(debugTypeStore) console.log(TypeStore);
|
|
22
|
+
if (debugTypeStore) console.log(TypeStore);
|
|
21
23
|
|
|
22
24
|
export function writeBuiltinComponentData(comp: Component, context: SerializationContext): object | null {
|
|
23
25
|
|
|
@@ -172,6 +174,8 @@ async function onCreateBuiltinComponents(context: SerializationContext, obj: THR
|
|
|
172
174
|
const unknown = unknownComponentsBuffer.join(", ");
|
|
173
175
|
console.warn("unknown components: " + unknown);
|
|
174
176
|
unknownComponentsBuffer.length = 0;
|
|
177
|
+
if (isLocalNetwork())
|
|
178
|
+
showBalloonMessage(`<strong>Unknown components in scene</strong>:\n\n${unknown}\n\nThis could mean you forgot to add a npmdef to your ExportInfo\n<a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`, LogType.Warn);
|
|
175
179
|
}
|
|
176
180
|
}
|
|
177
181
|
|
|
@@ -207,14 +207,16 @@ function removeFromArray(script: any, array: any[]) {
|
|
|
207
207
|
const previousActiveMap: { [key: string]: boolean } = {};
|
|
208
208
|
const previousActiveInHierarchyMap: { [key: string]: boolean } = {};
|
|
209
209
|
|
|
210
|
-
export function updateIsActive() {
|
|
211
|
-
if
|
|
210
|
+
export function updateIsActive(obj? : Object3D) {
|
|
211
|
+
if(!obj) obj = Context.Current.scene;
|
|
212
|
+
if (!obj) {
|
|
212
213
|
console.trace("Invalid call - no current context.");
|
|
213
214
|
return;
|
|
214
215
|
}
|
|
215
|
-
updateIsActiveInHierarchyRecursiveRuntime(
|
|
216
|
+
updateIsActiveInHierarchyRecursiveRuntime(obj, isActiveSelf(obj), true);
|
|
216
217
|
}
|
|
217
218
|
|
|
219
|
+
|
|
218
220
|
function updateIsActiveInHierarchyRecursiveRuntime(go: THREE.Object3D, activeInHierarchy: boolean, allowEventCall: boolean) {
|
|
219
221
|
let activeStateChanged: boolean = false;
|
|
220
222
|
|
|
@@ -247,6 +249,7 @@ function updateIsActiveInHierarchyRecursiveRuntime(go: THREE.Object3D, activeInH
|
|
|
247
249
|
const prevActiveInHierarchy = previousActiveInHierarchyMap[go.uuid];
|
|
248
250
|
if (prevActiveInHierarchy !== undefined) {
|
|
249
251
|
if (prevActiveInHierarchy !== activeInHierarchy) {
|
|
252
|
+
// console.log("CHANGE", go.name, activeInHierarchy);
|
|
250
253
|
if (allowEventCall) {
|
|
251
254
|
perComponent(go, comp => {
|
|
252
255
|
if (activeInHierarchy) {
|
|
@@ -286,6 +289,7 @@ export function updateActiveInHierarchyWithoutEventCall(go: THREE.Object3D) {
|
|
|
286
289
|
console.error("GO is null");
|
|
287
290
|
return;
|
|
288
291
|
}
|
|
292
|
+
previousActiveInHierarchyMap[go.uuid] = activeInHierarchy;
|
|
289
293
|
go[constants.activeInHierarchyFieldName] = activeInHierarchy && foundScene;
|
|
290
294
|
}
|
|
291
295
|
|