I'm trying to recreate this three.js attach-to-ray demo in @react-three/xr and have come up against a very strange hiccup that I can't figure out.
Using onSelectEnd
to attach the mesh works just fine, but once it's attached onSelectEnd
will no longer fire. I've tried using doing it "manually" with add()
, tried saving the object data in a different spot in userData, but ... nada.
I'm still very new with @react-three/xr so I'm sure it's something obvious, but I'd love a hand if anyone has a moment. Here's the big giving me trouble, here's a link to the full demo.
<Interactive
ref={groupRef}
onSelectStart={(e) => {
console.log("Attach! Works!");
controlRef.current = e.target.controller;
const intersections = getIntersections(controlRef.current);
if (intersections.length > 0) {
const intersection = intersections[0];
const object = intersection.object;
controlRef.current.attach(object); // this causes onSelectEnd to stop firing
controlRef.current.userData.selected = object;
}
onSelectStart?.(e);
}}
onSelectEnd={(e) => {
console.log("Detach! Please!");
const object = controlRef.current.userData.selected;
if (object) {
controlRef.current.detach();
}
onSelectEnd?.(e);
}}
{...rest}
>
{children}
</Interactive>;