56 lines
2.5 KiB
TypeScript
56 lines
2.5 KiB
TypeScript
import { Geometry } from "@react-three/csg";
|
|
import { useDeleteModels, useSelectedWallItem, useToggleView, useTransformMode, useWallItems, useWalls } from "../../../store/store";
|
|
import handleMeshDown from "../eventFunctions/handleMeshDown";
|
|
import handleMeshMissed from "../eventFunctions/handleMeshMissed";
|
|
import WallsMesh from "./wallsMesh";
|
|
import WallItemsGroup from "./wallItemsGroup";
|
|
import { useEffect } from "react";
|
|
|
|
|
|
const WallsAndWallItems = ({ CSGGroup, AssetConfigurations, setSelectedItemsIndex, selectedItemsIndex, currentWallItem, csg, lines, hoveredDeletableWallItem }: any) => {
|
|
const { walls, setWalls } = useWalls();
|
|
const { wallItems, setWallItems } = useWallItems();
|
|
const { toggleView, setToggleView } = useToggleView();
|
|
const { deleteModels, setDeleteModels } = useDeleteModels();
|
|
const { transformMode, setTransformMode } = useTransformMode();
|
|
const { selectedWallItem, setSelectedWallItem } = useSelectedWallItem();
|
|
|
|
useEffect(() => {
|
|
if (transformMode === null) {
|
|
if (!deleteModels) {
|
|
handleMeshMissed(currentWallItem, setSelectedWallItem, setSelectedItemsIndex);
|
|
setSelectedWallItem(null);
|
|
setSelectedItemsIndex(null);
|
|
}
|
|
}
|
|
}, [transformMode])
|
|
|
|
return (
|
|
<mesh
|
|
ref={CSGGroup as any}
|
|
name="Walls"
|
|
key={walls.length}
|
|
receiveShadow
|
|
visible={!toggleView}
|
|
onClick={(event) => {
|
|
if (!deleteModels && transformMode !== null) {
|
|
handleMeshDown(event, currentWallItem, setSelectedWallItem, setSelectedItemsIndex, wallItems, toggleView);
|
|
}
|
|
}}
|
|
onPointerMissed={() => {
|
|
if (!deleteModels) {
|
|
handleMeshMissed(currentWallItem, setSelectedWallItem, setSelectedItemsIndex);
|
|
setSelectedWallItem(null);
|
|
setSelectedItemsIndex(null);
|
|
}
|
|
}}
|
|
>
|
|
<Geometry ref={csg as any} computeVertexNormals useGroups>
|
|
<WallsMesh lines={lines} />
|
|
<WallItemsGroup currentWallItem={currentWallItem} AssetConfigurations={AssetConfigurations} hoveredDeletableWallItem={hoveredDeletableWallItem} selectedItemsIndex={selectedItemsIndex} setSelectedItemsIndex={setSelectedItemsIndex} CSGGroup={CSGGroup} />
|
|
</Geometry>
|
|
</mesh>
|
|
)
|
|
}
|
|
|
|
export default WallsAndWallItems; |