UNPKG

@spearwolf/twopoint5d

Version:

Create 2.5D realtime graphics and pixelart with WebGL and three.js

109 lines 3.11 kB
import { Group } from 'three/webgpu'; import { Map2DTileStreamer } from './Map2DTileStreamer.js'; export class Map2D extends Group { #renderers = new Set(); #tileStreamer; #visibilitor; get tileStreamer() { return this.#tileStreamer; } set tileStreamer(streamer) { if (this.#tileStreamer !== streamer) { if (this.#renderers.size > 0) { if (this.#tileStreamer) { for (const renderer of this.#renderers) { this.#tileStreamer.removeTileRenderer(renderer); } } } this.#tileStreamer = streamer; if (this.#visibilitor) { this.#tileStreamer.visibilitor = this.#visibilitor; } if (this.#tileStreamer) { for (const renderer of this.#renderers) { this.#tileStreamer.addTileRenderer(renderer); } } } } get visibilitor() { return this.#visibilitor; } set visibilitor(v) { if (this.#visibilitor !== v) { this.#visibilitor = v; if (this.#tileStreamer != null) { this.#tileStreamer.visibilitor = v; } } } get centerX() { return this.#tileStreamer.centerX; } set centerX(x) { this.#tileStreamer.centerX = x; } get centerY() { return this.#tileStreamer.centerY; } set centerY(y) { this.#tileStreamer.centerY = y; } get tileWidth() { return this.#tileStreamer.tileWidth; } set tileWidth(width) { this.#tileStreamer.tileWidth = width; } get tileHeight() { return this.#tileStreamer.tileHeight; } set tileHeight(height) { this.#tileStreamer.tileHeight = height; } get xOffset() { return this.#tileStreamer.xOffset; } set xOffset(offset) { this.#tileStreamer.xOffset = offset; } get yOffset() { return this.#tileStreamer.yOffset; } set yOffset(offset) { this.#tileStreamer.yOffset = offset; } constructor(tileStreamer = new Map2DTileStreamer()) { super(); this.#tileStreamer = tileStreamer; } addTileRenderer(renderer) { if (!this.#renderers.has(renderer)) { this.#renderers.add(renderer); this.#tileStreamer.addTileRenderer(renderer); this.add(renderer.node); } } removeTileRenderer(renderer) { if (this.#renderers.has(renderer)) { this.remove(renderer.node); this.#tileStreamer.removeTileRenderer(renderer); this.#renderers.delete(renderer); } } update() { this.updateMatrixWorld(); this.#tileStreamer.update(this); } clearTiles() { this.#tileStreamer.clearTiles(); } dispose() { for (const renderer of this.#renderers) { this.removeTileRenderer(renderer); renderer.dispose(); } } } //# sourceMappingURL=Map2D.js.map