decal drop bug fix

This commit is contained in:
2025-09-01 12:37:09 +05:30
parent 7d7100893c
commit 09c909c377
4 changed files with 7 additions and 6 deletions

View File

@@ -12,14 +12,14 @@ export const RenderAsset: React.FC<{ asset: AssetProp | DecalProp; index: number
src={asset.decalImage} src={asset.decalImage}
alt={asset.decalName} alt={asset.decalName}
className="asset-image" className="asset-image"
onPointerDown={() => onPointerDown={() => {
setDroppedDecal({ setDroppedDecal({
category: asset.category, category: asset.category,
decalName: asset.decalName, decalName: asset.decalName,
decalImage: asset.decalImage, decalImage: asset.decalImage,
decalId: asset.id, decalId: asset.id,
}) })
} }}
/> />
<div className="asset-name"> <div className="asset-name">
{asset.decalName {asset.decalName

View File

@@ -198,7 +198,7 @@ const SideBarRight: React.FC = () => {
}; };
return ( return (
<div className={`sidebar-right-wrapper ${toggleUIRight && (!isVersionSaved || activeModule !== "simulation") ? "open" : "closed"}`}> <div className={`sidebar-right-wrapper ${toggleUIRight && (!isVersionSaved || activeModule !== "simulation") ? "open" : "closed"}`} onPointerDown={(e) => e.stopPropagation()}>
<Header /> <Header />
{toggleUIRight && ( {toggleUIRight && (
<> <>

View File

@@ -16,7 +16,7 @@ function DecalCreator() {
const { wallStore, floorStore } = useSceneContext(); const { wallStore, floorStore } = useSceneContext();
const { addDecal: addDecalOnWall, getWallById } = wallStore(); const { addDecal: addDecalOnWall, getWallById } = wallStore();
const { addDecal: addDecalOnFloor, getFloorById } = floorStore(); const { addDecal: addDecalOnFloor, getFloorById } = floorStore();
const { droppedDecal } = useDroppedDecal(); const { droppedDecal, setDroppedDecal } = useDroppedDecal();
const { activeModule } = useModuleStore(); const { activeModule } = useModuleStore();
const { userId, organization } = getUserData(); const { userId, organization } = getUserData();
const { selectedVersionStore } = useVersionContext(); const { selectedVersionStore } = useVersionContext();
@@ -30,13 +30,13 @@ function DecalCreator() {
const onDrop = (event: DragEvent) => { const onDrop = (event: DragEvent) => {
if (droppedDecal) { if (droppedDecal) {
setDroppedDecal(null);
pointer.x = (event.clientX / window.innerWidth) * 2 - 1; pointer.x = (event.clientX / window.innerWidth) * 2 - 1;
pointer.y = -(event.clientY / window.innerHeight) * 2 + 1; pointer.y = -(event.clientY / window.innerHeight) * 2 + 1;
raycaster.setFromCamera(pointer, camera); raycaster.setFromCamera(pointer, camera);
const intersects = raycaster.intersectObjects(scene.children, true); const intersects = raycaster.intersectObjects(scene.children, true);
const wallIntersect = intersects.find(i => i.object.userData && i.object.userData.wallUuid); const wallIntersect = intersects.find(i => i.object.userData && i.object.userData.wallUuid);
const floorIntersect = intersects.find(i => i.object.userData && i.object.userData.floorUuid); const floorIntersect = intersects.find(i => i.object.userData && i.object.userData.floorUuid);
console.log('wallIntersect: ', wallIntersect);
if (wallIntersect) { if (wallIntersect) {
const wall = getWallById(wallIntersect.object.userData.wallUuid); const wall = getWallById(wallIntersect.object.userData.wallUuid);

View File

@@ -116,7 +116,7 @@ export function useDecalEventHandlers({
} }
}); });
const handlePointerUp = (e: PointerEvent) => { const handlePointerUp = () => {
if (controls) { if (controls) {
(controls as CameraControls).enabled = true; (controls as CameraControls).enabled = true;
} }
@@ -235,6 +235,7 @@ export function useDecalEventHandlers({
}; };
const handleDecalUp = (e: ThreeEvent<MouseEvent>) => { const handleDecalUp = (e: ThreeEvent<MouseEvent>) => {
e.stopPropagation();
if (visible && !toggleView && activeModule === 'builder') { if (visible && !toggleView && activeModule === 'builder') {
if (!decalDragState.isDragging && !selectedDecal && e.object.userData.decalUuid && toolMode === 'cursor') { if (!decalDragState.isDragging && !selectedDecal && e.object.userData.decalUuid && toolMode === 'cursor') {
setSelectedDecal({ decalMesh: e.object, decalData: decal }); setSelectedDecal({ decalMesh: e.object, decalData: decal });