import * as THREE from 'three'; import { Decal } from '@react-three/drei' import { useLoader } from '@react-three/fiber'; import { useToggleView } from '../../../store/builder/store'; import { useBuilderStore } from '../../../store/builder/useBuilderStore'; import defaultMaterial from '../../../assets/textures/floor/wall-tex.png'; import useModuleStore from '../../../store/useModuleStore'; function DecalInstance({ visible = true, decal, zPosition = decal.decalPosition[2] }: { visible?: boolean, decal: Decal, zPosition?: number }) { const { setSelectedWall, setSelectedFloor, selectedDecal, setSelectedDecal } = useBuilderStore(); const { togglView } = useToggleView(); const { activeModule } = useModuleStore(); const material = useLoader(THREE.TextureLoader, defaultMaterial); return ( { if (visible && !togglView && activeModule === 'builder') { if (e.object.userData.decalUuid) { e.stopPropagation(); setSelectedDecal(e.object); setSelectedWall(null); setSelectedFloor(null); } } }} onPointerMissed={() => { if (selectedDecal && selectedDecal.userData.decalUuid === decal.decalUuid) { setSelectedDecal(null); } }} > ) } export default DecalInstance