@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
51 lines (50 loc) • 1.9 kB
JavaScript
;
import { TypeAssert } from "../../../../poly/Assert";
import { NodeParamsConfig } from "../../../utils/params/ParamsConfig";
import { CustomMaterialName } from "../../../../../core/geometry/Material";
import { ParamConfig } from "../../../utils/params/ParamsConfig";
import { BaseBuilderParamConfig } from "../../_BaseBuilder";
import { isBooleanTrue } from "../../../../../core/Type";
import { TypedMatNode } from "../../_Base";
export function CustomMaterialLineParamConfig(Base) {
return class Mixin extends Base {
constructor() {
super(...arguments);
/** @param toggle off to choose which customMaterials will be generated */
this.overrideCustomMaterials = ParamConfig.BOOLEAN(0);
/** @param distance */
this.createCustomMatDistance = ParamConfig.BOOLEAN(1, {
visibleIf: { overrideCustomMaterials: 1 }
});
/** @param depth */
this.createCustomMatDepth = ParamConfig.BOOLEAN(1, {
visibleIf: { overrideCustomMaterials: 1 }
});
/** @param depth DOF */
this.createCustomMatDepthDOF = ParamConfig.BOOLEAN(1, {
visibleIf: { overrideCustomMaterials: 1 }
});
}
};
}
class CustomMaterialLineParamsConfig extends CustomMaterialLineParamConfig(BaseBuilderParamConfig(NodeParamsConfig)) {
}
class CustomMaterialMatNode extends TypedMatNode {
}
export function materialLineAssemblerCustomMaterialRequested(node, customName) {
if (!isBooleanTrue(node.pv.overrideCustomMaterials)) {
return true;
}
switch (customName) {
case CustomMaterialName.DISTANCE: {
return isBooleanTrue(node.pv.createCustomMatDistance);
}
case CustomMaterialName.DEPTH: {
return isBooleanTrue(node.pv.createCustomMatDepth);
}
case CustomMaterialName.DEPTH_DOF: {
return isBooleanTrue(node.pv.createCustomMatDepthDOF);
}
}
TypeAssert.unreachable(customName);
}