// import { useEffect } from "react"; // import { // useObjectPosition, // useObjectRotation, // useSelectedWallItem, // useSocketStore, // useWallItems, // useSelectedItem, // useToolMode, // } from "../../../store/builder/store"; // import { Csg } from "../csg/csg"; // import * as Types from "../../../types/world/worldTypes"; // import * as CONSTANTS from "../../../types/world/worldConstants"; // import * as THREE from "three"; // import { useThree } from "@react-three/fiber"; // import handleMeshMissed from "../eventFunctions/handleMeshMissed"; // import DeleteWallItems from "../geomentries/walls/deleteWallItems"; // import loadInitialWallItems from "../IntialLoad/loadInitialWallItems"; // import AddWallItems from "../geomentries/walls/addWallItems"; // import useModuleStore from "../../../store/useModuleStore"; // import { useParams } from "react-router-dom"; // import { getUserData } from "../../../functions/getUserData"; // import { useVersionContext } from "../version/versionContext"; // const WallItemsGroup = ({ // currentWallItem, // hoveredDeletableWallItem, // selectedItemsIndex, // setSelectedItemsIndex, // CSGGroup, // }: any) => { // const state = useThree(); // const { socket } = useSocketStore(); // const { pointer, camera, raycaster } = state; // const { toolMode } = useToolMode(); // const { wallItems, setWallItems } = useWallItems(); // const { setObjectPosition } = useObjectPosition(); // const { setObjectRotation } = useObjectRotation(); // const { setSelectedWallItem } = useSelectedWallItem(); // const { activeModule } = useModuleStore(); // const { selectedItem } = useSelectedItem(); // const { selectedVersionStore } = useVersionContext(); // const { selectedVersion } = selectedVersionStore(); // const { projectId } = useParams(); // const { userId, organization } = getUserData(); // useEffect(() => { // // Load Wall Items from the backend // if (!projectId || !selectedVersion) return; // loadInitialWallItems(setWallItems, projectId, selectedVersion?.versionId); // }, [selectedVersion?.versionId]); // ////////// Update the Position value changes in the selected item ////////// // useEffect(() => { // const canvasElement = state.gl.domElement; // function handlePointerMove(e: any) { // if (selectedItemsIndex !== null && toolMode === 'cursor' && e.buttons === 1) { // const Raycaster = state.raycaster; // const intersects = Raycaster.intersectObjects(CSGGroup.current?.children[0].children!, true); // const Object = intersects.find((child) => child.object.name.includes("WallRaycastReference")); // if (Object) { // (state.controls as any)!.enabled = false; // setWallItems((prevItems: any) => { // const updatedItems = [...prevItems]; // let position: [number, number, number] = [0, 0, 0]; // if (updatedItems[selectedItemsIndex].type === "fixed-move") { // position = [ // Object!.point.x, // Math.floor(Object!.point.y / CONSTANTS.wallConfig.height) * // CONSTANTS.wallConfig.height, // Object!.point.z, // ]; // } else if (updatedItems[selectedItemsIndex].type === "free-move") { // position = [Object!.point.x, Object!.point.y, Object!.point.z]; // } // requestAnimationFrame(() => { // setObjectPosition(new THREE.Vector3(...position)); // setObjectRotation({ // x: THREE.MathUtils.radToDeg(Object!.object.rotation.x), // y: THREE.MathUtils.radToDeg(Object!.object.rotation.y), // z: THREE.MathUtils.radToDeg(Object!.object.rotation.z), // }); // }); // updatedItems[selectedItemsIndex] = { // ...updatedItems[selectedItemsIndex], // position: position, // quaternion: Object!.object.quaternion.clone() as Types.QuaternionType, // }; // return updatedItems; // }); // } // } // } // async function handlePointerUp() { // const Raycaster = state.raycaster; // const intersects = Raycaster.intersectObjects( // CSGGroup.current?.children[0].children!, // true // ); // const Object = intersects.find((child) => // child.object.name.includes("WallRaycastReference") // ); // if (Object) { // if (selectedItemsIndex !== null) { // let currentItem: any = null; // setWallItems((prevItems: any) => { // const updatedItems = [...prevItems]; // const WallItemsForStorage = updatedItems.map((item) => { // const { model, ...rest } = item; // return { // ...rest, // modelUuid: model?.uuid, // }; // }); // currentItem = updatedItems[selectedItemsIndex]; // localStorage.setItem("WallItems", JSON.stringify(WallItemsForStorage)); // return updatedItems; // }); // setTimeout(async () => { // //REST // // await setWallItem( // // organization, // // currentItem?.model?.uuid, // // currentItem.modelName, // // currentItem.assetId, // // currentItem.type!, // // currentItem.csgposition!, // // currentItem.csgscale!, // // currentItem.position, // // currentItem.quaternion, // // currentItem.scale!, // // ) // //SOCKET // const data = { // organization, // modelUuid: currentItem.model?.uuid!, // assetId: currentItem.assetId, // modelName: currentItem.modelName!, // type: currentItem.type!, // csgposition: currentItem.csgposition!, // csgscale: currentItem.csgscale!, // position: currentItem.position!, // quaternion: currentItem.quaternion, // scale: currentItem.scale!, // socketId: socket.id, // versionId: selectedVersion?.versionId || '', // projectId, // userId // }; // // console.log('data: ', data); // socket.emit("v1:wallItems:set", data); // }, 0); // (state.controls as any)!.enabled = true; // } // } // } // canvasElement.addEventListener("pointermove", handlePointerMove); // canvasElement.addEventListener("pointerup", handlePointerUp); // return () => { // canvasElement.removeEventListener("pointermove", handlePointerMove); // canvasElement.removeEventListener("pointerup", handlePointerUp); // }; // }, [selectedItemsIndex, selectedVersion?.versionId]); // useEffect(() => { // const canvasElement = state.gl.domElement; // let drag = false; // let isLeftMouseDown = false; // const onMouseDown = (evt: any) => { // if (evt.button === 0) { // isLeftMouseDown = true; // drag = false; // } // }; // const onMouseUp = (evt: any) => { // if (evt.button === 0) { // isLeftMouseDown = false; // if (!drag && toolMode === '3D-Delete' && activeModule === "builder") { // DeleteWallItems( // hoveredDeletableWallItem, // setWallItems, // wallItems, // socket, // projectId, // selectedVersion?.versionId || '', // ); // } // } // }; // const onMouseMove = () => { // if (isLeftMouseDown) { // drag = true; // } // }; // const onDrop = (event: any) => { // if (selectedItem.category !== 'Fenestration') return; // pointer.x = (event.clientX / window.innerWidth) * 2 - 1; // pointer.y = -(event.clientY / window.innerHeight) * 2 + 1; // raycaster.setFromCamera(pointer, camera); // if (selectedItem.id && selectedVersion && projectId) { // if (selectedItem.subCategory) { // AddWallItems( // selectedItem, // raycaster, // CSGGroup, // setWallItems, // socket, // projectId, // selectedVersion?.versionId || '', // ); // } // event.preventDefault(); // } // }; // const onDragOver = (event: any) => { // event.preventDefault(); // }; // canvasElement.addEventListener("mousedown", onMouseDown); // canvasElement.addEventListener("mouseup", onMouseUp); // canvasElement.addEventListener("mousemove", onMouseMove); // canvasElement.addEventListener("drop", onDrop); // canvasElement.addEventListener("dragover", onDragOver); // return () => { // canvasElement.removeEventListener("mousedown", onMouseDown); // canvasElement.removeEventListener("mouseup", onMouseUp); // canvasElement.removeEventListener("mousemove", onMouseMove); // canvasElement.removeEventListener("drop", onDrop); // canvasElement.removeEventListener("dragover", onDragOver); // }; // }, [toolMode, wallItems, selectedItem, camera, selectedVersion?.versionId]); // useEffect(() => { // if (toolMode && activeModule === "builder") { // handleMeshMissed( // currentWallItem, // setSelectedWallItem, // setSelectedItemsIndex // ); // setSelectedWallItem(null); // setSelectedItemsIndex(null); // } // }, [toolMode]); // return ( // <> // {wallItems.map((item: Types.WallItem, index: number) => ( // // // // ))} // // ); // }; // export default WallItemsGroup;