decal drop bug fix
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 && (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 });
|
||||||
|
|||||||
Reference in New Issue
Block a user