UNPKG

arx-level-generator

Version:
29 lines 1.43 kB
import { BoxGeometry, MathUtils, Mesh, MeshBasicMaterial, Vector2 } from 'three'; import { Vector3 } from '../../Vector3.js'; import { toArxCoordinateSystem } from '../../tools/mesh/toArxCoordinateSystem.js'; export const createBox = ({ position, origin = new Vector2(0, 0), size, angleY = 0, materials, }) => { if (typeof size === 'number') { size = new Vector3(size, size, size); } let geometry = new BoxGeometry(size.x, size.y, size.z, Math.ceil(size.x / 100), Math.ceil(size.y / 100), Math.ceil(size.z / 100)); geometry = toArxCoordinateSystem(geometry); geometry.rotateY(MathUtils.degToRad(180)); geometry.rotateZ(MathUtils.degToRad(180)); geometry.translate((size.x / 2) * origin.x, 0, (size.z / 2) * origin.y); geometry.rotateY(MathUtils.degToRad(angleY)); geometry.translate(position.x, position.y, position.z); if (Array.isArray(materials)) { return new Mesh(geometry, [ new MeshBasicMaterial({ map: materials[0] }), new MeshBasicMaterial({ map: materials[1] }), new MeshBasicMaterial({ map: materials[2] }), new MeshBasicMaterial({ map: materials[3] }), new MeshBasicMaterial({ map: materials[4] }), new MeshBasicMaterial({ map: materials[5] }), ]); } else { return new Mesh(geometry, new MeshBasicMaterial({ map: materials })); } }; //# sourceMappingURL=box.js.map