UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

71 lines 5.44 kB
import { TgdPainter } from "./painter.js"; /** * Group several painters together. */ export class TgdPainterGroup extends TgdPainter { constructor(painters = [], { onEnter, onExit, name } = {}) { super(); this.active = true; this.onEnter = onEnter; this.onExit = onExit; this.painters = [...painters]; this.name = name !== null && name !== void 0 ? name : `Group/${this.name}`; } forEachChild(callback) { for (const [index, child] of this.painters.entries()) callback(child, index); } has(painter) { return this.painters.includes(painter); } add(...painters) { for (const painter of painters) { this.painters.push(painter); } } addFirst(...painters) { for (let index = painters.length - 1; index >= 0; index--) { const painter = painters[index]; this.painters.unshift(painter); } } remove(...painters) { for (const painter of painters) { const index = this.painters.indexOf(painter); if (index === -1) continue; this.painters.splice(index, 1); painter.delete(); } } removeAll() { for (const painter of this.painters) { painter.delete(); } this.painters.splice(0, this.painters.length); } delete() { for (const painter of this.painters) { painter.delete(); } this.painters.splice(0, this.painters.length); } paint(time, delay) { var _a, _b; if (!this.active) return; (_a = this.onEnter) === null || _a === void 0 ? void 0 : _a.call(this, time, delay); for (const painter of this.painters) { if (painter.active) { painter.paint(time, delay); } } (_b = this.onExit) === null || _b === void 0 ? void 0 : _b.call(this, time, delay); } debugHierarchy() { return { [this.active ? this.name : `${this.name} (Inactive)`]: this.painters.map(painter => painter.debugHierarchy()), }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTRCLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQVFoRTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFNM0MsWUFDSSxXQUF5QixFQUFFLEVBQzNCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEtBQTZCLEVBQUU7UUFFdEQsS0FBSyxFQUFFLENBQUE7UUFUSixXQUFNLEdBQUcsSUFBSSxDQUFBO1FBVWhCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUMsQ0FBQztJQUVELFlBQVksQ0FBQyxRQUFvRDtRQUM3RCxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxHQUFHLENBQUMsT0FBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQUcsUUFBc0I7UUFDekIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFHLFFBQXNCO1FBQzlCLEtBQUssSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3hELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLFFBQXNCO1FBQzVCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDNUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUFFLFNBQVE7WUFFMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQzlCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNwQixDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDcEIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxNQUFNO1FBQ0YsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFhOztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFNO1FBRXhCLE1BQUEsSUFBSSxDQUFDLE9BQU8scURBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzNCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUM5QixDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQUEsSUFBSSxDQUFDLE1BQU0scURBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTztZQUNILENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsRUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDN0QsQ0FBQTtJQUNMLENBQUM7Q0FDSiJ9