UNPKG

polygonjs-engine

Version:

node-based webgl 3D engine https://polygonjs.com

54 lines (53 loc) 1.68 kB
import {CoreGeometry} from "./Geometry"; export class CoreScene { constructor(_scene) { this._scene = _scene; } scene() { return this._scene; } with_overriden_material(base_material, instance_material, uniforms, callback) { const original_material_by_object_id = {}; let assigned_material; this._scene.traverse((object3d) => { const object = object3d; if (object.material) { const geometry = object.geometry; if (geometry) { const custom_dof_material = object.customDepthDOFMaterial; if (custom_dof_material) { assigned_material = custom_dof_material; if (assigned_material.uniforms) { for (let k of Object.keys(uniforms)) { assigned_material.uniforms[k].value = uniforms[k].value; } } } else { if (CoreGeometry.markedAsInstance(geometry)) { assigned_material = instance_material; } else { assigned_material = base_material; } } if (assigned_material) { original_material_by_object_id[object.uuid] = object.material; object.material = assigned_material; } } } }); callback(); this._scene.traverse((object3d) => { const object = object3d; if (object.material) { const geometry = object.geometry; if (geometry) { object.material = original_material_by_object_id[object.uuid]; } } }); for (let key of Object.keys(original_material_by_object_id)) { delete original_material_by_object_id[key]; } } }