import {TypedMatNode} from "../_Base";
import {BaseController as BaseController2} from "./_BaseController";
import {NodeParamsConfig, ParamConfig} from "../../utils/params/ParamsConfig";
export function DepthParamConfig(Base4) {
  return class Mixin extends Base4 {
    constructor() {
      super(...arguments);
      this.depthWrite = ParamConfig.BOOLEAN(1, {
        cook: false,
        callback: (node, param) => {
          DepthController.update(node);
        }
      });
      this.depthTest = ParamConfig.BOOLEAN(1, {
        cook: false,
        callback: (node, param) => {
          DepthController.update(node);
        }
      });
    }
  };
}
class DepthParamsConfig extends DepthParamConfig(NodeParamsConfig) {
}
class DepthMapMatNode extends TypedMatNode {
}
export class DepthController extends BaseController2 {
  constructor(node) {
    super(node);
    this.node = node;
  }
  async update() {
    this.node.material.depthWrite = this.node.pv.depthWrite;
    this.node.material.depthTest = this.node.pv.depthTest;
  }
  static async update(node) {
    node.depth_controller.update();
  }
}
