frontend/src/3dModels/Shapes/3D/Cube.tsx
csawatzky cb6609bdb1 built out a simple framework for building 3d objects
an orbital camera and some basic shapes are used to build the 3d bin shell and the flat inventory when using manual or lidar are built
2026-04-08 09:39:42 -06:00

40 lines
No EOL
994 B
TypeScript

import { useMemo } from "react";
import * as THREE from "three";
import BaseMesh, { BaseMeshProps } from "../BaseMesh";
export interface CubeGeometry {
height: number;
width: number;
depth: number;
widthSegments?: number;
heightSegments?: number;
depthSegments?: number;
}
interface Props extends Omit<BaseMeshProps, "geometry"> {
geometry: CubeGeometry;
}
export default function Cube(props: Props) {
const { geometry } = props;
const geo = useMemo(() => {
return new THREE.BoxGeometry(
geometry.height,
geometry.width,
geometry.depth,
geometry.widthSegments ?? 2,
geometry.heightSegments ?? 2,
geometry.depthSegments ?? 2
);
}, [
geometry.height,
geometry.width,
geometry.depth,
geometry.widthSegments,
geometry.heightSegments,
geometry.depthSegments
]);
return <BaseMesh {...props} geometry={geo} />;
}