UNPKG

@polygonjs/polygonjs

Version:

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

54 lines (53 loc) 1.52 kB
"use strict"; import { DoubleSide } from "three"; import { isArray } from "../Type"; export class MatDoubleSideTmpSetter { constructor() { this._sidePropertyByMaterial = /* @__PURE__ */ new WeakMap(); this._bound_setMat = this._setObjectMaterialDoubleSided.bind(this); this._bound_restoreMat = this._restoreObjectMaterialSide.bind(this); } setCoreGroupMaterialDoubleSided(core_group) { const objects = core_group.threejsObjects(); for (const object of objects) { object.traverse(this._bound_setMat); } } restoreMaterialSideProperty(core_group) { const objects = core_group.threejsObjects(); for (const object of objects) { object.traverse(this._bound_restoreMat); } } _setObjectMaterialDoubleSided(object) { const mat = object.material; if (mat) { if (isArray(mat)) { for (const mati of mat) { this._setMaterialDoubleSided(mati); } } else { this._setMaterialDoubleSided(mat); } } } _restoreObjectMaterialSide(object) { const mat = object.material; if (mat) { if (isArray(mat)) { for (const mati of mat) { this._restoreMaterialDoubleSided(mati); } } else { this._restoreMaterialDoubleSided(mat); } } } _setMaterialDoubleSided(mat) { this._sidePropertyByMaterial.set(mat, mat.side); mat.side = DoubleSide; } _restoreMaterialDoubleSided(mat) { mat.side = this._sidePropertyByMaterial.get(mat) || DoubleSide; } }