UNPKG

polygonjs-engine

Version:

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

48 lines (47 loc) 1.52 kB
import {BaseController as BaseController2} from "./_BaseController"; import {TypedMatNode} from "../_Base"; import {Material as Material2} from "three/src/materials/Material"; import {NodeParamsConfig, ParamConfig} from "../../utils/params/ParamsConfig"; export function ColorParamConfig(Base2) { return class Mixin extends Base2 { constructor() { super(...arguments); this.color = ParamConfig.COLOR([1, 1, 1]); this.useVertexColors = ParamConfig.BOOLEAN(0); this.transparent = ParamConfig.BOOLEAN(0); this.opacity = ParamConfig.FLOAT(1); this.alphaTest = ParamConfig.FLOAT(0); this.useFog = ParamConfig.BOOLEAN(0); } }; } class ColoredMaterial extends Material2 { } class ColorParamsConfig extends ColorParamConfig(NodeParamsConfig) { } class ColoredMatNode extends TypedMatNode { create_material() { return new ColoredMaterial(); } } export class ColorsController extends BaseController2 { constructor(node) { super(node); this.node = node; } static update(node) { const material = node.material; const pv = node.pv; material.color.copy(pv.color); const newVertexColor = pv.useVertexColors; if (newVertexColor != material.vertexColors) { material.vertexColors = newVertexColor; material.needsUpdate = true; } material.opacity = pv.opacity; material.transparent = pv.transparent || pv.opacity < 1; material.depthTest = true; material.alphaTest = pv.alphaTest; material.fog = pv.useFog; } }