24 lines
864 B
JavaScript
24 lines
864 B
JavaScript
const { Vec3 } = require('vec3')
|
|
|
|
function getShapeFaceCenters (shapes, direction, half = null) {
|
|
const faces = []
|
|
for (const shape of shapes) {
|
|
const halfsize = new Vec3(shape[3] - shape[0], shape[4] - shape[1], shape[5] - shape[2]).scale(0.5)
|
|
let center = new Vec3(shape[0] + shape[3], shape[1] + shape[4], shape[2] + shape[5]).scale(0.5)
|
|
center = center.offset(halfsize.x * direction.x, halfsize.y * direction.y, halfsize.z * direction.z)
|
|
|
|
if (half === 'top' && center.y <= 0.5) {
|
|
if (Math.abs(direction.y) === 0) center.y += halfsize.y - 0.001
|
|
if (center.y <= 0.5) continue
|
|
} else if (half === 'bottom' && center.y >= 0.5) {
|
|
if (Math.abs(direction.y) === 0) center.y -= halfsize.y - 0.001
|
|
if (center.y >= 0.5) continue
|
|
}
|
|
|
|
faces.push(center)
|
|
}
|
|
return faces
|
|
}
|
|
|
|
module.exports = { getShapeFaceCenters }
|