UNPKG

@polygonjs/polygonjs

Version:

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

62 lines (61 loc) 1.37 kB
"use strict"; import { BypassFlag } from "./flags/Bypass"; import { DisplayFlag } from "./flags/Display"; import { OptimizeFlag } from "./flags/Optimize"; export class FlagsController { constructor(node) { this.node = node; } hasDisplay() { return false; } hasBypass() { return false; } hasOptimize() { return false; } } function Display(Base) { return class Mixin extends Base { constructor() { super(...arguments); this.display = new DisplayFlag(this.node); } hasDisplay() { return true; } }; } function Bypass(Base) { return class Mixin extends Base { constructor() { super(...arguments); this.bypass = new BypassFlag(this.node); } hasBypass() { return true; } }; } function Optimize(Base) { return class Mixin extends Base { constructor() { super(...arguments); this.optimize = new OptimizeFlag(this.node); } hasOptimize() { return true; } }; } export class FlagsControllerD extends Display(FlagsController) { } export class FlagsControllerB extends Bypass(FlagsController) { } export class FlagsControllerDB extends Bypass(Display(FlagsController)) { } export class FlagsControllerBO extends Optimize(Bypass(FlagsController)) { } export class FlagsControllerDBO extends Optimize(Bypass(Display(FlagsController))) { }