import * as THREE from "three"; import { useMemo } from "react"; import { DragControls, Line as DreiLine } from "@react-three/drei"; import * as Constants from "../../../types/world/worldConstants"; import { useLineEventHandler } from "./eventHandler/useLineEventHandler"; interface LineProps { points: [Point, Point]; } function Line({ points }: Readonly) { const path = useMemo(() => { const [start, end] = points.map((p) => new THREE.Vector3(...p.position)); return new THREE.LineCurve3(start, end); }, [points]); const positions = useMemo(() => points.map((p) => new THREE.Vector3(...p.position)), [points]); const colors = getColor(points[0]); function getColor(point: Point) { if (point.pointType === "Aisle") { return { defaultLineColor: Constants.lineConfig.aisleColor, defaultDeleteColor: Constants.lineConfig.deleteColor, }; } else if (point.pointType === "Floor") { return { defaultLineColor: Constants.lineConfig.floorColor, defaultDeleteColor: Constants.lineConfig.deleteColor, }; } else if (point.pointType === "Wall") { return { defaultLineColor: Constants.lineConfig.wallColor, defaultDeleteColor: Constants.lineConfig.deleteColor, }; } else if (point.pointType === "Zone") { return { defaultLineColor: Constants.lineConfig.zoneColor, defaultDeleteColor: Constants.lineConfig.deleteColor, }; } else { return { defaultLineColor: Constants.lineConfig.defaultColor, defaultDeleteColor: Constants.lineConfig.deleteColor, }; } } const { isDeletable, handleDrag, handleDragStart, handleDragEnd, handleLineClick, handlePointerOver, handlePointerOut } = useLineEventHandler({ points }); return ( ); } export default Line;