2025-03-25 12:04:20 +00:00
|
|
|
import * as THREE from 'three';
|
|
|
|
import * as Types from '../../../types/world/worldTypes';
|
|
|
|
import * as CONSTANTS from '../../../types/world/worldConstants';
|
|
|
|
import { Base } from '@react-three/csg';
|
|
|
|
import { MeshDiscardMaterial } from '@react-three/drei';
|
|
|
|
import { useUpdateScene, useWalls } from '../../../store/store';
|
|
|
|
import { useEffect } from 'react';
|
|
|
|
import { getLines } from '../../../services/factoryBuilder/lines/getLinesApi';
|
|
|
|
import objectLinesToArray from '../geomentries/lines/lineConvertions/objectLinesToArray';
|
|
|
|
import loadWalls from '../geomentries/walls/loadWalls';
|
|
|
|
|
|
|
|
const WallsMesh = ({ lines }: any) => {
|
|
|
|
const { walls, setWalls } = useWalls();
|
|
|
|
const { updateScene, setUpdateScene } = useUpdateScene();
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (updateScene) {
|
|
|
|
|
|
|
|
const email = localStorage.getItem('email')
|
|
|
|
const organization = (email!.split("@")[1]).split(".")[0];
|
|
|
|
|
|
|
|
getLines(organization).then((data) => {
|
|
|
|
const Lines: Types.Lines = objectLinesToArray(data);
|
|
|
|
localStorage.setItem("Lines", JSON.stringify(Lines));
|
|
|
|
|
|
|
|
if (Lines) {
|
|
|
|
loadWalls(lines, setWalls);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
setUpdateScene(false);
|
|
|
|
}
|
|
|
|
}, [updateScene])
|
|
|
|
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
{walls.map((wall: Types.Wall, index: number) => (
|
|
|
|
<mesh key={index}>
|
|
|
|
<Base
|
|
|
|
name={`Wall${index + 1}`}
|
|
|
|
geometry={wall[0]}
|
|
|
|
rotation={wall[1]}
|
|
|
|
position={wall[2]}
|
|
|
|
userData={{ WallType: wall[3], Layer: wall[4] }}
|
|
|
|
>
|
|
|
|
<meshStandardMaterial
|
|
|
|
side={THREE.DoubleSide}
|
|
|
|
color={CONSTANTS.wallConfig.defaultColor}
|
|
|
|
/>
|
|
|
|
</Base>
|
|
|
|
<mesh
|
|
|
|
castShadow
|
|
|
|
geometry={wall[0]}
|
|
|
|
rotation={wall[1]}
|
|
|
|
position={wall[2]}
|
|
|
|
name={`WallRaycastReference_${index + 1}`}
|
|
|
|
>
|
|
|
|
<MeshDiscardMaterial />
|
|
|
|
</mesh>
|
|
|
|
</mesh>
|
|
|
|
))}
|
|
|
|
</>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2025-03-25 08:30:03 +00:00
|
|
|
export default WallsMesh;
|