@needle-tools/engine 2.49.1-pre → 2.51.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 (108) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/needle-engine.d.ts +19 -17
  3. package/dist/needle-engine.js +517 -3590
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +22 -22
  6. package/dist/needle-engine.min.js.map +3 -3
  7. package/lib/engine/engine_addressables.d.ts +1 -1
  8. package/lib/engine/engine_create_objects.d.ts +1 -1
  9. package/lib/engine/engine_element.d.ts +5 -4
  10. package/lib/engine/engine_element.js.map +1 -1
  11. package/lib/engine/engine_element_overlay.d.ts +3 -2
  12. package/lib/engine/engine_element_overlay.js.map +1 -1
  13. package/lib/engine/engine_gameobject.js +6 -0
  14. package/lib/engine/engine_gameobject.js.map +1 -1
  15. package/lib/engine/engine_input.js +15 -9
  16. package/lib/engine/engine_input.js.map +1 -1
  17. package/lib/engine/engine_physics.d.ts +1 -1
  18. package/lib/engine/engine_physics.js +1 -1
  19. package/lib/engine/engine_physics.js.map +1 -1
  20. package/lib/engine/engine_scenetools.d.ts +1 -1
  21. package/lib/engine/engine_serialization_core.d.ts +1 -1
  22. package/lib/engine/engine_setup.d.ts +2 -1
  23. package/lib/engine/engine_setup.js +28 -5
  24. package/lib/engine/engine_setup.js.map +1 -1
  25. package/lib/engine/engine_three_utils.d.ts +1 -0
  26. package/lib/engine/engine_three_utils.js +6 -0
  27. package/lib/engine/engine_three_utils.js.map +1 -1
  28. package/lib/engine/engine_types.d.ts +10 -9
  29. package/lib/engine/engine_utils.d.ts +1 -1
  30. package/lib/engine/extensions/NEEDLE_components.js +15 -11
  31. package/lib/engine/extensions/NEEDLE_components.js.map +1 -1
  32. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +1 -1
  33. package/lib/engine-components/Animator.js +4 -2
  34. package/lib/engine-components/Animator.js.map +1 -1
  35. package/lib/engine-components/AnimatorController.js +22 -2
  36. package/lib/engine-components/AnimatorController.js.map +1 -1
  37. package/lib/engine-components/Component.d.ts +2 -1
  38. package/lib/engine-components/DragControls.js +10 -4
  39. package/lib/engine-components/DragControls.js.map +1 -1
  40. package/lib/engine-components/Light.js +15 -12
  41. package/lib/engine-components/Light.js.map +1 -1
  42. package/lib/engine-components/OrbitControls.js +19 -14
  43. package/lib/engine-components/OrbitControls.js.map +1 -1
  44. package/lib/engine-components/RigidBody.d.ts +1 -1
  45. package/lib/engine-components/RigidBody.js +19 -10
  46. package/lib/engine-components/RigidBody.js.map +1 -1
  47. package/lib/engine-components/ScreenCapture.js +2 -0
  48. package/lib/engine-components/ScreenCapture.js.map +1 -1
  49. package/lib/engine-components/ShadowCatcher.js +5 -1
  50. package/lib/engine-components/ShadowCatcher.js.map +1 -1
  51. package/lib/engine-components/Skybox.js +14 -2
  52. package/lib/engine-components/Skybox.js.map +1 -1
  53. package/lib/engine-components/VideoPlayer.js +2 -1
  54. package/lib/engine-components/VideoPlayer.js.map +1 -1
  55. package/lib/engine-components/WebARSessionRoot.d.ts +2 -2
  56. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  57. package/lib/engine-components/WebXR.d.ts +2 -1
  58. package/lib/engine-components/WebXR.js +9 -3
  59. package/lib/engine-components/WebXR.js.map +1 -1
  60. package/lib/engine-components/WebXRAvatar.d.ts +1 -1
  61. package/lib/engine-components/WebXRAvatar.js +6 -1
  62. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  63. package/lib/engine-components/WebXRController.d.ts +2 -1
  64. package/lib/engine-components/WebXRController.js +3 -2
  65. package/lib/engine-components/WebXRController.js.map +1 -1
  66. package/lib/engine-components/WebXRSync.js +5 -0
  67. package/lib/engine-components/WebXRSync.js.map +1 -1
  68. package/lib/engine-components/XRFlag.js +6 -6
  69. package/lib/engine-components/XRFlag.js.map +1 -1
  70. package/lib/engine-components/js-extensions/Vector.js +2 -5
  71. package/lib/engine-components/js-extensions/Vector.js.map +1 -1
  72. package/lib/engine-components/timeline/PlayableDirector.d.ts +1 -1
  73. package/lib/engine-components/timeline/PlayableDirector.js +1 -5
  74. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  75. package/lib/engine-components/ui/EventSystem.d.ts +2 -1
  76. package/lib/engine-components/ui/EventSystem.js +9 -1
  77. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  78. package/lib/engine-components/ui/Utils.d.ts +1 -1
  79. package/package.json +2 -4
  80. package/src/engine/engine_element.ts +5 -5
  81. package/src/engine/engine_element_overlay.ts +2 -2
  82. package/src/engine/engine_gameobject.ts +7 -1
  83. package/src/engine/engine_input.ts +12 -8
  84. package/src/engine/engine_physics.ts +1 -1
  85. package/src/engine/engine_setup.ts +25 -6
  86. package/src/engine/engine_three_utils.ts +7 -0
  87. package/src/engine/engine_types.ts +3 -3
  88. package/src/engine/extensions/NEEDLE_components.ts +13 -9
  89. package/src/engine-components/Animator.ts +3 -3
  90. package/src/engine-components/AnimatorController.ts +27 -7
  91. package/src/engine-components/Component.ts +1 -1
  92. package/src/engine-components/DragControls.ts +8 -4
  93. package/src/engine-components/Light.ts +15 -10
  94. package/src/engine-components/OrbitControls.ts +19 -14
  95. package/src/engine-components/RigidBody.ts +19 -11
  96. package/src/engine-components/ScreenCapture.ts +1 -0
  97. package/src/engine-components/ShadowCatcher.ts +6 -1
  98. package/src/engine-components/Skybox.ts +15 -3
  99. package/src/engine-components/VideoPlayer.ts +2 -1
  100. package/src/engine-components/WebARSessionRoot.ts +1 -2
  101. package/src/engine-components/WebXR.ts +10 -4
  102. package/src/engine-components/WebXRAvatar.ts +6 -1
  103. package/src/engine-components/WebXRController.ts +4 -3
  104. package/src/engine-components/WebXRSync.ts +6 -1
  105. package/src/engine-components/XRFlag.ts +7 -6
  106. package/src/engine-components/js-extensions/Vector.ts +2 -5
  107. package/src/engine-components/timeline/PlayableDirector.ts +1 -4
  108. package/src/engine-components/ui/EventSystem.ts +12 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EventSystem.js","sourceRoot":"","sources":["../../../../engine-components/ui/EventSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventSystem.js","sourceRoot":"","sources":["../../../../engine-components/ui/EventSystem.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { FrameEvent } from "../../engine/engine_setup";
