@needle-tools/engine 3.3.0-alpha → 3.4.0-alpha

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 +10 -0
  2. package/dist/needle-engine.js +26116 -24881
  3. package/dist/needle-engine.min.js +384 -383
  4. package/dist/needle-engine.umd.cjs +372 -371
  5. package/lib/engine/codegen/register_types.js +50 -2
  6. package/lib/engine/codegen/register_types.js.map +1 -1
  7. package/lib/engine/engine_gameobject.d.ts +1 -1
  8. package/lib/engine/engine_gameobject.js +4 -2
  9. package/lib/engine/engine_gameobject.js.map +1 -1
  10. package/lib/engine/engine_three_utils.js +2 -2
  11. package/lib/engine/engine_three_utils.js.map +1 -1
  12. package/lib/engine-components/Animation.js +4 -0
  13. package/lib/engine-components/Animation.js.map +1 -1
  14. package/lib/engine-components/codegen/components.d.ts +25 -1
  15. package/lib/engine-components/codegen/components.js +25 -1
  16. package/lib/engine-components/codegen/components.js.map +1 -1
  17. package/lib/engine-components/export/usdz/Extension.d.ts +4 -4
  18. package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +86 -0
  19. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +830 -0
  20. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -0
  21. package/lib/engine-components/export/usdz/USDZExporter.d.ts +6 -3
  22. package/lib/engine-components/export/usdz/USDZExporter.js +34 -11
  23. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  24. package/lib/engine-components/export/usdz/extensions/Animation.d.ts +15 -15
  25. package/lib/engine-components/export/usdz/extensions/Animation.js +24 -29
  26. package/lib/engine-components/export/usdz/extensions/Animation.js.map +1 -1
  27. package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -0
  28. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +7 -0
  29. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js.map +1 -0
  30. package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +47 -0
  31. package/lib/engine-components/export/usdz/extensions/USDZText.js +114 -0
  32. package/lib/engine-components/export/usdz/extensions/USDZText.js.map +1 -0
  33. package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -0
  34. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +89 -0
  35. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js.map +1 -0
  36. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +23 -0
  37. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +114 -0
  38. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js.map +1 -0
  39. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +96 -0
  40. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +421 -0
  41. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -0
  42. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +111 -0
  43. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +409 -0
  44. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js.map +1 -0
  45. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  46. package/lib/engine-components/ui/BaseUIComponent.d.ts +2 -0
  47. package/lib/engine-components/ui/BaseUIComponent.js +6 -0
  48. package/lib/engine-components/ui/BaseUIComponent.js.map +1 -1
  49. package/lib/engine-components/ui/Canvas.d.ts +11 -1
  50. package/lib/engine-components/ui/Canvas.js +72 -3
  51. package/lib/engine-components/ui/Canvas.js.map +1 -1
  52. package/lib/engine-components/ui/Graphic.js.map +1 -1
  53. package/lib/engine-components/ui/Image.js +4 -4
  54. package/lib/engine-components/ui/Image.js.map +1 -1
  55. package/lib/engine-components/ui/Interfaces.d.ts +11 -0
  56. package/lib/engine-components/ui/Interfaces.js +11 -0
  57. package/lib/engine-components/ui/Interfaces.js.map +1 -1
  58. package/lib/engine-components/ui/Layout.d.ts +65 -3
  59. package/lib/engine-components/ui/Layout.js +304 -3
  60. package/lib/engine-components/ui/Layout.js.map +1 -1
  61. package/lib/engine-components/ui/RectTransform.d.ts +8 -7
  62. package/lib/engine-components/ui/RectTransform.js +63 -35
  63. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  64. package/lib/engine-components/utils/LookAt.d.ts +7 -1
  65. package/lib/engine-components/utils/LookAt.js +43 -6
  66. package/lib/engine-components/utils/LookAt.js.map +1 -1
  67. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +4 -3
  68. package/lib/engine-components/webxr/WebXRImageTracking.js +81 -25
  69. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  70. package/lib/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +1 -1
  72. package/plugins/vite/reload.js +13 -2
  73. package/src/engine/codegen/register_types.js +52 -4
  74. package/src/engine/engine_gameobject.ts +3 -2
  75. package/src/engine/engine_three_utils.ts +2 -2
  76. package/src/engine-components/Animation.ts +4 -0
  77. package/src/engine-components/codegen/components.ts +25 -1
  78. package/src/engine-components/export/usdz/Extension.ts +4 -5
  79. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1280 -0
  80. package/src/engine-components/export/usdz/USDZExporter.ts +39 -17
  81. package/src/engine-components/export/usdz/extensions/Animation.ts +37 -45
  82. package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +10 -0
  83. package/src/engine-components/export/usdz/extensions/USDZText.ts +142 -0
  84. package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -0
  85. package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +181 -0
  86. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +503 -0
  87. package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +459 -0
  88. package/src/engine-components/postprocessing/PostProcessingHandler.ts +1 -1
  89. package/src/engine-components/ui/BaseUIComponent.ts +7 -1
  90. package/src/engine-components/ui/Canvas.ts +80 -5
  91. package/src/engine-components/ui/Graphic.ts +2 -0
  92. package/src/engine-components/ui/Image.ts +3 -3
  93. package/src/engine-components/ui/Interfaces.ts +30 -6
  94. package/src/engine-components/ui/Layout.ts +303 -4
  95. package/src/engine-components/ui/RectTransform.ts +65 -40
  96. package/src/engine-components/utils/LookAt.ts +60 -7
  97. package/src/engine-components/webxr/WebXRImageTracking.ts +100 -27
  98. package/lib/engine-components/export/usdz/types.d.ts +0 -34
  99. package/lib/engine-components/export/usdz/types.js +0 -2
  100. package/lib/engine-components/export/usdz/types.js.map +0 -1
  101. package/src/engine-components/export/usdz/types.ts +0 -39
