arx-level-generator
Version:
A tool for creating Arx Fatalis maps
29 lines • 1.43 kB
JavaScript
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