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 />
{inXR ? (
{effectiveInXR ? (
<>
{/* In XR: hit-test placement → grab wrapper → model */}
<XRHitTestPlacement
placementMode={placementMode}
snapToPlanes={snapToPlanes}
onPlace={() => {
setPlacementMode(false);
toast.success('Modelo posicionado na superfície!');
}}
>
<XRGrabbable
allowScale={allowScale}
onGrabStart={() => {
if (placementMode) setPlacementMode(false);
{/* In XR (or SimXR): grab wrapper → model. Skip hit-test in SimXR mode. */}
{simXR ? (
<group position={[0, 1.0, -1.2]}>
<XRGrabbable
allowScale={allowScale}
onGrabStart={() => { if (placementMode) setPlacementMode(false); }}
>
<XRModel url={model.url} />
</XRGrabbable>
</group>
) : (
<XRHitTestPlacement
placementMode={placementMode}
snapToPlanes={snapToPlanes}
onPlace={() => {
setPlacementMode(false);
toast.success('Modelo posicionado na superfície!');
}}
>
<XRModel url={model.url} />
</XRGrabbable>
</XRHitTestPlacement>
<XRGrabbable
allowScale={allowScale}
onGrabStart={() => { if (placementMode) setPlacementMode(false); }}
>
<XRModel url={model.url} />
</XRGrabbable>
</XRHitTestPlacement>
)}
<XRMeasurementOverlay />
<ControllerFineTuning freeMove={freeMove} />
<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]}
/>
)}
</>
) : (
<>