2
2
  import { Behaviour } from "../Component";
3
3
  export declare function isUIObject(obj: THREE.Object3D): boolean;
4
- export declare type RenderSettings = {
4
+ export type RenderSettings = {
5
5
  renderOnTop?: boolean;
6
6
  doubleSided?: boolean;
7
7
  depthWrite?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "2.49.1-pre",
3
+ "version": "2.51.0-pre",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible, and collaboration and XR come naturally.",
5
5
  "main": "dist/needle-engine.js",
6
6
  "module": "src/needle-engine.ts",
@@ -42,15 +42,13 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "@dimforge/rapier3d-compat": "^0.9.0",
45
- "dat.gui.image": "^1.0.4",
46
45
  "flatbuffers": "2.0.4",
47
46
  "md5": "^2.3.0",
48
47
  "peerjs": "1.3.2",
49
48
  "simplex-noise": "^4.0.1",
50
49
  "stats.js": "^0.17.0",
51
- "three": "npm:@needle-tools/three@^0.145.4",
50
+ "three": "npm:@needle-tools/three@^0.146.1",
52
51
  "three-mesh-ui": "^6.4.5",
53
- "three-nebula": "^10.0.3",
54
52
  "three.meshline": "^1.4.0",
55
53
  "three.quarks": "^0.7.3",
56
54
  "uuid": "^9.0.0",
@@ -294,24 +294,24 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
294
294
  return null;
295
295
  }
296
296
 
297
- onEnterAR(session: THREE.XRSession, overlayContainer: HTMLElement) {
297
+ onEnterAR(session: XRSession, overlayContainer: HTMLElement) {
298
298
  this.onSetupAR();
299
299
  this._overlay_ar.onBegin(this._context!, overlayContainer, session);
300
300
  this.dispatchEvent(new CustomEvent("enter-ar", { detail: { session: session, context: this._context, htmlContainer: this._overlay_ar?.ARContainer } }));
301
301
  }
302
302
 
303
- onExitAR(session: THREE.XRSession) {
303
+ onExitAR(session: XRSession) {
304
304
  this._overlay_ar.onEnd(this._context!);
305
305
  this.onSetupDesktop();
306
306
  this.dispatchEvent(new CustomEvent("exit-ar", { detail: { session: session, context: this._context, htmlContainer: this._overlay_ar?.ARContainer } }));
307
307
  }
308
308
 
309
- onEnterVR(session: THREE.XRSession) {
309
+ onEnterVR(session: XRSession) {
310
310
  this.onSetupVR();
311
311
  this.dispatchEvent(new CustomEvent("enter-vr", { detail: { session: session, context: this._context } }));
312
312
  }
313
313
 
314
- onExitVR(session: THREE.XRSession) {
314
+ onExitVR(session: XRSession) {
315
315
  this.onSetupDesktop();
316
316
  this.dispatchEvent(new CustomEvent("exit-vr", { detail: { session: session, context: this._context } }));
317
317
  }
@@ -348,7 +348,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
348
348
  this.foreachHtmlElement(ch => this.setupElementsForMode(ch, desktopContainerClassname));
349
349
  }
350
350
 
351
- private setupElementsForMode(el: HTMLElement, currentSessionType: string, _session: THREE.XRSession | null = null) {
351
+ private setupElementsForMode(el: HTMLElement, currentSessionType: string, _session: XRSession | null = null) {
352
352
  if (el === this._context?.renderer.domElement) return;
353
353
  if (el.id === "VRButton" || el.id === "ARButton") return;
354
354
  el.style.position = "absolute";
@@ -15,7 +15,7 @@ export class AROverlayHandler {
15
15
 
16
16
  private arContainer: HTMLElement | null = null;
17
17
  closeARCallback: any;
18
- currentSession: THREE.XRSession | null = null;
18
+ currentSession: XRSession | null = null;
19
19
  registeredCloseEventElements: Element[] = [];
20
20
 
21
21
  private _createdAROnlyElements: Array<any> = [];
@@ -25,7 +25,7 @@ export class AROverlayHandler {
25
25
  this.onRequestedEndAR();
26
26
  }
27
27
 
28
- onBegin(context: Context, overlayContainer: HTMLElement, session: THREE.XRSession) {
28
+ onBegin(context: Context, overlayContainer: HTMLElement, session: XRSession) {
29
29
  this.currentSession = session;
30
30
  this.arContainer = overlayContainer;
31
31
 
@@ -480,7 +480,7 @@ function resolveReferences(newObjectsMap: { [key: string]: NewGameObjectReferenc
480
480
 
481
481
  }
482
482
 
483
- function postProcessNewInstance(copy: THREE.Object3D, key: string, value: IComponent | Object3D, newObjectsMap: { [key: string]: NewGameObjectReferenceInfo }) {
483
+ function postProcessNewInstance(copy: THREE.Object3D, key: string, value: IComponent | Object3D | any, newObjectsMap: { [key: string]: NewGameObjectReferenceInfo }) {
484
484
  if (value === null || value === undefined) return;
485
485
  if ((value as IComponent).isComponent === true) {
486
486
  const originalGameObjectReference = value["gameObject"];
@@ -519,4 +519,10 @@ function postProcessNewInstance(copy: THREE.Object3D, key: string, value: ICompo
519
519
  }
520
520
  }
521
521
  }
522
+ else {
523
+ // create new instances for some types that we know should usually not be shared and can safely be cloned
524
+ if (value.isVector4 || value.isVector3 || value.isVector2 || value.isQuaternion || value.isEuler) {
525
+ return value.clone();
526
+ }
527
+ }
522
528
  }
@@ -428,17 +428,20 @@ export class Input extends EventTarget {
428
428
  this.onUp({ button: i, clientX: evt.clientX, clientY: evt.clientY, pointerType: PointerType.Mouse, source: evt });
429
429
  }
430
430
 
431
- private isInRect(_evt: { clientX: number, clientY: number }): boolean {
431
+ private isInRect(e: { clientX: number, clientY: number }): boolean {
432
+ if(this.context.isInXR) return true;
432
433
  const rect = this.context.domElement.getBoundingClientRect();
433
- const px = _evt.clientX - window.scrollX;
434
- const py = _evt.clientY - window.scrollY;
435
- return px >= rect.left && px <= rect.right && py >= rect.top && py <= rect.bottom;
434
+ const px = e.clientX;
435
+ const py = e.clientY;
436
+ const isInRect = px >= rect.x && px <= rect.right && py >= rect.y && py <= rect.bottom;
437
+ if(debug && !isInRect) console.log("Not in rect", rect, px, py);
438
+ return isInRect;
436
439
 
437
440
  }
438
441
 
439
442
  private onDown(evt: PointerEventArgs) {
440
- if (!this.isInRect(evt)) return;
441
443
  if (debug) console.log(evt.pointerType, "DOWN", evt.button);
444
+ if (!this.isInRect(evt)) return;
442
445
  this.setPointerState(evt.button, this._pointerPressed, true);
443
446
  this.setPointerState(evt.button, this._pointerDown, true);
444
447
  this.setPointerStateT(evt.button, this._pointerEvent, evt.source);
@@ -462,7 +465,7 @@ export class Input extends EventTarget {
462
465
  const isDown = this.getPointerPressed(evt.button);
463
466
  if (isDown === false && !this.isInRect(evt)) return;
464
467
  if (evt.pointerType === PointerType.Touch && !isDown) return;
465
- if (debug && (evt.pointerType !== PointerType.Mouse || isDown)) console.log(evt.pointerType, "MOVE", evt.button)
468
+ if (debug) console.log(evt.pointerType, "MOVE", evt.button)
466
469
  this.updatePointerPosition(evt);
467
470
  this.setPointerStateT(evt.button, this._pointerEvent, evt.source);
468
471
  this.onDispatchEvent(InputEvents.PointerMove, evt);
@@ -530,12 +533,13 @@ export class Input extends EventTarget {
530
533
  this._pointerPositions[evt.button].y = evt.clientY;
531
534
 
532
535
  // we want to have the position 01 on the canvas for raycasting
533
- const px = evt.clientX + window.scrollX;
534
- const py = evt.clientY + window.scrollY;
536
+ const px = evt.clientX;
537
+ const py = evt.clientY;
535
538
  while (evt.button >= this._pointerPositionsRC.length) this._pointerPositionsRC.push(new THREE.Vector2());
536
539
  const rc = this._pointerPositionsRC[evt.button];
537
540
  rc.set(px, py);
538
541
  this.convertScreenspaceToRaycastSpace(rc);
542
+ // console.log(this.context.alias, rc);
539
543
  // this._pointerPositionsRC[evt.button].x = (px - this.context.domX) / this.context.domWidth * 2 - 1;
540
544
  // this._pointerPositionsRC[evt.button].y = -((py - this.context.domY) / this.context.domHeight) * 2 + 1;
541
545
  // console.log(evt.button)
@@ -405,10 +405,10 @@ export class Physics {
405
405
  matrix.decompose(this._tempPosition, this._tempQuaternion, this._tempScale);
406
406
  getWorldScale(collider.gameObject, this._tempScale);
407
407
  if (center) {
408
+ center.multiply( this._tempScale);
408
409
  this._tempPosition.x -= center.x;
409
410
  this._tempPosition.y += center.y;
410
411
  this._tempPosition.z += center.z;
411
- this._tempPosition.multiply(this._tempScale);
412
412
  }
413
413
  desc.setTranslation(this._tempPosition.x, this._tempPosition.y, this._tempPosition.z);
414
414
  desc.setRotation(this._tempQuaternion);
@@ -30,7 +30,7 @@ import { destroy, foreachComponent } from './engine_gameobject';
30
30
 
31
31
  const debug = utils.getParam("debugSetup");
32
32
  const stats = utils.getParam("stats");
33
-
33
+ const debugActive = utils.getParam("debugactive");
34
34
 
35
35
 
36
36
  // this is where functions that setup unity scenes will be pushed into
@@ -132,6 +132,12 @@ export class Context {
132
132
  private _boundingClientRect: DOMRect | null = null;
133
133
  private _domX; private _domY;
134
134
  private calculateBoundingClientRect() {
135
+ // workaround for mozilla webXR viewer
136
+ if (this.isInAR) {
137
+ this._domX = window.innerWidth;
138
+ this._domY = window.innerHeight;
139
+ return;
140
+ }
135
141
  if (this._boundingClientRectFrame === this.time.frame) return;
136
142
  this._boundingClientRectFrame = this.time.frame;
137
143
  this._boundingClientRect = this.domElement.getBoundingClientRect();
@@ -139,8 +145,16 @@ export class Context {
139
145
  this._domY = this._boundingClientRect.y;
140
146
  }
141
147
 
142
- get domWidth(): number { return this.domElement.clientWidth; }
143
- get domHeight(): number { return this.domElement.clientHeight; }
148
+ get domWidth(): number {
149
+ // for mozilla XR
150
+ if(this.isInAR) return window.innerWidth;
151
+ return this.domElement.clientWidth;
152
+ }
153
+ get domHeight(): number {
154
+ // for mozilla XR
155
+ if(this.isInAR) return window.innerHeight;
156
+ return this.domElement.clientHeight;
157
+ }
144
158
  get domX(): number {
145
159
  this.calculateBoundingClientRect();
146
160
  return this._domX;
@@ -274,11 +288,11 @@ export class Context {
274
288
 
275
289
  const resizeObserver = new ResizeObserver(_ => this._sizeChanged = true);
276
290
  resizeObserver.observe(this.domElement);
277
- this._disposeCallbacks.push(resizeObserver.disconnect);
291
+ this._disposeCallbacks.push(() => resizeObserver.disconnect());
278
292
 
279
293
  const intersectionObserver = new IntersectionObserver(entries => { this._isVisible = entries[0].isIntersecting; });
280
294
  intersectionObserver.observe(this.domElement);
281
- this._disposeCallbacks.push(intersectionObserver.disconnect);
295
+ this._disposeCallbacks.push(() => intersectionObserver.disconnect());
282
296
  }
283
297
 
284
298
  private _disposeCallbacks: Function[] = [];
@@ -339,9 +353,12 @@ export class Context {
339
353
  cb();
340
354
  }
341
355
  catch (e) {
342
- console.error(e);
356
+ console.error("Error in on dispose callback:", e, cb);
343
357
  }
344
358
  }
359
+ if (this.domElement?.parentElement) {
360
+ this.domElement.parentElement.removeChild(this.domElement);
361
+ }
345
362
  }
346
363
 
347
364
  registerCoroutineUpdate(script: IComponent, coroutine: Generator, evt: FrameEvent): Generator {
@@ -721,6 +738,7 @@ export class Context {
721
738
  private onHandlePaused(): boolean {
722
739
  const paused = this.evaluatePaused();
723
740
  if (this._wasPaused !== paused) {
741
+ if(debugActive) console.log("Paused?", paused, "context:" + this.alias);
724
742
  for (let i = 0; i < this.scripts_pausedChanged.length; i++) {
725
743
  const script = this.scripts_pausedChanged[i];
726
744
  if (!script.activeAndEnabled) continue;
@@ -776,6 +794,7 @@ export class Context {
776
794
  const evts = this.coroutines[evt];
777
795
  for (let i = 0; i < evts.length; i++) {
778
796
  const evt = evts[i];
797
+ // TODO we might want to keep coroutines playing even if the component is disabled or inactive
779
798
  const remove = !evt.comp || evt.comp.destroyed || !evt.main || evt.comp["enabled"] === false;
780
799
  if (remove) {
781
800
  evts.splice(i, 1);
@@ -4,6 +4,13 @@ import { WebGLRenderTarget, WebGLRenderer, Vector3, Quaternion, Uniform, Texture
4
4
  import { CircularBuffer } from "./engine_utils";
5
5
 
6
6
 
7
+ export function slerp(vec: Vector3, end: Vector3, t: number) {
8
+ const len1 = vec.length();
9
+ const len2 = end.length();
10
+ const targetLen = Mathf.lerp(len1, len2, t);
11
+ return vec.lerp(end, t).normalize().multiplyScalar(targetLen);
12
+ }
13
+
7
14
  const flipYQuat: Quaternion = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI);
8
15
  export function lookAtInverse(obj: THREE.Object3D, target: Vector3) {
9
16
 
@@ -22,8 +22,8 @@ export interface UIDProvider {
22
22
 
23
23
  export declare interface INeedleEngineComponent extends HTMLElement {
24
24
  getAROverlayContainer(): HTMLElement;
25
- onEnterAR(session: THREE.XRSession, overlayContainer: HTMLElement);
26
- onExitAR(session: THREE.XRSession);
25
+ onEnterAR(session: XRSession, overlayContainer: HTMLElement);
26
+ onExitAR(session: XRSession);
27
27
  }
28
28
 
29
29
  export declare interface IGameObject extends Object3D {
@@ -84,7 +84,7 @@ export interface IComponent {
84
84
  earlyUpdate?(): void;
85
85
  update?(): void;
86
86
  lateUpdate?(): void;
87
- onBeforeRender?(frame: THREE.XRFrame | null): void;
87
+ onBeforeRender?(frame: XRFrame | null): void;
88
88
  onAfterRender?(): void;
89
89
 
90
90
  onCollisionEnter?(col: Collision);
@@ -53,15 +53,19 @@ export class NEEDLE_components implements GLTFLoaderPlugin {
53
53
  // the write node callback is called after user data is serialized
54
54
  // we could also traverse everything before export and remove components
55
55
  // but doing it like that we avoid traversing multiple times
56
- const originalFunction = writer.serializeUserData.bind(writer);
57
- this.writer = writer;
58
- writer.serializeUserData = (o, def) => {
59
- try {
60
- this.serializeUserData(o, def);
61
- originalFunction(o, def);
62
- }
63
- finally {
64
- this.afterSerializeUserData(o, def);
56
+ if("serializeUserData" in writer){
57
+ //@ts-ignore
58
+ const originalFunction = writer.serializeUserData.bind(writer);
59
+ this.writer = writer;
60
+ //@ts-ignore
61
+ writer.serializeUserData = (o, def) => {
62
+ try {
63
+ this.serializeUserData(o, def);
64
+ originalFunction(o, def);
65
+ }
66
+ finally {
67
+ this.afterSerializeUserData(o, def);
68
+ }
65
69
  }
66
70
  }
67
71
  return this;
@@ -39,6 +39,7 @@ export class Animator extends Behaviour {
39
39
  }
40
40
  if (val) {
41
41
  if (!(val instanceof AnimatorController)) {
42
+ if(debug) console.log("Assign animator controller", val, this);
42
43
  this._animatorController = new AnimatorController(val);
43
44
  }
44
45
  else this._animatorController = val;
@@ -119,6 +120,8 @@ export class Animator extends Behaviour {
119
120
  private _animatorController?: AnimatorController | null = null;
120
121
 
121
122
  awake() {
123
+ if (debug)
124
+ console.log("ANIMATOR", this.name, this);
122
125
  if (!this.gameObject) return;
123
126
  if (this.runtimeAnimatorController) {
124
127
  const clone = this.runtimeAnimatorController.clone();
@@ -129,9 +132,6 @@ export class Animator extends Behaviour {
129
132
  this.runtimeAnimatorController.SetSpeed(this.speed);
130
133
  this.runtimeAnimatorController.normalizedStartOffset = this.normalizedStartOffset;
131
134
  }
132
-
133
- if (debug)
134
- console.log("ANIMATOR", this.name, this);
135
135
  }
136
136
 
137
137
  onDisable() {
@@ -185,6 +185,11 @@ export class AnimatorController {
185
185
  private setStartTransition() {
186
186
  for (const layer of this.model.layers) {
187
187
  const sm = layer.stateMachine;
188
+ if (sm.defaultState === undefined) {
189
+ if (debug)
190
+ console.warn("AnimatorController default state is undefined, will assign state 0 as default", layer);
191
+ sm.defaultState = 0;
192
+ }
188
193
  const start = sm.states[sm.defaultState];
189
194
  this.transitionTo(start, 0, this.normalizedStartOffset);
190
195
  }
@@ -209,7 +214,7 @@ export class AnimatorController {
209
214
  // transition without exit time and without condition that transition to itself are ignored
210
215
  if (!transition.hasExitTime && transition.conditions.length <= 0) {
211
216
  // if (this._activeState && this.getState(transition.destinationState, currentLayer)?.hash === this._activeState.hash)
212
- continue;
217
+ continue;
213
218
  }
214
219
 
215
220
  let allConditionsAreMet = true;
@@ -242,8 +247,7 @@ export class AnimatorController {
242
247
  // if (transition.hasExitTime && transition.exitTime >= .9999)
243
248
  action.clampWhenFinished = true;
244
249
  // else action.clampWhenFinished = false;
245
- if (debug)
246
- {
250
+ if (debug) {
247
251
  console.log("transition to " + transition.destinationState, transition, normalizedTime, transition.exitTime, transition.hasExitTime);
248
252
  // console.log(action.time, transition.exitTime);
249
253
  }
@@ -288,9 +292,16 @@ export class AnimatorController {
288
292
 
289
293
  }
290
294
 
291
- private getState(state : State | number, layerIndex:number) : State | null {
295
+ private getState(state: State | number, layerIndex: number): State | null {
292
296
  if (typeof state === "number") {
293
- if (state == -1) state = this.model.layers[layerIndex].stateMachine.defaultState; // exit state -> entry state
297
+ if (state == -1) {
298
+ state = this.model.layers[layerIndex].stateMachine.defaultState; // exit state -> entry state
299
+ if (state === undefined) {
300
+ if (debug)
301
+ console.warn("AnimatorController default state is undefined: ", this.model, "Layer: " + layerIndex);
302
+ state = 0;
303
+ }
304
+ }
294
305
  state = this.model.layers[layerIndex].stateMachine.states[state];
295
306
  }
296
307
  return state;
@@ -303,7 +314,7 @@ export class AnimatorController {
303
314
  const layerIndex = 0;
304
315
 
305
316
  state = this.getState(state, layerIndex) as State;
306
-
317
+
307
318
  if (!state?.motion || !state.motion.clip) {
308
319
  // if(debug) console.warn("State has no clip or motion", state);
309
320
  return;
@@ -429,6 +440,15 @@ export class AnimatorController {
429
440
  for (let index = 0; index < sm.states.length; index++) {
430
441
  const state = sm.states[index];
431
442
 
443
+ // ensure we have a transitions array
444
+ if (!state.transitions) {
445
+ state.transitions = [];
446
+ }
447
+ for(const t of state.transitions) {
448
+ // can happen if conditions are empty in blender - the exporter seems to skip empty arrays
449
+ if(!t.conditions) t.conditions = [];
450
+ }
451
+
432
452
  // ensure we have a motion even if none was exported
433
453
  if (!state.motion) {
434
454
  state.motion = createMotion(state.name);
@@ -447,7 +467,7 @@ export class AnimatorController {
447
467
 
448
468
  // ensure we have a clip to blend to
449
469
  if (!state.motion.clip) {
450
- const clip = new AnimationClip();
470
+ const clip = new AnimationClip(undefined, undefined, []);
451
471
  state.motion.clip = clip;
452
472
  }
453
473
 
@@ -326,7 +326,7 @@ class Component implements IComponent, EventTarget {
326
326
  earlyUpdate?(): void;
327
327
  update?(): void;
328
328
  lateUpdate?(): void;
329
- onBeforeRender?(frame: THREE.XRFrame | null): void;
329
+ onBeforeRender?(frame: XRFrame | null): void;
330
330
  onAfterRender?(): void;
331
331
 
332
332
  onCollisionEnter?(col: Collision);
@@ -35,8 +35,8 @@ export interface IDragEventListener {
35
35
 
36
36
  export class DragControls extends Interactable implements IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler {
37
37
 
38
- private static _active: DragControls | null = null;
39
- public static get HasAnySelected(): boolean { return this._active !== null; }
38
+ private static _active: number = 0;
39
+ public static get HasAnySelected(): boolean { return this._active > 0; }
40
40
 
41
41
 
42
42
  public transformSelf: boolean = true;
@@ -106,20 +106,24 @@ export class DragControls extends Interactable implements IPointerDownHandler, I
106
106
  onPointerDown(args: PointerEventData) {
107
107
  if (!this.allowEdit(this.gameObject)) return;
108
108
  if (WebXR.IsInWebXR) return;
109
+ DragControls._active += 1;
109
110
  this._dragDelta.set(0, 0);
110
111
  this._didDrag = false;
111
112
  this._waitingForDragStart = args;
112
113
  args.StopPropagation();
113
- // if (this.orbit) this.orbit.enabled = false;
114
+ // disabling pointer controls here already, otherwise we get a few frames of movement event in orbit controls and this will rotate the camera sligthly AFTER drag controls dragging ends.
115
+ if (this.orbit) this.orbit.enabled = false;
114
116
  }
115
117
 
116
118
  onPointerUp(args: PointerEventData) {
117
119
  this._waitingForDragStart = null;
118
120
  if (!this.allowEdit(this.gameObject)) return;
121
+ if(DragControls._active > 0)
122
+ DragControls._active -= 1;
119
123
  if (WebXR.IsInWebXR) return;
120
124
  this.onDragEnd(args);
121
125
  args.StopPropagation();
122
- // if (this.orbit) this.orbit.enabled = true;
126
+ if (this.orbit) this.orbit.enabled = true;
123
127
  }
124
128
 
125
129
 
@@ -9,6 +9,7 @@ import { WebXR, WebXREvent } from "./WebXR";
9
9
  import { WebARSessionRoot } from "./WebARSessionRoot";
10
10
  import { ILight } from "../engine/engine_types";
11
11
  import { Mathf } from "../engine/engine_math";
12
+ import { isLocalNetwork } from "../engine/engine_networking_utils";
12
13
 
13
14
  // https://threejs.org/examples/webgl_shadowmap_csm.html
14
15
 
@@ -439,16 +440,20 @@ export class Light extends Behaviour implements ILight {
439
440
  private updateShadowSoftHard() {
440
441
  if (!this.light) return;
441
442
  if (this.shadows === LightShadows.Soft) {
442
- const radius = this.light.shadow.mapSize.width / 1024 * 5;
443
- const samples = Mathf.clamp(Math.round(radius), 2, 10);
444
- this.light.shadow.radius = radius;
445
- this.light.shadow.blurSamples = samples;
446
- if (isMobileDevice()) {
447
- this.light.shadow.radius *= .5;
448
- this.light.shadow.blurSamples = Math.floor(this.light.shadow.blurSamples * .5);
449
- }
450
- if (Light.allowChangingRendererShadowMapType)
451
- this.context.renderer.shadowMap.type = THREE.VSMShadowMap;
443
+ // const radius = this.light.shadow.mapSize.width / 1024 * 5;
444
+ // const samples = Mathf.clamp(Math.round(radius), 2, 10);
445
+ // this.light.shadow.radius = radius;
446
+ // this.light.shadow.blurSamples = samples;
447
+ // if (isMobileDevice()) {
448
+ // this.light.shadow.radius *= .5;
449
+ // this.light.shadow.blurSamples = Math.floor(this.light.shadow.blurSamples * .5);
450
+ // }
451
+ // if (Light.allowChangingRendererShadowMapType) {
452
+ // if(this.context.renderer.shadowMap.type !== THREE.VSMShadowMap){
453
+ // if(isLocalNetwork()) console.warn("Changing renderer shadow map type to VSMShadowMap because a light with soft shadows enabled was found (this will cause all shadow receivers to also cast shadows). If you don't want this behaviour either set the shadow type to hard or set Light.allowChangingRendererShadowMapType to false.", this);
454
+ // this.context.renderer.shadowMap.type = THREE.VSMShadowMap;
455
+ // }
456
+ // }
452
457
  }
453
458
  else {
454
459
  this.light.shadow.radius = 1;