UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

39 lines 1.42 kB
import { physxPtr } from "../../pointers/physxPtr"; export default (manager) => { const { Vector_PxVec3 } = physxPtr[0]; let vertexCount = 0; const geometries = []; const loaded = "$loadedObject3d" in manager ? manager.$loadedObject3d : manager.object3d; loaded.updateMatrixWorld(); const { position, rotation } = manager.outerObject3d; loaded.traverse((c) => { if (!("geometry" in c)) return; const clone = c.geometry.clone(); clone.applyMatrix4(c.matrixWorld); clone.translate(-position.x, -position.y, -position.z); clone.rotateX(-rotation.x); clone.rotateY(-rotation.y); clone.rotateZ(-rotation.z); clone.dispose(); geometries.push(clone); vertexCount += clone.attributes.position.count; }); const vec3Vector = new Vector_PxVec3(vertexCount); let iTotal = 0; for (const geometry of geometries) { const buffer = geometry.attributes.position; const vertices = buffer.array; for (let i = 0; i < buffer.count; i++) { const pxVec3 = vec3Vector.at(iTotal++); const offset = i * 3; pxVec3.set_x(vertices[offset]); pxVec3.set_y(vertices[offset + 1]); pxVec3.set_z(vertices[offset + 2]); } } return [vec3Vector, vertexCount]; }; //# sourceMappingURL=computePxVertices.js.map