@@ -6,18 +6,49 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { serializable } from "../../engine/engine_serialization";
8
8
  import { Behaviour } from "../Component";
9
- import { Object3D } from "three";
10
- import { getWorldPosition, lookAtInverse } from "../../engine/engine_three_utils";
9
+ import { Matrix4, Object3D, Quaternion, Vector3 } from "three";
10
+ import { getWorldPosition, getWorldQuaternion, setWorldQuaternion } from "../../engine/engine_three_utils";
11
+ import { USDObject } from "../../engine-components/export/usdz/ThreeUSDZExporter";
12
+ import { ActionBuilder, BehaviorModel, TriggerBuilder, USDVec3 } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder";
11
13
  export class LookAt extends Behaviour {
12
14
  target;
13
15
  invertForward = false;
16
+ keepUpDirection = true;
17
+ copyTargetRotation = false;
18
+ static flipYQuat = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI);
14
19
  onBeforeRender() {
15
- if (!this.target)
20
+ let target = this.target;
21
+ if (!target)
22
+ target = this.context.mainCamera;
23
+ if (!target)
16
24
  return;
17
- if (!this.invertForward)
18
- this.gameObject.lookAt(getWorldPosition(this.target));
25
+ const lookTarget = getWorldPosition(target);
26
+ const lookFrom = getWorldPosition(this.gameObject);
27
+ if (this.keepUpDirection)
28
+ lookTarget.y = lookFrom.y;
29
+ if (this.copyTargetRotation)
30
+ setWorldQuaternion(this.gameObject, getWorldQuaternion(target));
19
31
  else
20
- lookAtInverse(this.gameObject, getWorldPosition(this.target));
32
+ this.gameObject.lookAt(lookTarget);
33
+ if (this.invertForward)
34
+ this.gameObject.quaternion.multiply(LookAt.flipYQuat);
35
+ }
36
+ createBehaviours(ext, model, _context) {
37
+ if (model.uuid === this.gameObject.uuid) {
38
+ let alignmentTarget = model;
39
+ // not entirely sure why we need to do this - looks like LookAt with up vector doesn't work properly in
40
+ // QuickLook, so we need to introduce an empty parent and rotate the model by 90° around Y
41
+ if (this.keepUpDirection) {
42
+ const parent = USDObject.createEmptyParent(model);
43
+ alignmentTarget = parent;
44
+ // rotate by 90° - counter-rotation on the parent makes sure
45
+ // that without Preliminary Behaviours it still looks right
46
+ parent.matrix.multiply(new Matrix4().makeRotationZ(Math.PI / 2));
47
+ model.matrix.multiply(new Matrix4().makeRotationZ(-Math.PI / 2));
48
+ }
49
+ const lookAt = new BehaviorModel("lookat " + this.name, TriggerBuilder.sceneStartTrigger(), ActionBuilder.lookAtCameraAction(alignmentTarget, undefined, this.invertForward ? USDVec3.back : USDVec3.forward, this.keepUpDirection ? USDVec3.up : USDVec3.zero));
50
+ ext.addBehavior(lookAt);
51
+ }
21
52
  }
