@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
62 lines (61 loc) • 1.37 kB
JavaScript
;
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))) {
}