Skip to content

Commit d5f13aa

Browse files
committed
update image tracking example
1 parent 5dd3011 commit d5f13aa

2 files changed

Lines changed: 16 additions & 27 deletions

File tree

documentation/how-to-guides/scripting/image-tracking.md

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -67,28 +67,20 @@ export class OnImageFound extends Behaviour {
6767

6868
## Listening to the Image Tracking Event
6969

70-
The `WebXRImageTracking` component dispatches an `image-tracking` event every frame when images are being tracked. The event's `detail` contains an array of `WebXRTrackedImage` objects.
70+
The `WebXRImageTracking` component dispatches an `image-tracking` event every frame when images are being tracked. The event's `detail` contains a `WebXRImageTrackingEvent` with the tracked images array.
7171

7272
```ts
73-
import { Behaviour, WebXRImageTracking, WebXRTrackedImage } from "@needle-tools/engine";
73+
import { Behaviour, WebXRImageTracking } from "@needle-tools/engine";
7474

7575
export class ImageTrackingHandler extends Behaviour {
7676
onEnable() {
77-
// Get the WebXRImageTracking component in the scene
7877
const tracker = this.gameObject.getComponent(WebXRImageTracking);
79-
tracker?.addEventListener("image-tracking", this.onImageTracking);
80-
}
81-
82-
onDisable() {
83-
const tracker = this.gameObject.getComponent(WebXRImageTracking);
84-
tracker?.removeEventListener("image-tracking", this.onImageTracking);
85-
}
86-
87-
private onImageTracking = (event: CustomEvent) => {
88-
const trackedImages: WebXRTrackedImage[] = event.detail;
89-
for (const img of trackedImages) {
90-
console.log(img.url, img.state);
91-
}
78+
// The event is fully typed — event.detail.trackedImages is WebXRTrackedImage[]
79+
tracker?.addEventListener("image-tracking", event => {
80+
for (const img of event.detail.trackedImages) {
81+
console.log(img.url, img.state);
82+
}
83+
});
9284
}
9385
}
9486
```
@@ -100,16 +92,15 @@ export class ImageTrackingHandler extends Behaviour {
10092
Each `WebXRTrackedImage` gives you access to the 3D object assigned in the `WebXRImageTrackingModel` configuration:
10193

10294
```ts
103-
private onImageTracking = (event: CustomEvent) => {
104-
const trackedImages: WebXRTrackedImage[] = event.detail;
105-
for (const img of trackedImages) {
95+
tracker?.addEventListener("image-tracking", event => {
96+
for (const img of event.detail.trackedImages) {
10697
// Access the assigned AssetReference via the model configuration
10798
const obj = img.model.object;
10899

109100
// From Needle Engine 5.1+ you can also use the shorthand:
110101
// const obj = img.trackedModel;
111102
}
112-
}
103+
});
113104
```
114105

115106
| Property | Type | Description |
@@ -130,14 +121,13 @@ import { Vector3, Quaternion } from "three";
130121
const position = new Vector3();
131122
const rotation = new Quaternion();
132123

133-
private onImageTracking = (event: CustomEvent) => {
134-
const trackedImages: WebXRTrackedImage[] = event.detail;
135-
for (const img of trackedImages) {
124+
tracker?.addEventListener("image-tracking", event => {
125+
for (const img of event.detail.trackedImages) {
136126
img.getPosition(position);
137127
img.getQuaternion(rotation);
138128
console.log("Position:", position, "Rotation:", rotation);
139129
}
140-
}
130+
});
141131
```
142132

143133
---

documentation/reference/faq.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -775,9 +775,8 @@ For AR on iOS, Needle Engine supports WebXR via [App Clips (Needle Go)](/docs/ex
775775
Each `WebXRTrackedImage` received from the `image-tracking` event gives you access to the assigned 3D object via `img.model.object`:
776776

777777
```ts
778-
tracker.addEventListener("image-tracking", (event: CustomEvent) => {
779-
const trackedImages: WebXRTrackedImage[] = event.detail;
780-
for (const img of trackedImages) {
778+
tracker.addEventListener("image-tracking", event => {
779+
for (const img of event.detail.trackedImages) {
781780
// Access the assigned AssetReference
782781
const obj = img.model.object;
783782
// From Needle Engine 5.1+ you can also use: img.trackedModel

0 commit comments

Comments
 (0)