UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

59 lines 4.86 kB
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