@needle-tools/engine 2.65.1-pre → 2.66.1-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 (101) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/needle-engine.js +7945 -7782
  3. package/dist/needle-engine.umd.cjs +223 -223
  4. package/lib/engine/debug/debug_overlay.js +4 -1
  5. package/lib/engine/debug/debug_overlay.js.map +1 -1
  6. package/lib/engine/engine_addressables.js +2 -2
  7. package/lib/engine/engine_addressables.js.map +1 -1
  8. package/lib/engine/engine_element.d.ts +1 -0
  9. package/lib/engine/engine_element.js +4 -1
  10. package/lib/engine/engine_element.js.map +1 -1
  11. package/lib/engine/engine_element_loading.d.ts +3 -2
  12. package/lib/engine/engine_element_loading.js +18 -14
  13. package/lib/engine/engine_element_loading.js.map +1 -1
  14. package/lib/engine/engine_gameobject.js +6 -3
  15. package/lib/engine/engine_gameobject.js.map +1 -1
  16. package/lib/engine/engine_gizmos.js +3 -1
  17. package/lib/engine/engine_gizmos.js.map +1 -1
  18. package/lib/engine/engine_networking.d.ts +3 -1
  19. package/lib/engine/engine_networking.js +10 -8
  20. package/lib/engine/engine_networking.js.map +1 -1
  21. package/lib/engine/engine_physics.d.ts +29 -1
  22. package/lib/engine/engine_physics.js +99 -10
  23. package/lib/engine/engine_physics.js.map +1 -1
  24. package/lib/engine/engine_setup.js +3 -0
  25. package/lib/engine/engine_setup.js.map +1 -1
  26. package/lib/engine/extensions/NEEDLE_render_objects.js +9 -0
  27. package/lib/engine/extensions/NEEDLE_render_objects.js.map +1 -1
  28. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +5 -2
  29. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  30. package/lib/engine-components/Animator.d.ts +25 -1
  31. package/lib/engine-components/Animator.js +63 -37
  32. package/lib/engine-components/Animator.js.map +1 -1
  33. package/lib/engine-components/AnimatorController.d.ts +14 -12
  34. package/lib/engine-components/AnimatorController.js +15 -13
  35. package/lib/engine-components/AnimatorController.js.map +1 -1
  36. package/lib/engine-components/CharacterController.d.ts +1 -0
  37. package/lib/engine-components/CharacterController.js +14 -9
  38. package/lib/engine-components/CharacterController.js.map +1 -1
  39. package/lib/engine-components/Collider.js +14 -1
  40. package/lib/engine-components/Collider.js.map +1 -1
  41. package/lib/engine-components/ParticleSystem.d.ts +5 -1
  42. package/lib/engine-components/ParticleSystem.js +41 -6
  43. package/lib/engine-components/ParticleSystem.js.map +1 -1
  44. package/lib/engine-components/ParticleSystemModules.d.ts +2 -0
  45. package/lib/engine-components/ParticleSystemModules.js +26 -0
  46. package/lib/engine-components/ParticleSystemModules.js.map +1 -1
  47. package/lib/engine-components/ParticleSystemSubEmitter.js +5 -2
  48. package/lib/engine-components/ParticleSystemSubEmitter.js.map +1 -1
  49. package/lib/engine-components/Renderer.js +9 -5
  50. package/lib/engine-components/Renderer.js.map +1 -1
  51. package/lib/engine-components/ScreenCapture.js +3 -3
  52. package/lib/engine-components/ScreenCapture.js.map +1 -1
  53. package/lib/engine-components/SpectatorCamera.js +3 -3
  54. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  55. package/lib/engine-components/SyncedCamera.js +1 -1
  56. package/lib/engine-components/SyncedCamera.js.map +1 -1
  57. package/lib/engine-components/SyncedTransform.js +2 -2
  58. package/lib/engine-components/SyncedTransform.js.map +1 -1
  59. package/lib/engine-components/TestRunner.js +1 -1
  60. package/lib/engine-components/TestRunner.js.map +1 -1
  61. package/lib/engine-components/WebARSessionRoot.js +3 -2
  62. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  63. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  64. package/lib/engine-components/WebXRGrabRendering.js +2 -2
  65. package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
  66. package/lib/engine-components/WebXRSync.js +2 -2
  67. package/lib/engine-components/WebXRSync.js.map +1 -1
  68. package/lib/engine-components-experimental/networking/PlayerSync.js +1 -1
  69. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
  70. package/package.json +1 -1
  71. package/plugins/vite/meta.js +3 -0
  72. package/plugins/vite/poster-client.js +6 -4
  73. package/src/engine/debug/debug_overlay.ts +4 -1
  74. package/src/engine/engine_addressables.ts +2 -2
  75. package/src/engine/engine_element.ts +8 -1
  76. package/src/engine/engine_element_loading.ts +18 -14
  77. package/src/engine/engine_gameobject.ts +584 -583
  78. package/src/engine/engine_gizmos.ts +3 -2
  79. package/src/engine/engine_networking.ts +10 -8
  80. package/src/engine/engine_physics.ts +113 -10
  81. package/src/engine/engine_setup.ts +4 -0
  82. package/src/engine/extensions/NEEDLE_render_objects.ts +10 -1
  83. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +5 -2
  84. package/src/engine-components/Animator.ts +53 -27
  85. package/src/engine-components/AnimatorController.ts +15 -13
  86. package/src/engine-components/CharacterController.ts +12 -9
  87. package/src/engine-components/Collider.ts +16 -2
  88. package/src/engine-components/ParticleSystem.ts +45 -9
  89. package/src/engine-components/ParticleSystemModules.ts +28 -1
  90. package/src/engine-components/ParticleSystemSubEmitter.ts +5 -3
  91. package/src/engine-components/Renderer.ts +14 -11
  92. package/src/engine-components/ScreenCapture.ts +3 -3
  93. package/src/engine-components/SpectatorCamera.ts +3 -3
  94. package/src/engine-components/SyncedCamera.ts +1 -1
  95. package/src/engine-components/SyncedTransform.ts +2 -2
  96. package/src/engine-components/TestRunner.ts +1 -1
  97. package/src/engine-components/WebARSessionRoot.ts +3 -2
  98. package/src/engine-components/WebXRAvatar.ts +0 -1
  99. package/src/engine-components/WebXRGrabRendering.ts +2 -2
  100. package/src/engine-components/WebXRSync.ts +2 -2
  101. package/src/engine-components-experimental/networking/PlayerSync.ts +1 -1
