Skip to content

Commit 5c132e8

Browse files
committed
feat: support interactableDescendants to shortcut traversing the scene graph when interacting with instanced UIs for example
1 parent f85f45e commit 5c132e8

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

packages/pointer-events/src/intersections/utils.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,15 @@ export function intersectPointerEventTargets(
8080
}
8181
}
8282

83-
const childrenLength = object.children.length
84-
for (let i = 0; i < childrenLength; i++) {
83+
if (object.intersectChildren === false) {
84+
return
85+
}
86+
87+
const descendants = object.interactableDescendants ?? object.children
88+
const descendantsLength = descendants.length
89+
for (let i = 0; i < descendantsLength; i++) {
8590
intersectPointerEventTargets(
86-
object.children[i],
91+
descendants[i],
8792
pointers,
8893
hasListener,
8994
pointerEvents,

packages/pointer-events/src/pointer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ declare module 'three' {
8989
setPointerCapture(pointerId: number): void
9090
releasePointerCapture(pointerId: number): void
9191
hasPointerCapture(pointerId: number): boolean
92+
93+
intersectChildren?: boolean
94+
interactableDescendants?: Array<Object3D>
9295
}
9396
}
9497

0 commit comments

Comments
 (0)