Skip to content

Commit 577ca70

Browse files
committed
feat: add disabled prop to xr origin component
1 parent 4ec7f30 commit 577ca70

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

packages/react/xr/src/origin.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,38 @@ import { Group } from 'three'
44
import { xrSpaceContext } from './contexts.js'
55
import { useXR } from './xr.js'
66

7+
export type XROriginProps = ThreeElements['group'] & {
8+
disabled?: boolean
9+
}
10+
711
/**
812
* Component for setting the origin of the player (their feet)
913
*
1014
* @param props
1115
* Accepts the same props as a ThreeJs [Group](https://threejs.org/docs/#api/en/objects/Group)
1216
* @function
1317
*/
14-
export const XROrigin = forwardRef<Group, ThreeElements['group']>(({ children, ...props }, ref) => {
18+
export const XROrigin = forwardRef<Group, XROriginProps>(({ children, disabled, ...props }, ref) => {
1519
const xrCamera = useThree((s) => s.gl.xr.getCamera())
1620
const internalRef = useRef<Group>(null)
17-
useImperativeHandle(ref, () => internalRef.current!, [])
1821
const referenceSpace = useXR((xr) => xr.originReferenceSpace)
22+
23+
useImperativeHandle(ref, () => internalRef.current!, [])
24+
1925
useEffect(() => {
2026
const group = internalRef.current
21-
if (group == null) {
27+
if (!group || disabled) {
2228
return
2329
}
30+
2431
group.add(xrCamera)
32+
2533
return () => void group.remove(xrCamera)
26-
}, [xrCamera])
34+
}, [disabled, xrCamera])
35+
2736
return (
2837
<group ref={internalRef} {...props}>
29-
{referenceSpace != null && <xrSpaceContext.Provider value={referenceSpace}>{children}</xrSpaceContext.Provider>}
38+
{referenceSpace && <xrSpaceContext.Provider value={referenceSpace}>{children}</xrSpaceContext.Provider>}
3039
</group>
3140
)
3241
})

0 commit comments

Comments
 (0)