UNPKG

@polygonjs/polygonjs

Version:

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

49 lines (48 loc) 1.35 kB
"use strict"; import { TypedMatNode } from "../_Base"; import { BaseController } from "./_BaseController"; import { NodeParamsConfig, ParamConfig } from "../../utils/params/ParamsConfig"; export function FlatShadingParamConfig(Base) { return class Mixin extends Base { constructor() { super(...arguments); /** @param defines if the material is flat shaded */ this.flatShading = ParamConfig.BOOLEAN(0, { separatorAfter: true }); } }; } class FlatShadingParamsConfig extends FlatShadingParamConfig(NodeParamsConfig) { } function _isValidMaterial(material) { if (!material) { return false; } return material.flatShading != null; } class FlatShadingMapMatNode extends TypedMatNode { async material() { const container = await this.compute(); return container.material(); } } export class FlatShadingController extends BaseController { constructor(node) { super(node); this.node = node; } static async update(node) { const material = await node.material(); if (!_isValidMaterial(material)) { return; } node.controllers.flatShading.updateMaterial(material); } updateMaterial(material) { material.flatShading = this.node.pv.flatShading; } setParamsFromMaterial(material, record) { this.node.p.flatShading.set(material.flatShading); } }