UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

46 lines (37 loc) 1.28 kB
import { DrawMode } from "./DrawMode.js"; import { Line, LineSegments, Mesh, Points } from "three"; import { ShadedGeometryFlags } from "./ShadedGeometryFlags.js"; /** * * @param {ShadedGeometry} sg * @returns {THREE.Object3D} */ export function build_three_object(sg) { /** * @type {THREE.Object3D} */ let object; const mode = sg.mode; const shader = sg.material; const geo = sg.geometry; if (mode === DrawMode.Triangles) { object = new Mesh(geo, shader); } else if (mode === DrawMode.Lines) { object = new Line(geo, shader); } else if (mode === DrawMode.LineSegments) { object = new LineSegments(geo, shader); } else if (mode === DrawMode.Points) { object = new Points(geo, shader); } else { throw new Error(`Unsupported draw mode '${mode}'`); } object.matrixAutoUpdate = false; object.frustumCulled = false; object.matrixWorldNeedsUpdate = false; object.castShadow = sg.getFlag(ShadedGeometryFlags.CastShadow); object.receiveShadow = sg.getFlag(ShadedGeometryFlags.ReceiveShadow); if (sg.depth_material !== null) { object.customDepthMaterial = sg.depth_material; } return object; }