Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot]
2026-05-12 11:02:07 +00:00
parent 0449f6b80a
commit f57d0de8ec
+39 -17
View File
@@ -499,30 +499,52 @@ const XRSession = () => {
<XROrigin /> <XROrigin />
{inXR ? ( {effectiveInXR ? (
<> <>
{/* In XR: hit-test placement → grab wrapper → model */} {/* In XR (or SimXR): grab wrapper → model. Skip hit-test in SimXR mode. */}
<XRHitTestPlacement {simXR ? (
placementMode={placementMode} <group position={[0, 1.0, -1.2]}>
snapToPlanes={snapToPlanes} <XRGrabbable
onPlace={() => { allowScale={allowScale}
setPlacementMode(false); onGrabStart={() => { if (placementMode) setPlacementMode(false); }}
toast.success('Modelo posicionado na superfície!'); >
}} <XRModel url={model.url} />
> </XRGrabbable>
<XRGrabbable </group>
allowScale={allowScale} ) : (
onGrabStart={() => { <XRHitTestPlacement
if (placementMode) setPlacementMode(false); placementMode={placementMode}
snapToPlanes={snapToPlanes}
onPlace={() => {
setPlacementMode(false);
toast.success('Modelo posicionado na superfície!');
}} }}
> >
<XRModel url={model.url} /> <XRGrabbable
</XRGrabbable> allowScale={allowScale}
</XRHitTestPlacement> onGrabStart={() => { if (placementMode) setPlacementMode(false); }}
>
<XRModel url={model.url} />
</XRGrabbable>
</XRHitTestPlacement>
)}
<XRMeasurementOverlay /> <XRMeasurementOverlay />
<ControllerFineTuning freeMove={freeMove} /> <ControllerFineTuning freeMove={freeMove} />
<XRDebugHud /> <XRDebugHud />
{/* DEVKIT: fake controllers visible in scene + keyboard driver */}
{devkit && simXR && <FakeControllers />}
{/* DEVKIT: orbit camera in SimXR so you can navigate around the model */}
{simXR && (
<OrbitControls
makeDefault
enableDamping
dampingFactor={0.1}
minDistance={0.05}
maxDistance={50}
target={[0, 1.0, -1.2]}
/>
)}
</> </>
) : ( ) : (
<> <>