22
53
  }
23
54
  __decorate([
@@ -26,4 +57,10 @@ __decorate([
26
57
  __decorate([
27
58
  serializable()
28
59
  ], LookAt.prototype, "invertForward", void 0);
60
+ __decorate([
61
+ serializable()
62
+ ], LookAt.prototype, "keepUpDirection", void 0);
63
+ __decorate([
64
+ serializable()
65
+ ], LookAt.prototype, "copyTargetRotation", void 0);
29
66
  //# sourceMappingURL=LookAt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LookAt.js","sourceRoot":"","sources":["../../../src/engine-components/utils/LookAt.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAElF,MAAM,OAAO,MAAO,SAAQ,SAAS;IAGjC,MAAM,CAAY;IAGlB,aAAa,GAAY,KAAK,CAAC;IAE/B,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,IAAI,CAAC,aAAa;YACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;;YAEvD,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;IACvE,CAAC;CACJ;AAZG;IADC,YAAY,CAAC,QAAQ,CAAC;sCACL;AAGlB;IADC,YAAY,EAAE;6CACgB"}
1
+ {"version":3,"file":"LookAt.js","sourceRoot":"","sources":["../../../src/engine-components/utils/LookAt.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /// <reference types="webxr" />
2
1
  import { Behaviour } from "../Component";
3
2
  import { Object3D, Quaternion, Vector3 } from "three";
4
3
  import { AssetReference } from "../../engine/engine_addressables";
@@ -13,7 +12,8 @@ export declare class WebXRTrackedImage {
13
12
  getPosition(vec: Vector3): Vector3;
14
13
  /** Copy the image rotation to a quaternion */
15
14
  getQuaternion(quat: Quaternion): Quaternion;
16
- applyToObject(object: Object3D): void;
15
+ private static y180;
16
+ applyToObject(object: Object3D, t01?: number | undefined): void;
17
17
  private static _positionBuffer;
18
18
  private static _rotationBuffer;
19
19
  private _position;
@@ -37,11 +37,12 @@ export declare class WebXRImageTracking extends Behaviour {
37
37
  private readonly trackedImageIndexMap;
38
38
  private static _imageElements;
39
39
  awake(): void;
40
+ private xr;
40
41
  onEnable(): void;
41
42
  onDisable(): void;
42
43
  private onModifyAROptions;
43
44
  private imageToObjectMap;
44
45
  private onImageTrackingUpdate;
45
46
  private onXRStarted;
46
- onBeforeRender(frame: XRFrame | null): void;
47
+ private onXRUpdate;
47
48
  }
@@ -4,12 +4,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { WebXR } from "./WebXR";
7
+ import { WebXR, WebXREvent } from "./WebXR";
8
8
  import { serializable } from "../../engine/engine_serialization";
9
9
  import { Behaviour, GameObject } from "../Component";
10
10
  import { Quaternion, Vector3 } from "three";
11
11
  import { CircularBuffer, getParam } from "../../engine/engine_utils";
12
12
  import { AssetReference } from "../../engine/engine_addressables";
13
+ import { showBalloonWarning } from "../../engine/debug";
14
+ import { USDZExporter } from "../../engine-components/export/usdz/USDZExporter";
15
+ import { imageToCanvas } from "../../engine-components/export/usdz/ThreeUSDZExporter";
13
16
  // https://github.com/immersive-web/marker-tracking/blob/main/explainer.md
14
17
  const debug = getParam("debugimagetracking");
15
18
  export class WebXRTrackedImage {
@@ -19,15 +22,6 @@ export class WebXRTrackedImage {
19
22
  get model() { return this._trackedImage; }
20
23
  measuredSize;
21
24
  state;
22
- // private _matrix: Matrix4 | null = null;
23
- // private get matrix(): Matrix4 {
24
- // if (!this._matrix) {
25
- // // this._matrix = WebXRTrackedImage._matrixBuffer.get();
26
- // // const matrix = this._pose.transform.matrix;
27
- // // this._matrix.fromArray(matrix);
28
- // }
29
- // return this._matrix!;
30
- // }
31
25
  /** Copy the image position to a vector */
32
26
  getPosition(vec) {
33
27
  this.ensureTransformData();
@@ -40,12 +34,22 @@ export class WebXRTrackedImage {
40
34
  quat.copy(this._rotation);
41
35
  return quat;
42
36
  }
43
- applyToObject(object) {
37
+ static y180 = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI);
38
+ applyToObject(object, t01 = undefined) {
44
39
  this.ensureTransformData();
45
- object.position.copy(this._position);
46
- object.quaternion.copy(this._rotation);
40
+ // check if position/_position or rotation/_rotation changed more than just a little bit
41
+ const haveChanged = object.position.distanceToSquared(this._position) > 0.05 || object.quaternion.angleTo(this._rotation) > 0.05;
42
+ if (t01 === undefined || t01 >= 1 || haveChanged) {
43
+ object.position.copy(this._position);
44
+ object.quaternion.copy(this._rotation);
45
+ }
46
+ else {
47
+ t01 = Math.max(0, Math.min(1, t01));
48
+ object.position.lerp(this._position, t01);
49
+ object.quaternion.slerp(this._rotation, t01);
50
+ }
51
+ object.quaternion.multiply(WebXRTrackedImage.y180);
47
52
  }
48
- // private static _matrixBuffer: CircularBuffer<Matrix4> = new CircularBuffer(() => new Matrix4(), 20);
49
53
  static _positionBuffer = new CircularBuffer(() => new Vector3(), 20);
50
54
  static _rotationBuffer = new CircularBuffer(() => new Quaternion(), 20);
51
55
  _position;
@@ -55,8 +59,12 @@ export class WebXRTrackedImage {
55
59
  this._position = WebXRTrackedImage._positionBuffer.get();
56
60
  this._rotation = WebXRTrackedImage._rotationBuffer.get();
57
61
  const t = this._pose.transform;
58
- this._position.set(-t.position.x, t.position.y, -t.position.z);
59
- this._rotation.set(-t.orientation.x, t.orientation.y, -t.orientation.z, t.orientation.w);
62
+ // when parented to the world, we need to flip data here
63
+ //this._position.set(-t.position.x, t.position.y, -t.position.z);
64
+ // this._rotation.set(-t.orientation.x, t.orientation.y, -t.orientation.z, t.orientation.w);
65
+ // for some reason when parented to the XRRig, we need the original data
66
+ this._position.set(t.position.x, t.position.y, t.position.z);
67
+ this._rotation.set(t.orientation.x, t.orientation.y, t.orientation.z, t.orientation.w);
60
68
  }
61
69
  }
62
70
  _trackingComponent;
@@ -95,6 +103,26 @@ __decorate([
95
103
  __decorate([
96
104
  serializable()
97
105
  ], WebXRImageTrackingModel.prototype, "imageDoesNotMove", void 0);
106
+ class ImageTrackingExtension {
107
+ get extensionName() { return "image-tracking"; }
108
+ filename;
109
+ widthInMeters;
110
+ imageData;
111
+ constructor(filename, imageData, widthInMeters) {
112
+ this.filename = filename;
113
+ this.imageData = imageData;
114
+ this.widthInMeters = widthInMeters;
115
+ }
116
+ onAfterHierarchy(_context, writer) {
117
+ writer.beginBlock(`def Preliminary_ReferenceImage "AnchoringReferenceImage"`);
118
+ writer.appendLine(`uniform asset image = @tracker/` + this.filename + `@`);
119
+ writer.appendLine(`uniform double physicalWidth = ` + (this.widthInMeters * 100).toFixed(8));
120
+ writer.closeBlock();
121
+ }
122
+ onAfterSerialize(context) {
123
+ context.files['tracker/' + this.filename] = this.imageData;
124
+ }
125
+ }
98
126
  export class WebXRImageTracking extends Behaviour {
99
127
  trackedImages;
100
128
  trackedImageIndexMap = new Map();
@@ -112,19 +140,35 @@ export class WebXRImageTracking extends Behaviour {
112
140
  imageElement.addEventListener("load", async () => {
113
141
  const img = await createImageBitmap(imageElement);
114
142
  WebXRImageTracking._imageElements.set(url, img);
143
+ // read back Uint8Array to use in USDZ -
144
+ // TODO better would be to do that once we actually need it
145
+ const canvas = await imageToCanvas(img);
146
+ if (canvas) {
147
+ const blob = await new Promise(resolve => canvas.toBlob(resolve, 'image/png', 1));
148
+ const arrayBuffer = await blob.arrayBuffer();
149
+ const exporter = GameObject.findObjectOfType(USDZExporter);
150
+ if (exporter) {
151
+ exporter.extensions.push(new ImageTrackingExtension("marker.png", new Uint8Array(arrayBuffer), this.trackedImages[0].widthInMeters));
152
+ exporter.anchoringType = "image";
153
+ }
154
+ }
115
155
  });
116
156
  }
117
157
  }
118
158
  }
119
159
  }
160
+ xr = null;
120
161
  onEnable() {
121
- WebXR.addEventListener("modify-ar-options", this.onModifyAROptions);
122
- WebXR.addEventListener("xrStarted", this.onXRStarted);
162
+ this.xr = GameObject.findObjectOfType(WebXR);
163
+ WebXR.addEventListener(WebXREvent.ModifyAROptions, this.onModifyAROptions);
164
+ WebXR.addEventListener(WebXREvent.XRStarted, this.onXRStarted);
165
+ WebXR.addEventListener(WebXREvent.XRUpdate, this.onXRUpdate);
123
166
  this.addEventListener("image-tracking", this.onImageTrackingUpdate);
124
167
  }
125
168
  onDisable() {
126
- WebXR.removeEventListener("modify-ar-options", this.onModifyAROptions);
127
- WebXR.removeEventListener("xrStarted", this.onXRStarted);
169
+ WebXR.removeEventListener(WebXREvent.ModifyAROptions, this.onModifyAROptions);
170
+ WebXR.removeEventListener(WebXREvent.XRStarted, this.onXRStarted);
171
+ WebXR.removeEventListener(WebXREvent.XRUpdate, this.onXRUpdate);
128
172
  this.removeEventListener("image-tracking", this.onImageTrackingUpdate);
129
173
  }
130
174
  onModifyAROptions = (event) => {
@@ -179,8 +223,10 @@ export class WebXRImageTracking extends Behaviour {
179
223
  asset = GameObject.instantiate(asset);
180
224
  if (asset) {
181
225
  trackedData.object = asset;
182
- if (asset !== this.gameObject)
183
- this.gameObject.add(asset);
226
+ // make sure to parent to the WebXR.rig
227
+ if (this.xr) {
228
+ this.xr.Rig.add(asset);
229
+ }
184
230
  image.applyToObject(asset);
185
231
  if (!asset.activeSelf)
186
232
  GameObject.setActive(asset, true);
@@ -195,6 +241,9 @@ export class WebXRImageTracking extends Behaviour {
195
241
  continue;
196
242
  if (!trackedData.object)
197
243
  continue;
244
+ if (this.xr) {
245
+ this.xr.Rig.add(trackedData.object);
246
+ }
198
247
  image.applyToObject(trackedData.object);
199
248
  if (!trackedData.object.activeSelf)
200
249
  GameObject.setActive(trackedData.object, true);
@@ -207,9 +256,16 @@ export class WebXRImageTracking extends Behaviour {
207
256
  trackedData.frames = 0;
208
257
  }
209
258
  };
210
- onBeforeRender(frame) {
259
+ onXRUpdate = (evt) => {
260
+ const frame = evt.frame;
261
+ if (!frame)
262
+ return;
263
+ if (frame.session && !("getImageTrackingResults" in frame)) {
264
+ showBalloonWarning("Image tracking is currently not supported on this device. On Chrome for Android, you can enable the <a href=\"chrome://flags/#webxr-incubations\">chrome://flags/#webxr-incubations</a> flag.");
265
+ return;
266
+ }
211
267
  //@ts-ignore
212
- if (frame?.session && typeof frame.getImageTrackingResults === "function") {
268
+ if (frame.session && typeof frame.getImageTrackingResults === "function") {
213
269
  //@ts-ignore
214
270
  const results = frame.getImageTrackingResults();
215
271
  if (results.length) {
@@ -242,7 +298,7 @@ export class WebXRImageTracking extends Behaviour {
242
298
  }
243
299
  }
244
300
  }
245
- }
301
+ };
246
302
  }
247
303
  __decorate([
248
304
  serializable(WebXRImageTrackingModel)
@@ -1 +1 @@
1
- {"version":3,"file":"WebXRImageTracking.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXRImageTracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebXRImageTracking.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXRImageTracking.ts"],"names":[],"mappings":"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"}