@@ -69,6 +69,8 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
69
69
  super();
70
70
  this._overlay_ar = new AROverlayHandler();
71
71
  this._context = new Context({ domElement: this });
72
+ // TODO: do we want to rename this event?
73
+ this.addEventListener("ready", this.onReady);
72
74
  }
73
75
 
74
76
  async connectedCallback() {
@@ -252,6 +254,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
252
254
  console.error("Needle Engine: No files to load", src);
253
255
  return;
254
256
  }
257
+
255
258
  const currentHash = this.getAttribute("hash");
256
259
  if (currentHash !== null && currentHash !== undefined)
257
260
  this._context.hash = currentHash;
@@ -267,7 +270,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
267
270
 
268
271
  this._loadingProgress01 = 1;
269
272
  if (useDefaultLoading)
270
- this._loadingView?.onLoadingFinished("creating scene");
273
+ this._loadingView?.onLoadingUpdate(1, "creating scene");
271
274
  this.classList.remove("loading");
272
275
  this.classList.add("loading-finished");
273
276
  if (debug)
@@ -278,8 +281,12 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
278
281
  src: alias ?? src
279
282
  }
280
283
  }));
284
+
281
285
  }
282
286
 
287
+ private onReady = () => this._loadingView?.onLoadingFinished();
288
+
289
+
283
290
  private registerEventFromAttribute(eventName: string, code: string) {
284
291
  if (typeof code === "string" && code.length > 0) {
285
292
  // indirect eval https://esbuild.github.io/content-types/#direct-eval
@@ -14,7 +14,7 @@ export class LoadingElementOptions {
14
14
 
15
15
  export interface ILoadingViewHandler {
16
16
  onLoadingBegin(message?: string);
17
- onLoadingUpdate(progress: LoadingProgressArgs, message?: string);
17
+ onLoadingUpdate(progress: LoadingProgressArgs | number, message?: string);
18
18
  onLoadingFinished(message?: string);
19
19
  }
20
20
 
@@ -110,9 +110,11 @@ export class EngineLoadingView implements ILoadingViewHandler {
110
110
  this.updateDisplay();
111
111
  }
112
112
 
113
- onLoadingFinished(message?: string) {
113
+ onLoadingFinished() {
114
+ if (debug)
115
+ console.warn("Finished Loading");
114
116
  this.loadingProgress = 1;
115
- this.setMessage(message ?? "");
117
+ this.onDoneLoading();
116
118
  }
117
119
 
118
120
  setMessage(message: string) {
@@ -125,27 +127,29 @@ export class EngineLoadingView implements ILoadingViewHandler {
125
127
  private smoothProgressLoop() {
126
128
  if (this._progressLoop) return;
127
129
  let dt = 1 / 12;
128
- const max = 1 - .05;
129
130
  if (debugRendering) {
130
131
  dt = 1 / 500;
131
132
  if (typeof debugRendering === "number") dt *= debugRendering;
132
133
  }
133
134
  this._progressLoop = setInterval(() => {
134
- if (this.loadingProgress >= 1 && this._progress >= max) {
135
- if (this._loadingElement) {
136
- if (debug) console.log("Hiding loading element");
137
- this._loadingElement.style.display = "none";
138
- this._loadingElement.remove();
139
- }
140
- clearInterval(this._progressLoop);
141
- this._progressLoop = null;
142
- return;
143
- }
135
+ // increate loading speed when almost done
136
+ if (this.loadingProgress >= .95) dt = .9;
144
137
  this._progress = Mathf.lerp(this._progress, this.loadingProgress, dt * this.loadingProgress);
145
138
  this.updateDisplay();
146
139
  }, dt);
147
140
  }
148
141
 
142
+ private onDoneLoading() {
143
+ if (this._loadingElement) {
144
+ if (debug) console.log("Hiding loading element");
145
+ this._loadingElement.style.display = "none";
146
+ this._loadingElement.remove();
147
+ }
148
+ if (this._progressLoop)
149
+ clearInterval(this._progressLoop);
150
+ this._progressLoop = null;
151
+ }
152
+
149
153
  private updateDisplay() {
150
154
  const t = this._progress;
151
155
  const percent = (t * 100).toFixed(0) + "%";