UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

58 lines 4.65 kB
import { TgdPainter } from "./painter.js"; /** * @see {@link TgdPainterClearOptions} */ export class TgdPainterClear extends TgdPainter { constructor({ gl }, options = {}) { 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 = options.name ?? `Clear/${this.name}`; this.gl = gl; const color = options.color ?? [0, 0, 0, 1]; const depth = options.depth ?? 1; const stencil = options.stencil ?? 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9jbGVhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBU3RDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQVczQyxZQUNJLEVBQUUsRUFBRSxFQUFrQyxFQUNyQixVQUEyQyxFQUFFO1FBRTlELEtBQUssRUFBRSxDQUFBO1FBRlUsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFUM0QsUUFBRyxHQUFHLENBQUMsQ0FBQTtRQUNQLFVBQUssR0FBRyxHQUFHLENBQUE7UUFDWCxTQUFJLEdBQUcsQ0FBQyxDQUFBO1FBQ1IsVUFBSyxHQUFHLENBQUMsQ0FBQTtRQUNULFVBQUssR0FBRyxDQUFDLENBQUE7UUFDVCxZQUFPLEdBQUcsQ0FBQyxDQUFBO1FBT2QsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2hELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ1osTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFBO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFBO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQTtRQUN4QixJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUE7WUFDckMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN2QixDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUE7WUFDckMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN2QixDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUE7WUFDdkMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUZBQWlGLENBQUMsQ0FBQTtRQUN0RyxDQUFDO1FBRUQsQ0FBQztRQUFBLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUN0RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUMxQixDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sS0FBVSxDQUFDO0lBRWpCLEtBQUs7UUFDRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDaEYsSUFBSSxPQUFPLENBQUMsS0FBSztZQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDekQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNwQixFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVCLENBQUM7UUFDRCxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7Q0FDSiJ9