@codexo/exojs-tilemap 0.15.2 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -26
- package/dist/esm/ChunkSource.d.ts +33 -0
- package/dist/esm/ChunkSource.d.ts.map +1 -0
- package/dist/esm/ChunkStreamer.d.ts +98 -0
- package/dist/esm/ChunkStreamer.d.ts.map +1 -0
- package/dist/esm/ChunkStreamer.js +201 -0
- package/dist/esm/ChunkStreamer.js.map +1 -0
- package/dist/esm/ImageLayer.d.ts +11 -3
- package/dist/esm/ImageLayer.d.ts.map +1 -0
- package/dist/esm/ImageLayer.js +71 -64
- package/dist/esm/ImageLayer.js.map +1 -1
- package/dist/esm/ImageLayerNode.d.ts +89 -0
- package/dist/esm/ImageLayerNode.d.ts.map +1 -0
- package/dist/esm/ImageLayerNode.js +205 -0
- package/dist/esm/ImageLayerNode.js.map +1 -0
- package/dist/esm/MapObject.d.ts +70 -0
- package/dist/esm/MapObject.d.ts.map +1 -0
- package/dist/esm/MapObject.js +34 -0
- package/dist/esm/MapObject.js.map +1 -0
- package/dist/esm/MapObjectSpawner.d.ts +133 -0
- package/dist/esm/MapObjectSpawner.d.ts.map +1 -0
- package/dist/esm/MapObjectSpawner.js +147 -0
- package/dist/esm/MapObjectSpawner.js.map +1 -0
- package/dist/esm/MapSpawnSession.d.ts +53 -0
- package/dist/esm/MapSpawnSession.d.ts.map +1 -0
- package/dist/esm/MapSpawnSession.js +88 -0
- package/dist/esm/MapSpawnSession.js.map +1 -0
- package/dist/esm/MapWorld.d.ts +134 -0
- package/dist/esm/MapWorld.d.ts.map +1 -0
- package/dist/esm/MapWorld.js +150 -0
- package/dist/esm/MapWorld.js.map +1 -0
- package/dist/esm/MapWorldRuntime.d.ts +182 -0
- package/dist/esm/MapWorldRuntime.d.ts.map +1 -0
- package/dist/esm/MapWorldRuntime.js +261 -0
- package/dist/esm/MapWorldRuntime.js.map +1 -0
- package/dist/esm/ObjectLayer.d.ts +93 -7
- package/dist/esm/ObjectLayer.d.ts.map +1 -0
- package/dist/esm/ObjectLayer.js +184 -167
- package/dist/esm/ObjectLayer.js.map +1 -1
- package/dist/esm/SampledChunkSource.d.ts +43 -0
- package/dist/esm/SampledChunkSource.d.ts.map +1 -0
- package/dist/esm/SampledChunkSource.js +48 -0
- package/dist/esm/SampledChunkSource.js.map +1 -0
- package/dist/esm/TileAnimator.d.ts +12 -2
- package/dist/esm/TileAnimator.d.ts.map +1 -0
- package/dist/esm/TileAnimator.js +154 -165
- package/dist/esm/TileAnimator.js.map +1 -1
- package/dist/esm/TileChunk.d.ts +30 -5
- package/dist/esm/TileChunk.d.ts.map +1 -0
- package/dist/esm/TileChunk.js +190 -188
- package/dist/esm/TileChunk.js.map +1 -1
- package/dist/esm/TileChunkNode.d.ts +18 -3
- package/dist/esm/TileChunkNode.d.ts.map +1 -0
- package/dist/esm/TileChunkNode.js +104 -85
- package/dist/esm/TileChunkNode.js.map +1 -1
- package/dist/esm/TileLayer.d.ts +104 -24
- package/dist/esm/TileLayer.d.ts.map +1 -0
- package/dist/esm/TileLayer.js +511 -469
- package/dist/esm/TileLayer.js.map +1 -1
- package/dist/esm/TileLayerNode.d.ts +52 -11
- package/dist/esm/TileLayerNode.d.ts.map +1 -0
- package/dist/esm/TileLayerNode.js +224 -166
- package/dist/esm/TileLayerNode.js.map +1 -1
- package/dist/esm/TileMap.d.ts +96 -31
- package/dist/esm/TileMap.d.ts.map +1 -0
- package/dist/esm/TileMap.js +401 -357
- package/dist/esm/TileMap.js.map +1 -1
- package/dist/esm/TileMapBand.d.ts +42 -29
- package/dist/esm/TileMapBand.d.ts.map +1 -0
- package/dist/esm/TileMapBand.js +151 -158
- package/dist/esm/TileMapBand.js.map +1 -1
- package/dist/esm/TileMapNode.d.ts +34 -18
- package/dist/esm/TileMapNode.d.ts.map +1 -0
- package/dist/esm/TileMapNode.js +122 -109
- package/dist/esm/TileMapNode.js.map +1 -1
- package/dist/esm/TileMapView.d.ts +108 -47
- package/dist/esm/TileMapView.d.ts.map +1 -0
- package/dist/esm/TileMapView.js +385 -338
- package/dist/esm/TileMapView.js.map +1 -1
- package/dist/esm/TileSet.d.ts +15 -6
- package/dist/esm/TileSet.d.ts.map +1 -0
- package/dist/esm/TileSet.js +161 -181
- package/dist/esm/TileSet.js.map +1 -1
- package/dist/esm/WangSet.d.ts +5 -4
- package/dist/esm/WangSet.d.ts.map +1 -0
- package/dist/esm/WangSet.js +70 -78
- package/dist/esm/WangSet.js.map +1 -1
- package/dist/esm/WorkerSampledChunkSource.d.ts +95 -0
- package/dist/esm/WorkerSampledChunkSource.d.ts.map +1 -0
- package/dist/esm/WorkerSampledChunkSource.js +117 -0
- package/dist/esm/WorkerSampledChunkSource.js.map +1 -0
- package/dist/esm/autoTile.d.ts +10 -5
- package/dist/esm/autoTile.d.ts.map +1 -0
- package/dist/esm/autoTile.js +164 -205
- package/dist/esm/autoTile.js.map +1 -1
- package/dist/esm/chunkGeometry.d.ts +8 -7
- package/dist/esm/chunkGeometry.d.ts.map +1 -0
- package/dist/esm/chunkGeometry.js +83 -94
- package/dist/esm/chunkGeometry.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +26 -15
- package/dist/esm/nodeBounds.d.ts +20 -0
- package/dist/esm/nodeBounds.d.ts.map +1 -0
- package/dist/esm/nodeBounds.js +40 -0
- package/dist/esm/nodeBounds.js.map +1 -0
- package/dist/esm/pixelSnap.d.ts +4 -3
- package/dist/esm/pixelSnap.d.ts.map +1 -0
- package/dist/esm/pixelSnap.js +18 -16
- package/dist/esm/pixelSnap.js.map +1 -1
- package/dist/esm/public.d.ts +23 -3
- package/dist/esm/public.d.ts.map +1 -0
- package/dist/esm/tileCollision.d.ts +190 -0
- package/dist/esm/tileCollision.d.ts.map +1 -0
- package/dist/esm/tileCollision.js +367 -0
- package/dist/esm/tileCollision.js.map +1 -0
- package/dist/esm/tileWord.d.ts +12 -0
- package/dist/esm/tileWord.d.ts.map +1 -0
- package/dist/esm/tileWord.js +16 -0
- package/dist/esm/tileWord.js.map +1 -0
- package/dist/esm/tilemapExtension.d.ts +4 -3
- package/dist/esm/tilemapExtension.d.ts.map +1 -0
- package/dist/esm/tilemapExtension.js +47 -47
- package/dist/esm/tilemapExtension.js.map +1 -1
- package/dist/esm/tilemapSerializers.d.ts +5 -4
- package/dist/esm/tilemapSerializers.d.ts.map +1 -0
- package/dist/esm/tilemapSerializers.js +48 -41
- package/dist/esm/tilemapSerializers.js.map +1 -1
- package/dist/esm/types.d.ts +34 -18
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +111 -120
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/webgl2/WebGl2TileChunkRenderer.d.ts +50 -2
- package/dist/esm/webgl2/WebGl2TileChunkRenderer.d.ts.map +1 -0
- package/dist/esm/webgl2/WebGl2TileChunkRenderer.js +366 -332
- package/dist/esm/webgl2/WebGl2TileChunkRenderer.js.map +1 -1
- package/dist/esm/webgl2/shaders/tile-chunk.frag.js +6 -0
- package/dist/esm/webgl2/shaders/tile-chunk.frag.js.map +1 -0
- package/dist/esm/webgl2/shaders/tile-chunk.vert.js +6 -0
- package/dist/esm/webgl2/shaders/tile-chunk.vert.js.map +1 -0
- package/dist/esm/webgpu/WebGpuTileChunkRenderer.d.ts +70 -4
- package/dist/esm/webgpu/WebGpuTileChunkRenderer.d.ts.map +1 -0
- package/dist/esm/webgpu/WebGpuTileChunkRenderer.js +496 -383
- package/dist/esm/webgpu/WebGpuTileChunkRenderer.js.map +1 -1
- package/dist/esm/webgpu/shaders/tile-chunk.wgsl.js +6 -0
- package/dist/esm/webgpu/shaders/tile-chunk.wgsl.js.map +1 -0
- package/package.json +8 -15
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/register.d.ts +0 -1
- package/dist/esm/register.js +0 -25
- package/dist/esm/register.js.map +0 -1
|
@@ -1,89 +1,108 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { buildChunkPages } from "./chunkGeometry.js";
|
|
2
|
+
import { TileChunk } from "./TileChunk.js";
|
|
3
|
+
import { Drawable } from "@codexo/exojs/renderer-sdk";
|
|
3
4
|
|
|
5
|
+
//#region src/TileChunkNode.ts
|
|
4
6
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
7
|
+
* A single renderable tile chunk. One `TileChunkNode` is a {@link Drawable}
|
|
8
|
+
* that owns the batched quad geometry for exactly one {@link ReadonlyTileChunk}
|
|
9
|
+
* of one {@link import('./TileLayer').TileLayer}, positioned at the chunk's
|
|
10
|
+
* pixel origin within the owning {@link TileLayerNode}.
|
|
11
|
+
*
|
|
12
|
+
* Geometry is built lazily and cached against the source chunk's `revision`:
|
|
13
|
+
* the renderer reads {@link TileChunkNode.pages} on each visible frame, but a
|
|
14
|
+
* rebuild only happens when the underlying chunk actually changed. Off-screen
|
|
15
|
+
* chunks are culled by their accurate {@link getLocalBounds} before `render`
|
|
16
|
+
* is ever called, so a camera pan rebuilds nothing.
|
|
17
|
+
*
|
|
18
|
+
* The node references - but never owns - the runtime chunk, tilesets, and
|
|
19
|
+
* tileset textures. Destroying it releases only its cached CPU geometry; the
|
|
20
|
+
* `TileMap`/`TileLayer` data and Loader-owned textures are untouched.
|
|
21
|
+
*
|
|
22
|
+
* @internal Package-internal render node; the renderer is registered for this
|
|
23
|
+
* class. Applications use {@link TileMapNode} / {@link TileLayerNode}.
|
|
24
|
+
*/
|
|
25
|
+
var TileChunkNode = class extends Drawable {
|
|
26
|
+
_chunk;
|
|
27
|
+
_tilesets;
|
|
28
|
+
_tileWidth;
|
|
29
|
+
_tileHeight;
|
|
30
|
+
_pixelWidth;
|
|
31
|
+
_pixelHeight;
|
|
32
|
+
_pages = [];
|
|
33
|
+
_builtRevision = -1;
|
|
34
|
+
/**
|
|
35
|
+
* Bound once so `TileChunk._addDirtyListener`/`_removeDirtyListener` add and
|
|
36
|
+
* remove the SAME function reference. Pushes the chunk's revision bump onto
|
|
37
|
+
* this node's own content revision (see `TileChunk._dirtyListeners`) so a
|
|
38
|
+
* `RetainedContainer` ancestor - which skips walking a content-clean
|
|
39
|
+
* subtree entirely - observes the mutation and re-collects instead of
|
|
40
|
+
* replaying stale cached geometry.
|
|
41
|
+
*/
|
|
42
|
+
_onChunkDirty = () => {
|
|
43
|
+
this.invalidateContent();
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* @param chunk The readonly chunk this node renders.
|
|
47
|
+
* @param tilesets The owning layer's tileset array.
|
|
48
|
+
* @param tileWidth Map/layer tile cell width in pixels.
|
|
49
|
+
* @param tileHeight Map/layer tile cell height in pixels.
|
|
50
|
+
* @param chunkWidthTiles The layer's (unclamped) chunk width in tiles, used
|
|
51
|
+
* to compute the chunk's pixel origin. Edge chunks
|
|
52
|
+
* report a smaller `chunk.width`, but always start at
|
|
53
|
+
* `cx * chunkWidthTiles`.
|
|
54
|
+
* @param chunkHeightTiles The layer's (unclamped) chunk height in tiles.
|
|
55
|
+
*/
|
|
56
|
+
constructor(chunk, tilesets, tileWidth, tileHeight, chunkWidthTiles, chunkHeightTiles) {
|
|
57
|
+
super();
|
|
58
|
+
this._chunk = chunk;
|
|
59
|
+
this._tilesets = tilesets;
|
|
60
|
+
this._tileWidth = tileWidth;
|
|
61
|
+
this._tileHeight = tileHeight;
|
|
62
|
+
this._pixelWidth = chunk.width * tileWidth;
|
|
63
|
+
this._pixelHeight = chunk.height * tileHeight;
|
|
64
|
+
this.setPosition(chunk.cx * chunkWidthTiles * tileWidth, chunk.cy * chunkHeightTiles * tileHeight);
|
|
65
|
+
if (chunk instanceof TileChunk) chunk._addDirtyListener(this._onChunkDirty);
|
|
66
|
+
}
|
|
67
|
+
/** The signed chunk coordinates this node renders. */
|
|
68
|
+
get chunkX() {
|
|
69
|
+
return this._chunk.cx;
|
|
70
|
+
}
|
|
71
|
+
get chunkY() {
|
|
72
|
+
return this._chunk.cy;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The revision-cached per-tileset page geometry. Rebuilt only when the source
|
|
76
|
+
* chunk's `revision` advances; otherwise the same arrays are returned.
|
|
77
|
+
* @internal Read by the per-backend tile chunk renderer.
|
|
78
|
+
*/
|
|
79
|
+
get pages() {
|
|
80
|
+
if (this._builtRevision !== this._chunk.revision) {
|
|
81
|
+
this._pages = buildChunkPages(this._chunk, this._tilesets, this._tileWidth, this._tileHeight);
|
|
82
|
+
this._builtRevision = this._chunk.revision;
|
|
83
|
+
}
|
|
84
|
+
return this._pages;
|
|
85
|
+
}
|
|
86
|
+
/** `true` when the chunk has no drawable tiles (no geometry, no draw calls). */
|
|
87
|
+
get isEmpty() {
|
|
88
|
+
return this.pages.length === 0;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Recomputed lazily on read, so it writes `_localBounds` directly rather than
|
|
92
|
+
* going through `_setLocalBounds`: an invalidating write inside a getter
|
|
93
|
+
* would re-dirty the node on every read.
|
|
94
|
+
*/
|
|
95
|
+
getLocalBounds() {
|
|
96
|
+
return this._localBounds.set(0, 0, this._pixelWidth, this._pixelHeight);
|
|
97
|
+
}
|
|
98
|
+
destroy() {
|
|
99
|
+
if (this._chunk instanceof TileChunk) this._chunk._removeDirtyListener(this._onChunkDirty);
|
|
100
|
+
this._pages = [];
|
|
101
|
+
this._builtRevision = -1;
|
|
102
|
+
super.destroy();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
87
105
|
|
|
106
|
+
//#endregion
|
|
88
107
|
export { TileChunkNode };
|
|
89
|
-
//# sourceMappingURL=TileChunkNode.js.map
|
|
108
|
+
//# sourceMappingURL=TileChunkNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileChunkNode.js","sources":["
|
|
1
|
+
{"version":3,"file":"TileChunkNode.js","names":[],"sources":["../../src/TileChunkNode.ts"],"sourcesContent":["import type { ReadonlyRectangle } from '@codexo/exojs';\nimport { Drawable } from '@codexo/exojs/renderer-sdk';\n\nimport type { ChunkPage } from './chunkGeometry';\nimport { buildChunkPages } from './chunkGeometry';\nimport type { ReadonlyTileChunk } from './TileChunk';\nimport { TileChunk } from './TileChunk';\nimport type { TileSet } from './TileSet';\n\n/**\n * A single renderable tile chunk. One `TileChunkNode` is a {@link Drawable}\n * that owns the batched quad geometry for exactly one {@link ReadonlyTileChunk}\n * of one {@link import('./TileLayer').TileLayer}, positioned at the chunk's\n * pixel origin within the owning {@link TileLayerNode}.\n *\n * Geometry is built lazily and cached against the source chunk's `revision`:\n * the renderer reads {@link TileChunkNode.pages} on each visible frame, but a\n * rebuild only happens when the underlying chunk actually changed. Off-screen\n * chunks are culled by their accurate {@link getLocalBounds} before `render`\n * is ever called, so a camera pan rebuilds nothing.\n *\n * The node references - but never owns - the runtime chunk, tilesets, and\n * tileset textures. Destroying it releases only its cached CPU geometry; the\n * `TileMap`/`TileLayer` data and Loader-owned textures are untouched.\n *\n * @internal Package-internal render node; the renderer is registered for this\n * class. Applications use {@link TileMapNode} / {@link TileLayerNode}.\n */\nexport class TileChunkNode extends Drawable {\n private readonly _chunk: ReadonlyTileChunk;\n private readonly _tilesets: readonly TileSet[];\n private readonly _tileWidth: number;\n private readonly _tileHeight: number;\n private readonly _pixelWidth: number;\n private readonly _pixelHeight: number;\n\n private _pages: ChunkPage[] = [];\n private _builtRevision = -1;\n\n /**\n * Bound once so `TileChunk._addDirtyListener`/`_removeDirtyListener` add and\n * remove the SAME function reference. Pushes the chunk's revision bump onto\n * this node's own content revision (see `TileChunk._dirtyListeners`) so a\n * `RetainedContainer` ancestor - which skips walking a content-clean\n * subtree entirely - observes the mutation and re-collects instead of\n * replaying stale cached geometry.\n */\n private readonly _onChunkDirty = (): void => {\n this.invalidateContent();\n };\n\n /**\n * @param chunk The readonly chunk this node renders.\n * @param tilesets The owning layer's tileset array.\n * @param tileWidth Map/layer tile cell width in pixels.\n * @param tileHeight Map/layer tile cell height in pixels.\n * @param chunkWidthTiles The layer's (unclamped) chunk width in tiles, used\n * to compute the chunk's pixel origin. Edge chunks\n * report a smaller `chunk.width`, but always start at\n * `cx * chunkWidthTiles`.\n * @param chunkHeightTiles The layer's (unclamped) chunk height in tiles.\n */\n public constructor(\n chunk: ReadonlyTileChunk,\n tilesets: readonly TileSet[],\n tileWidth: number,\n tileHeight: number,\n chunkWidthTiles: number,\n chunkHeightTiles: number,\n ) {\n super();\n\n this._chunk = chunk;\n this._tilesets = tilesets;\n this._tileWidth = tileWidth;\n this._tileHeight = tileHeight;\n this._pixelWidth = chunk.width * tileWidth;\n this._pixelHeight = chunk.height * tileHeight;\n\n this.setPosition(chunk.cx * chunkWidthTiles * tileWidth, chunk.cy * chunkHeightTiles * tileHeight);\n\n // `loadedChunks()` always yields the concrete `TileChunk` behind the\n // readonly view (see TileLayer); the guard is defensive only.\n if (chunk instanceof TileChunk) {\n chunk._addDirtyListener(this._onChunkDirty);\n }\n }\n\n /** The signed chunk coordinates this node renders. */\n public get chunkX(): number {\n return this._chunk.cx;\n }\n\n public get chunkY(): number {\n return this._chunk.cy;\n }\n\n /**\n * The revision-cached per-tileset page geometry. Rebuilt only when the source\n * chunk's `revision` advances; otherwise the same arrays are returned.\n * @internal Read by the per-backend tile chunk renderer.\n */\n public get pages(): readonly ChunkPage[] {\n if (this._builtRevision !== this._chunk.revision) {\n this._pages = buildChunkPages(this._chunk, this._tilesets, this._tileWidth, this._tileHeight);\n this._builtRevision = this._chunk.revision;\n }\n\n return this._pages;\n }\n\n /** `true` when the chunk has no drawable tiles (no geometry, no draw calls). */\n public get isEmpty(): boolean {\n return this.pages.length === 0;\n }\n\n /**\n * Recomputed lazily on read, so it writes `_localBounds` directly rather than\n * going through `_setLocalBounds`: an invalidating write inside a getter\n * would re-dirty the node on every read.\n */\n public override getLocalBounds(): ReadonlyRectangle {\n return this._localBounds.set(0, 0, this._pixelWidth, this._pixelHeight);\n }\n\n public override destroy(): void {\n if (this._chunk instanceof TileChunk) {\n this._chunk._removeDirtyListener(this._onChunkDirty);\n }\n\n this._pages = [];\n this._builtRevision = -1;\n\n super.destroy();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAa,gBAAb,cAAmC,SAAS;CAC1C,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAEjB,AAAQ,SAAsB,CAAC;CAC/B,AAAQ,iBAAiB;;;;;;;;;CAUzB,AAAiB,sBAA4B;EAC3C,KAAK,kBAAkB;CACzB;;;;;;;;;;;;CAaA,AAAO,YACL,OACA,UACA,WACA,YACA,iBACA,kBACA;EACA,MAAM;EAEN,KAAK,SAAS;EACd,KAAK,YAAY;EACjB,KAAK,aAAa;EAClB,KAAK,cAAc;EACnB,KAAK,cAAc,MAAM,QAAQ;EACjC,KAAK,eAAe,MAAM,SAAS;EAEnC,KAAK,YAAY,MAAM,KAAK,kBAAkB,WAAW,MAAM,KAAK,mBAAmB,UAAU;EAIjG,IAAI,iBAAiB,WACnB,MAAM,kBAAkB,KAAK,aAAa;CAE9C;;CAGA,IAAW,SAAiB;EAC1B,OAAO,KAAK,OAAO;CACrB;CAEA,IAAW,SAAiB;EAC1B,OAAO,KAAK,OAAO;CACrB;;;;;;CAOA,IAAW,QAA8B;EACvC,IAAI,KAAK,mBAAmB,KAAK,OAAO,UAAU;GAChD,KAAK,SAAS,gBAAgB,KAAK,QAAQ,KAAK,WAAW,KAAK,YAAY,KAAK,WAAW;GAC5F,KAAK,iBAAiB,KAAK,OAAO;EACpC;EAEA,OAAO,KAAK;CACd;;CAGA,IAAW,UAAmB;EAC5B,OAAO,KAAK,MAAM,WAAW;CAC/B;;;;;;CAOA,AAAgB,iBAAoC;EAClD,OAAO,KAAK,aAAa,IAAI,GAAG,GAAG,KAAK,aAAa,KAAK,YAAY;CACxE;CAEA,AAAgB,UAAgB;EAC9B,IAAI,KAAK,kBAAkB,WACzB,KAAK,OAAO,qBAAqB,KAAK,aAAa;EAGrD,KAAK,SAAS,CAAC;EACf,KAAK,iBAAiB;EAEtB,MAAM,QAAQ;CAChB;AACF"}
|
package/dist/esm/TileLayer.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ChunkPayload } from './ChunkSource';
|
|
1
2
|
import type { ReadonlyTileChunk } from './TileChunk';
|
|
2
3
|
import { TileChunk } from './TileChunk';
|
|
3
4
|
import type { TileSet } from './TileSet';
|
|
@@ -12,10 +13,14 @@ export interface TileLayerOptions {
|
|
|
12
13
|
readonly id: number;
|
|
13
14
|
/** Display name (need not be unique). */
|
|
14
15
|
readonly name: string;
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Layer width in tiles. Omit together with {@link height} for an
|
|
18
|
+
* unbounded layer - chunk storage then accepts any signed chunk
|
|
19
|
+
* coordinate instead of being clamped to a fixed grid.
|
|
20
|
+
*/
|
|
21
|
+
readonly width?: number;
|
|
22
|
+
/** Layer height in tiles. Must be provided iff {@link width} is. */
|
|
23
|
+
readonly height?: number;
|
|
19
24
|
/** Chunk width in tiles (default 32). */
|
|
20
25
|
readonly chunkWidth?: number;
|
|
21
26
|
/** Chunk height in tiles (default 32). */
|
|
@@ -44,6 +49,11 @@ export interface TileLayerOptions {
|
|
|
44
49
|
* `0.5` = half speed (farther away), `0.0` = stationary. Default 1.
|
|
45
50
|
*/
|
|
46
51
|
readonly parallaxY?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Uniform scale applied together with the camera-relative parallax shift.
|
|
54
|
+
* `1` keeps the layer at its authored size. Default `1`.
|
|
55
|
+
*/
|
|
56
|
+
readonly parallaxScale?: number;
|
|
47
57
|
/** Layer class/type string (Tiled `class`). Defaults to `''`. */
|
|
48
58
|
readonly class?: string;
|
|
49
59
|
/**
|
|
@@ -54,6 +64,30 @@ export interface TileLayerOptions {
|
|
|
54
64
|
/** Layer properties (copied and frozen). */
|
|
55
65
|
readonly properties?: TileProperties;
|
|
56
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* The inclusive range of chunk coordinates that intersect a bounded
|
|
69
|
+
* {@link TileLayer}. `null` for an unbounded layer (no range limit).
|
|
70
|
+
* @advanced
|
|
71
|
+
*/
|
|
72
|
+
export interface ChunkRange {
|
|
73
|
+
readonly minCx: number;
|
|
74
|
+
readonly minCy: number;
|
|
75
|
+
readonly maxCx: number;
|
|
76
|
+
readonly maxCy: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Fired via {@link TileLayer._addStructuralListener} whenever a chunk is
|
|
80
|
+
* installed ({@link TileLayer._adoptChunk}) or evicted
|
|
81
|
+
* ({@link TileLayer._evictChunk}) - structural changes only, not per-tile
|
|
82
|
+
* edits (see {@link import('./TileChunk').TileChunk._addDirtyListener} for
|
|
83
|
+
* those). `chunk` is `null` on eviction.
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
export interface ChunkStructuralEvent {
|
|
87
|
+
readonly cx: number;
|
|
88
|
+
readonly cy: number;
|
|
89
|
+
readonly chunk: ReadonlyTileChunk | null;
|
|
90
|
+
}
|
|
57
91
|
/**
|
|
58
92
|
* A generic, format-independent tile layer with chunk-first storage.
|
|
59
93
|
*
|
|
@@ -64,10 +98,10 @@ export interface TileLayerOptions {
|
|
|
64
98
|
* **Mutation must go through the layer's public APIs only.**
|
|
65
99
|
* `setTileAt` / `clearTileAt` validate coordinates, tileset references,
|
|
66
100
|
* and increment revision counters only when the stored value actually
|
|
67
|
-
* changes. Direct chunk mutation is not supported
|
|
101
|
+
* changes. Direct chunk mutation is not supported - the layer owns chunk
|
|
68
102
|
* storage and exposes only a {@link ReadonlyTileChunk} view.
|
|
69
103
|
*
|
|
70
|
-
* The layer is NOT a SceneNode
|
|
104
|
+
* The layer is NOT a SceneNode - that integration lives in
|
|
71
105
|
* {@link import('./TileLayerNode').TileLayerNode}.
|
|
72
106
|
*
|
|
73
107
|
* @advanced
|
|
@@ -77,10 +111,10 @@ export declare class TileLayer {
|
|
|
77
111
|
readonly id: number;
|
|
78
112
|
/** Display name (may not be unique). */
|
|
79
113
|
readonly name: string;
|
|
80
|
-
/** Width in tiles. */
|
|
81
|
-
readonly width: number;
|
|
82
|
-
/** Height in tiles. */
|
|
83
|
-
readonly height: number;
|
|
114
|
+
/** Width in tiles, or `undefined` if unbounded. */
|
|
115
|
+
readonly width: number | undefined;
|
|
116
|
+
/** Height in tiles, or `undefined` if unbounded. */
|
|
117
|
+
readonly height: number | undefined;
|
|
84
118
|
/** Chunk width (tiles). */
|
|
85
119
|
readonly chunkWidth: number;
|
|
86
120
|
/** Chunk height (tiles). */
|
|
@@ -89,10 +123,12 @@ export declare class TileLayer {
|
|
|
89
123
|
readonly tileWidth: number;
|
|
90
124
|
/** Tile height in pixels. */
|
|
91
125
|
readonly tileHeight: number;
|
|
92
|
-
/**
|
|
93
|
-
get
|
|
94
|
-
/** Pixel
|
|
95
|
-
get
|
|
126
|
+
/** `true` if this layer has a fixed width/height; `false` if unbounded. */
|
|
127
|
+
get bounded(): boolean;
|
|
128
|
+
/** Pixel width, or `undefined` if unbounded. */
|
|
129
|
+
get pixelWidth(): number | undefined;
|
|
130
|
+
/** Pixel height, or `undefined` if unbounded. */
|
|
131
|
+
get pixelHeight(): number | undefined;
|
|
96
132
|
/** Visibility flag (mutable). */
|
|
97
133
|
visible: boolean;
|
|
98
134
|
/** Opacity 0..1 (mutable). */
|
|
@@ -111,6 +147,8 @@ export declare class TileLayer {
|
|
|
111
147
|
* `1.0` = full camera speed, `0.5` = half speed, `0.0` = stationary.
|
|
112
148
|
*/
|
|
113
149
|
readonly parallaxY: number;
|
|
150
|
+
/** Uniform scale applied around the layer origin during parallax rendering. */
|
|
151
|
+
readonly parallaxScale: number;
|
|
114
152
|
/** Layer class/type string (Tiled `class`; may be empty). */
|
|
115
153
|
readonly class: string;
|
|
116
154
|
/** Multiplicative layer tint as `0xRRGGBB`, or `null` for no tint. */
|
|
@@ -121,6 +159,8 @@ export declare class TileLayer {
|
|
|
121
159
|
readonly tilesets: readonly TileSet[];
|
|
122
160
|
/** Chunk storage: chunkKey → mutable TileChunk (internal). */
|
|
123
161
|
private readonly _chunks;
|
|
162
|
+
/** Package-internal structural (adopt/evict) listeners. */
|
|
163
|
+
private _structuralListeners;
|
|
124
164
|
/**
|
|
125
165
|
* Monotonic layer revision counter.
|
|
126
166
|
* Increments on every cell mutation that actually changes a stored value.
|
|
@@ -135,16 +175,15 @@ export declare class TileLayer {
|
|
|
135
175
|
constructor(options: TileLayerOptions);
|
|
136
176
|
/**
|
|
137
177
|
* Check whether a tile coordinate lies within the layer bounds.
|
|
178
|
+
* Always `true` for an unbounded layer.
|
|
138
179
|
* @advanced
|
|
139
180
|
*/
|
|
140
181
|
inBounds(tx: number, ty: number): boolean;
|
|
141
|
-
/**
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
maxCy: number;
|
|
147
|
-
};
|
|
182
|
+
/**
|
|
183
|
+
* Compute the range of chunk coordinates that intersect this layer, or
|
|
184
|
+
* `null` if the layer is unbounded (any signed chunk coordinate is valid).
|
|
185
|
+
*/
|
|
186
|
+
chunkRange(): ChunkRange | null;
|
|
148
187
|
private _chunkKey;
|
|
149
188
|
/**
|
|
150
189
|
* Get a readonly view of a chunk by signed chunk coordinates,
|
|
@@ -154,16 +193,56 @@ export declare class TileLayer {
|
|
|
154
193
|
getChunk(cx: number, cy: number): ReadonlyTileChunk | undefined;
|
|
155
194
|
/**
|
|
156
195
|
* Get or create a chunk at the given coordinates.
|
|
157
|
-
* For
|
|
196
|
+
* For a bounded layer, creation is only allowed within the valid chunk
|
|
197
|
+
* range and edge chunks are clamped to the layer's remaining size. For an
|
|
198
|
+
* unbounded layer, any signed chunk coordinate is accepted and every
|
|
199
|
+
* chunk is full-size ({@link chunkWidth} × {@link chunkHeight}).
|
|
158
200
|
*
|
|
159
201
|
* @internal Package-private: used by {@link setTileAt}, {@link fillRect},
|
|
160
202
|
* and future adapter ingest. External users should not allocate
|
|
161
|
-
* chunks
|
|
203
|
+
* chunks - use {@link setTileAt} to populate tiles.
|
|
162
204
|
*/
|
|
163
205
|
_ensureChunk(cx: number, cy: number): TileChunk;
|
|
206
|
+
/**
|
|
207
|
+
* Install a chunk-provider-supplied payload directly, bypassing per-tile
|
|
208
|
+
* `setTileAt` cost. Overwrites any existing chunk at `(cx, cy)`. Always
|
|
209
|
+
* bumps the layer revision (installing a chunk is always a structural
|
|
210
|
+
* change, even if the payload happens to be all-zero).
|
|
211
|
+
*
|
|
212
|
+
* Does not validate `(cx, cy)` against {@link chunkRange} - callers
|
|
213
|
+
* (chunk-streaming controllers) are trusted to request coordinates within
|
|
214
|
+
* whatever range they intend to manage.
|
|
215
|
+
*
|
|
216
|
+
* @internal Package-private: for future chunk-provider/streaming use.
|
|
217
|
+
*/
|
|
218
|
+
_adoptChunk(cx: number, cy: number, payload: ChunkPayload): void;
|
|
219
|
+
/**
|
|
220
|
+
* Evict a chunk from storage, freeing it for garbage collection. No-op if
|
|
221
|
+
* no chunk is loaded at `(cx, cy)`.
|
|
222
|
+
*
|
|
223
|
+
* @returns `true` if a chunk was found and removed, `false` otherwise.
|
|
224
|
+
* @internal Package-private: for future chunk-streaming eviction use.
|
|
225
|
+
*/
|
|
226
|
+
_evictChunk(cx: number, cy: number): boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Register a callback invoked synchronously whenever a chunk is installed
|
|
229
|
+
* ({@link _adoptChunk}) or evicted ({@link _evictChunk}). Package-internal:
|
|
230
|
+
* {@link import('./TileLayerNode').TileLayerNode} subscribes to keep its
|
|
231
|
+
* chunk-node children in sync with chunk-provider-driven adopt/evict calls
|
|
232
|
+
* (e.g. from {@link import('./ChunkStreamer').ChunkStreamer}) without
|
|
233
|
+
* needing a full {@link import('./TileLayerNode').TileLayerNode.refresh}.
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
_addStructuralListener(listener: (event: ChunkStructuralEvent) => void): void;
|
|
237
|
+
/**
|
|
238
|
+
* Unregister a listener added via {@link _addStructuralListener} (node destroy).
|
|
239
|
+
* @internal
|
|
240
|
+
*/
|
|
241
|
+
_removeStructuralListener(listener: (event: ChunkStructuralEvent) => void): void;
|
|
242
|
+
private _notifyStructural;
|
|
164
243
|
/**
|
|
165
244
|
* Iterate over all loaded chunks in deterministic (cy, cx) ascending order.
|
|
166
|
-
* Returns readonly chunk views
|
|
245
|
+
* Returns readonly chunk views - callers cannot mutate storage.
|
|
167
246
|
* @advanced
|
|
168
247
|
*/
|
|
169
248
|
loadedChunks(): IterableIterator<ReadonlyTileChunk>;
|
|
@@ -258,3 +337,4 @@ export declare class TileLayer {
|
|
|
258
337
|
*/
|
|
259
338
|
countNonEmptyTiles(): number;
|
|
260
339
|
}
|
|
340
|
+
//# sourceMappingURL=TileLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TileLayer.d.ts","sourceRoot":"","sources":["../../src/TileLayer.ts"],"names":[],"mappings":"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"}
|