@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.
Files changed (142) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/needle-engine.d.ts +213 -144
  3. package/dist/needle-engine.js +414 -358
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +99 -43
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/api.d.ts +3 -0
  8. package/lib/engine/api.js +3 -0
  9. package/lib/engine/api.js.map +1 -1
  10. package/lib/engine/debug/debug.d.ts +3 -0
  11. package/lib/engine/debug/debug.js +8 -0
  12. package/lib/engine/debug/debug.js.map +1 -0
  13. package/lib/engine/debug/debug_overlay.d.ts +7 -0
  14. package/lib/engine/debug/debug_overlay.js +213 -0
  15. package/lib/engine/debug/debug_overlay.js.map +1 -0
  16. package/lib/engine/engine.js +1 -1
  17. package/lib/engine/engine.js.map +1 -1
  18. package/lib/engine/engine_element_loading.js +1 -1
  19. package/lib/engine/engine_element_loading.js.map +1 -1
  20. package/lib/engine/engine_gameobject.d.ts +1 -0
  21. package/lib/engine/engine_gameobject.js +13 -1
  22. package/lib/engine/engine_gameobject.js.map +1 -1
  23. package/lib/engine/engine_gltf_builtin_components.js +4 -0
  24. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  25. package/lib/engine/engine_mainloop_utils.d.ts +1 -1
  26. package/lib/engine/engine_mainloop_utils.js +7 -3
  27. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  28. package/lib/engine/engine_physics.d.ts +29 -28
  29. package/lib/engine/engine_physics.js +85 -86
  30. package/lib/engine/engine_physics.js.map +1 -1
  31. package/lib/engine/engine_serialization_core.js +43 -0
  32. package/lib/engine/engine_serialization_core.js.map +1 -1
  33. package/lib/engine/engine_setup.js +1 -1
  34. package/lib/engine/engine_setup.js.map +1 -1
  35. package/lib/engine/engine_time.d.ts +1 -0
  36. package/lib/engine/engine_time.js +1 -0
  37. package/lib/engine/engine_time.js.map +1 -1
  38. package/lib/engine/engine_types.d.ts +6 -1
  39. package/lib/engine/engine_types.js.map +1 -1
  40. package/lib/engine/engine_typestore.d.ts +1 -0
  41. package/lib/engine/engine_typestore.js +1 -0
  42. package/lib/engine/engine_typestore.js.map +1 -1
  43. package/lib/engine/engine_utils.js +1 -1
  44. package/lib/engine/engine_utils.js.map +1 -1
  45. package/lib/engine/extensions/NEEDLE_animator_controller_model.js.map +1 -1
  46. package/lib/engine/extensions/NEEDLE_render_objects.d.ts +2 -2
  47. package/lib/engine/extensions/NEEDLE_render_objects.js +2 -2
  48. package/lib/engine/extensions/NEEDLE_render_objects.js.map +1 -1
  49. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +5 -0
  50. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  51. package/lib/engine-components/Animation.d.ts +5 -1
  52. package/lib/engine-components/Animation.js +21 -0
  53. package/lib/engine-components/Animation.js.map +1 -1
  54. package/lib/engine-components/AnimatorController.d.ts +1 -0
  55. package/lib/engine-components/AnimatorController.js +14 -7
  56. package/lib/engine-components/AnimatorController.js.map +1 -1
  57. package/lib/engine-components/AudioSource.d.ts +1 -1
  58. package/lib/engine-components/AudioSource.js +2 -2
  59. package/lib/engine-components/AudioSource.js.map +1 -1
  60. package/lib/engine-components/BoxHelperComponent.d.ts +2 -2
  61. package/lib/engine-components/BoxHelperComponent.js +27 -9
  62. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  63. package/lib/engine-components/Component.d.ts +2 -1
  64. package/lib/engine-components/Component.js +11 -5
  65. package/lib/engine-components/Component.js.map +1 -1
  66. package/lib/engine-components/GroundProjection.d.ts +2 -0
  67. package/lib/engine-components/GroundProjection.js +18 -6
  68. package/lib/engine-components/GroundProjection.js.map +1 -1
  69. package/lib/engine-components/ReflectionProbe.d.ts +22 -0
  70. package/lib/engine-components/ReflectionProbe.js +134 -0
  71. package/lib/engine-components/ReflectionProbe.js.map +1 -0
  72. package/lib/engine-components/Renderer.d.ts +16 -4
  73. package/lib/engine-components/Renderer.js +96 -45
  74. package/lib/engine-components/Renderer.js.map +1 -1
  75. package/lib/engine-components/WebARSessionRoot.d.ts +7 -7
  76. package/lib/engine-components/WebARSessionRoot.js +7 -7
  77. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  78. package/lib/engine-components/WebXR.d.ts +9 -8
  79. package/lib/engine-components/WebXR.js +40 -24
  80. package/lib/engine-components/WebXR.js.map +1 -1
  81. package/lib/engine-components/WebXRAvatar.d.ts +4 -5
  82. package/lib/engine-components/WebXRAvatar.js +9 -8
  83. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  84. package/lib/engine-components/WebXRController.d.ts +21 -21
  85. package/lib/engine-components/WebXRController.js +83 -63
  86. package/lib/engine-components/WebXRController.js.map +1 -1
  87. package/lib/engine-components/WebXRGrabRendering.d.ts +3 -3
  88. package/lib/engine-components/WebXRGrabRendering.js +2 -2
  89. package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
  90. package/lib/engine-components/WebXRSync.d.ts +8 -8
  91. package/lib/engine-components/WebXRSync.js +15 -15
  92. package/lib/engine-components/WebXRSync.js.map +1 -1
  93. package/lib/engine-components/codegen/components.d.ts +1 -0
  94. package/lib/engine-components/codegen/components.js +1 -0
  95. package/lib/engine-components/codegen/components.js.map +1 -1
  96. package/lib/engine-components/js-extensions/ExtensionUtils.js +1 -1
  97. package/lib/engine-components/js-extensions/ExtensionUtils.js.map +1 -1
  98. package/lib/engine-components/ui/EventSystem.d.ts +1 -0
  99. package/lib/engine-components/ui/EventSystem.js +21 -1
  100. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  101. package/package.json +1 -1
  102. package/src/engine/api.ts +3 -0
  103. package/src/engine/codegen/register_types.js +293 -0
  104. package/src/engine/debug/debug.ts +9 -0
  105. package/src/engine/debug/debug_overlay.ts +224 -0
  106. package/src/engine/engine.ts +1 -1
  107. package/src/engine/engine_element_loading.ts +1 -1
  108. package/src/engine/engine_gameobject.ts +17 -4
  109. package/src/engine/engine_gltf_builtin_components.ts +5 -1
  110. package/src/engine/engine_mainloop_utils.ts +7 -3
  111. package/src/engine/engine_physics.ts +130 -130
  112. package/src/engine/engine_serialization_core.ts +41 -0
  113. package/src/engine/engine_setup.ts +1 -1
  114. package/src/engine/engine_time.ts +2 -0
  115. package/src/engine/engine_types.ts +7 -1
  116. package/src/engine/engine_typestore.ts +2 -0
  117. package/src/engine/engine_utils.ts +3 -2
  118. package/src/engine/extensions/EXT_texture_exr.js +1 -1
  119. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +2 -1
  120. package/src/engine/extensions/NEEDLE_render_objects.ts +4 -4
  121. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +7 -0
  122. package/src/engine-components/Animation.ts +16 -1
  123. package/src/engine-components/AnimatorController.ts +19 -9
  124. package/src/engine-components/AudioSource.ts +3 -3
  125. package/src/engine-components/BoxHelperComponent.ts +29 -9
  126. package/src/engine-components/Component.ts +11 -5
  127. package/src/engine-components/GroundProjection.ts +22 -7
  128. package/src/engine-components/ReflectionProbe.ts +141 -0
  129. package/src/engine-components/Renderer.ts +116 -54
  130. package/src/engine-components/WebARSessionRoot.ts +16 -16
  131. package/src/engine-components/WebXR.ts +53 -48
  132. package/src/engine-components/WebXRAvatar.ts +16 -16
  133. package/src/engine-components/WebXRController.ts +133 -107
  134. package/src/engine-components/WebXRGrabRendering.ts +6 -6
  135. package/src/engine-components/WebXRSync.ts +20 -20
  136. package/src/engine-components/codegen/components.ts +1 -0
  137. package/src/engine-components/js-extensions/ExtensionUtils.ts +1 -1
  138. package/src/engine-components/ui/EventSystem.ts +26 -3
  139. package/lib/engine/debug/error_overlay.d.ts +0 -1
  140. package/lib/engine/debug/error_overlay.js +0 -114
  141. package/lib/engine/debug/error_overlay.js.map +0 -1
  142. package/src/engine/debug/error_overlay.ts +0 -126
@@ -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
- // this.container.removeChild(el);
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
- return go.visible || isUsingInstancing(go);
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 : IComponent | Object3D, newObjectsMap: { [key: string]: NewGameObjectReferenceInfo }) {
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 (!Context.Current) {
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(Context.Current.scene, Context.Current.scene.visible, true);
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