@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
59 lines • 4.86 kB
JavaScript
import { TgdPainter } from "./painter.js";
/**
* @see {@link TgdPainterClearOptions}
*/
export class TgdPainterClear extends TgdPainter {
constructor({ gl }, options = {}) {
var _a, _b, _c, _d;
super();
this.options = options;
this.red = 1;
this.green = 0.7;
this.blue = 0;
this.alpha = 1;
this.depth = 1;
this.stencil = 0;
this.name = (_a = options.name) !== null && _a !== void 0 ? _a : `Clear/${this.name}`;
this.gl = gl;
const color = (_b = options.color) !== null && _b !== void 0 ? _b : [0, 0, 0, 1];
const depth = (_c = options.depth) !== null && _c !== void 0 ? _c : 1;
const stencil = (_d = options.stencil) !== null && _d !== void 0 ? _d : 0;
this.clearMask = 0;
let hasAnyOption = false;
if (options.color !== undefined) {
this.clearMask |= gl.COLOR_BUFFER_BIT;
hasAnyOption = true;
}
if (typeof options.depth === "number") {
this.clearMask |= gl.DEPTH_BUFFER_BIT;
hasAnyOption = true;
}
if (typeof options.stencil === "number") {
this.clearMask |= gl.STENCIL_BUFFER_BIT;
hasAnyOption = true;
}
if (!hasAnyOption) {
throw new Error("[TgdPainterClear] You must give at least a color or a depth in the constructor!");
}
;
[this.red, this.green, this.blue, this.alpha] = color;
this.depth = depth;
this.stencil = stencil;
}
/** Nothing to destroy. */
delete() { }
paint() {
const { clearMask, gl, red, green, blue, alpha, depth, stencil, options, } = this;
if (options.color)
gl.clearColor(red, green, blue, alpha);
if (typeof options.depth === "number") {
gl.clearDepth(depth);
}
if (typeof options.stencil === "number") {
gl.stencilMask(0xff);
gl.clearStencil(stencil);
}
gl.clear(clearMask);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9jbGVhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBU3RDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQVczQyxZQUNJLEVBQUUsRUFBRSxFQUFrQyxFQUNyQixVQUEyQyxFQUFFOztRQUU5RCxLQUFLLEVBQUUsQ0FBQTtRQUZVLFlBQU8sR0FBUCxPQUFPLENBQXNDO1FBVDNELFFBQUcsR0FBRyxDQUFDLENBQUE7UUFDUCxVQUFLLEdBQUcsR0FBRyxDQUFBO1FBQ1gsU0FBSSxHQUFHLENBQUMsQ0FBQTtRQUNSLFVBQUssR0FBRyxDQUFDLENBQUE7UUFDVCxVQUFLLEdBQUcsQ0FBQyxDQUFBO1FBQ1QsWUFBTyxHQUFHLENBQUMsQ0FBQTtRQU9kLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBQSxPQUFPLENBQUMsSUFBSSxtQ0FBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNoRCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLE1BQU0sS0FBSyxHQUFHLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFBLE9BQU8sQ0FBQyxLQUFLLG1DQUFJLENBQUMsQ0FBQTtRQUNoQyxNQUFNLE9BQU8sR0FBRyxNQUFBLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtRQUNsQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUE7UUFDeEIsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFBO1lBQ3JDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDdkIsQ0FBQztRQUNELElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFBO1lBQ3JDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDdkIsQ0FBQztRQUNELElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFBO1lBQ3ZDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUNYLGlGQUFpRixDQUNwRixDQUFBO1FBQ0wsQ0FBQztRQUVELENBQUM7UUFBQSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDMUIsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixNQUFNLEtBQVUsQ0FBQztJQUVqQixLQUFLO1FBQ0QsTUFBTSxFQUNGLFNBQVMsRUFDVCxFQUFFLEVBQ0YsR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxHQUNWLEdBQUcsSUFBSSxDQUFBO1FBQ1IsSUFBSSxPQUFPLENBQUMsS0FBSztZQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDekQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNwQixFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVCLENBQUM7UUFDRCxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7Q0FDSiJ9