UNPKG

@spearwolf/twopoint5d

Version:

a library to create 2.5d realtime graphics and pixelart with three.js

115 lines 3.37 kB
import { Group } from 'three'; import { Map2DLayer } from './Map2DLayer.js'; export class Map2DLayer3D extends Group { #renderers = new Set(); #map2dLayer; #visibilitor; get map2dLayer() { return this.#map2dLayer; } set map2dLayer(map2dLayer) { if (this.#map2dLayer !== map2dLayer) { if (this.#renderers.size > 0) { if (this.#map2dLayer) { for (const renderer of this.#renderers) { this.#map2dLayer.removeTileRenderer(renderer); } } } this.#map2dLayer = map2dLayer; if (this.#visibilitor) { this.#map2dLayer.visibilitor = this.#visibilitor; } if (this.#map2dLayer) { for (const renderer of this.#renderers) { this.#map2dLayer.addTileRenderer(renderer); } } } } get visibilitor() { return this.#visibilitor; } set visibilitor(v) { if (this.#visibilitor !== v) { this.#visibilitor?.removeFromScene(this); this.#visibilitor = v; this.#visibilitor?.addToScene(this); if (this.#map2dLayer != null) { this.#map2dLayer.visibilitor = v; } } } get centerX() { return this.#map2dLayer.centerX; } set centerX(x) { this.#map2dLayer.centerX = x; } get centerY() { return this.#map2dLayer.centerY; } set centerY(y) { this.#map2dLayer.centerY = y; } get tileWidth() { return this.#map2dLayer.tileWidth; } set tileWidth(width) { this.#map2dLayer.tileWidth = width; } get tileHeight() { return this.#map2dLayer.tileHeight; } set tileHeight(height) { this.#map2dLayer.tileHeight = height; } get xOffset() { return this.#map2dLayer.xOffset; } set xOffset(offset) { this.#map2dLayer.xOffset = offset; } get yOffset() { return this.#map2dLayer.yOffset; } set yOffset(offset) { this.#map2dLayer.yOffset = offset; } constructor(map2dLayer = new Map2DLayer()) { super(); this.#map2dLayer = map2dLayer; } addTileRenderer(renderer) { if (!this.#renderers.has(renderer)) { this.#renderers.add(renderer); this.#map2dLayer.addTileRenderer(renderer); console.log('Map2DLayer3D.addTileRenderer', { map2dLayer: this.#map2dLayer, renderer, Map2DLayer3D: this }); } } removeTileRenderer(renderer) { if (this.#renderers.has(renderer)) { this.#renderers.delete(renderer); this.#map2dLayer.removeTileRenderer(renderer); console.log('Map2DLayer3D.removeTileRenderer', { map2dLayer: this.#map2dLayer, renderer, Map2DLayer3D: this, }); } } update() { this.updateMatrixWorld(); this.#map2dLayer.update(this); } resetTiles() { this.#map2dLayer.resetTiles(); } dispose() { for (const renderer of this.#renderers) { this.removeTileRenderer(renderer); renderer.dispose(); } } } //# sourceMappingURL=Map2DLayer3D.js.map