@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
58 lines • 4.65 kB
JavaScript
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