@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileLayer.js","sources":["../../../src/TileLayer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TileLayer.js","names":[],"sources":["../../src/TileLayer.ts"],"sourcesContent":["import type { ChunkPayload } from './ChunkSource';\nimport type { ReadonlyTileChunk } from './TileChunk';\nimport { TileChunk } from './TileChunk';\nimport type { TileSet } from './TileSet';\nimport type { TileProperties } from './types';\nimport type { PackedTile, ResolvedTile } from './types';\nimport { packTile, unpackTile, validateInteger, validateNonNegativeInteger, validatePairedDimensions, validatePositiveInteger } from './types';\nimport { tileToChunkCoord, tileToLocalInChunk } from './types';\n\n/**\n * Options for constructing a {@link TileLayer}.\n * @advanced\n */\nexport interface TileLayerOptions {\n /** Stable layer ID (unique within the map). */\n readonly id: number;\n /** Display name (need not be unique). */\n readonly name: string;\n /**\n * Layer width in tiles. Omit together with {@link height} for an\n * unbounded layer - chunk storage then accepts any signed chunk\n * coordinate instead of being clamped to a fixed grid.\n */\n readonly width?: number;\n /** Layer height in tiles. Must be provided iff {@link width} is. */\n readonly height?: number;\n /** Chunk width in tiles (default 32). */\n readonly chunkWidth?: number;\n /** Chunk height in tiles (default 32). */\n readonly chunkHeight?: number;\n /** Tilesets available to this layer (shared with the map). */\n readonly tilesets: readonly TileSet[];\n /** Tile width in pixels (for coordinate conversion). */\n readonly tileWidth: number;\n /** Tile height in pixels (for coordinate conversion). */\n readonly tileHeight: number;\n /** Initial visibility. Default true. */\n readonly visible?: boolean;\n /** Opacity 0..1. Default 1. */\n readonly opacity?: number;\n /** Layer pixel offset X. Default 0. */\n readonly offsetX?: number;\n /** Layer pixel offset Y. Default 0. */\n readonly offsetY?: number;\n /**\n * Parallax scroll factor on the X axis. `1.0` = full camera speed (normal),\n * `0.5` = half speed (farther away), `0.0` = stationary. Default 1.\n */\n readonly parallaxX?: number;\n /**\n * Parallax scroll factor on the Y axis. `1.0` = full camera speed (normal),\n * `0.5` = half speed (farther away), `0.0` = stationary. Default 1.\n */\n readonly parallaxY?: number;\n /**\n * Uniform scale applied together with the camera-relative parallax shift.\n * `1` keeps the layer at its authored size. Default `1`.\n */\n readonly parallaxScale?: number;\n /** Layer class/type string (Tiled `class`). Defaults to `''`. */\n readonly class?: string;\n /**\n * Multiplicative layer tint as a `0xRRGGBB` integer, or `null` for none\n * (Tiled `tintcolor`). Applied to every chunk's render tint. Default `null`.\n */\n readonly tintColor?: number | null;\n /** Layer properties (copied and frozen). */\n readonly properties?: TileProperties;\n}\n\nconst DEFAULT_CHUNK_SIZE = 32;\n\n/**\n * The inclusive range of chunk coordinates that intersect a bounded\n * {@link TileLayer}. `null` for an unbounded layer (no range limit).\n * @advanced\n */\nexport interface ChunkRange {\n readonly minCx: number;\n readonly minCy: number;\n readonly maxCx: number;\n readonly maxCy: number;\n}\n\n/**\n * Fired via {@link TileLayer._addStructuralListener} whenever a chunk is\n * installed ({@link TileLayer._adoptChunk}) or evicted\n * ({@link TileLayer._evictChunk}) - structural changes only, not per-tile\n * edits (see {@link import('./TileChunk').TileChunk._addDirtyListener} for\n * those). `chunk` is `null` on eviction.\n * @internal\n */\nexport interface ChunkStructuralEvent {\n readonly cx: number;\n readonly cy: number;\n readonly chunk: ReadonlyTileChunk | null;\n}\n\n/**\n * Resolved, defaulted subset of {@link TileLayerOptions} produced by\n * {@link validateTileLayerOptions}.\n */\ninterface ResolvedTileLayerOptions {\n readonly chunkWidth: number;\n readonly chunkHeight: number;\n readonly opacity: number;\n readonly offsetX: number;\n readonly offsetY: number;\n readonly parallaxX: number;\n readonly parallaxY: number;\n readonly parallaxScale: number;\n}\n\n/** Resolve and validate the optional uniform parallax scale. */\nconst resolveParallaxScale = (value = 1): number => {\n if (!Number.isFinite(value) || value <= 0) {\n throw new Error('TileLayer parallaxScale must be a positive finite number.');\n }\n\n return value;\n};\n\n/**\n * Validate a {@link TileLayerOptions} bag and resolve its optional fields\n * (chunk size, opacity, offset, parallax) to concrete defaults.\n * @throws When dimensions, chunk size, or other options are invalid.\n */\nconst validateTileLayerOptions = (options: TileLayerOptions): ResolvedTileLayerOptions => {\n validateNonNegativeInteger(options.id, 'layer.id');\n if (!options.name || typeof options.name !== 'string') {\n throw new Error('TileLayer name must be a non-empty string.');\n }\n validatePairedDimensions(options.width, options.height, 'TileLayer', 'layer');\n validatePositiveInteger(options.tileWidth, 'layer.tileWidth');\n validatePositiveInteger(options.tileHeight, 'layer.tileHeight');\n\n const chunkWidth = options.chunkWidth ?? DEFAULT_CHUNK_SIZE;\n const chunkHeight = options.chunkHeight ?? DEFAULT_CHUNK_SIZE;\n validatePositiveInteger(chunkWidth, 'chunkWidth');\n validatePositiveInteger(chunkHeight, 'chunkHeight');\n\n if (!Array.isArray(options.tilesets)) {\n throw new Error('TileLayer tilesets must be an array.');\n }\n\n const opacity = options.opacity ?? 1;\n if (typeof opacity !== 'number' || opacity < 0 || opacity > 1) {\n throw new Error(`TileLayer opacity must be 0..1 (got ${opacity}).`);\n }\n\n const offsetX = options.offsetX ?? 0;\n const offsetY = options.offsetY ?? 0;\n if (!Number.isFinite(offsetX) || !Number.isFinite(offsetY)) {\n throw new Error('TileLayer offset must be finite numbers.');\n }\n\n const parallaxX = options.parallaxX ?? 1;\n const parallaxY = options.parallaxY ?? 1;\n if (!Number.isFinite(parallaxX) || !Number.isFinite(parallaxY)) {\n throw new Error('TileLayer parallax must be finite numbers.');\n }\n\n const parallaxScale = resolveParallaxScale(options.parallaxScale);\n\n return { chunkWidth, chunkHeight, opacity, offsetX, offsetY, parallaxX, parallaxY, parallaxScale };\n};\n\n/**\n * A generic, format-independent tile layer with chunk-first storage.\n *\n * Tile data is stored in fixed-size {@link TileChunk}s indexed by signed\n * chunk coordinates. For finite maps, only chunks that intersect the layer\n * bounds exist.\n *\n * **Mutation must go through the layer's public APIs only.**\n * `setTileAt` / `clearTileAt` validate coordinates, tileset references,\n * and increment revision counters only when the stored value actually\n * changes. Direct chunk mutation is not supported - the layer owns chunk\n * storage and exposes only a {@link ReadonlyTileChunk} view.\n *\n * The layer is NOT a SceneNode - that integration lives in\n * {@link import('./TileLayerNode').TileLayerNode}.\n *\n * @advanced\n */\nexport class TileLayer {\n /** Stable unique ID within the map. */\n public readonly id: number;\n /** Display name (may not be unique). */\n public readonly name: string;\n\n /** Width in tiles, or `undefined` if unbounded. */\n public readonly width: number | undefined;\n /** Height in tiles, or `undefined` if unbounded. */\n public readonly height: number | undefined;\n\n /** Chunk width (tiles). */\n public readonly chunkWidth: number;\n /** Chunk height (tiles). */\n public readonly chunkHeight: number;\n\n /** Tile width in pixels. */\n public readonly tileWidth: number;\n /** Tile height in pixels. */\n public readonly tileHeight: number;\n\n /** `true` if this layer has a fixed width/height; `false` if unbounded. */\n public get bounded(): boolean {\n return this.width !== undefined && this.height !== undefined;\n }\n\n /** Pixel width, or `undefined` if unbounded. */\n public get pixelWidth(): number | undefined {\n return this.width === undefined ? undefined : this.width * this.tileWidth;\n }\n /** Pixel height, or `undefined` if unbounded. */\n public get pixelHeight(): number | undefined {\n return this.height === undefined ? undefined : this.height * this.tileHeight;\n }\n\n /** Visibility flag (mutable). */\n public visible: boolean;\n /** Opacity 0..1 (mutable). */\n public opacity: number;\n /** Horizontal pixel offset (mutable). */\n public offsetX: number;\n /** Vertical pixel offset (mutable). */\n public offsetY: number;\n /**\n * Parallax scroll factor on the X axis.\n * `1.0` = full camera speed, `0.5` = half speed, `0.0` = stationary.\n */\n public readonly parallaxX: number;\n /**\n * Parallax scroll factor on the Y axis.\n * `1.0` = full camera speed, `0.5` = half speed, `0.0` = stationary.\n */\n public readonly parallaxY: number;\n /** Uniform scale applied around the layer origin during parallax rendering. */\n public readonly parallaxScale: number;\n\n /** Layer class/type string (Tiled `class`; may be empty). */\n public readonly class: string;\n /** Multiplicative layer tint as `0xRRGGBB`, or `null` for no tint. */\n public readonly tintColor: number | null;\n\n /** Immutable layer properties. */\n public readonly properties: TileProperties;\n\n /** The tilesets available to this layer (shared array reference). */\n public readonly tilesets: readonly TileSet[];\n\n /** Chunk storage: chunkKey → mutable TileChunk (internal). */\n private readonly _chunks = new Map<string, TileChunk>();\n\n /** Package-internal structural (adopt/evict) listeners. */\n private _structuralListeners: Set<(event: ChunkStructuralEvent) => void> | null = null;\n\n /**\n * Monotonic layer revision counter.\n * Increments on every cell mutation that actually changes a stored value.\n * Does NOT increment on no-op writes or failed mutations.\n */\n private _revision = 0;\n\n /** Whether the layer has been destroyed. */\n private _destroyed = false;\n\n /**\n * @throws When dimensions, chunk size, or other options are invalid.\n */\n public constructor(options: TileLayerOptions) {\n const { chunkWidth, chunkHeight, opacity, offsetX, offsetY, parallaxX, parallaxY, parallaxScale } = validateTileLayerOptions(options);\n\n this.id = options.id;\n this.name = options.name;\n this.width = options.width;\n this.height = options.height;\n this.chunkWidth = chunkWidth;\n this.chunkHeight = chunkHeight;\n this.tileWidth = options.tileWidth;\n this.tileHeight = options.tileHeight;\n this.tilesets = options.tilesets;\n this.visible = options.visible ?? true;\n this.opacity = opacity;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.parallaxX = parallaxX;\n this.parallaxY = parallaxY;\n this.parallaxScale = parallaxScale;\n this.class = options.class ?? '';\n this.tintColor = options.tintColor ?? null;\n this.properties = options.properties ? Object.freeze({ ...options.properties }) : Object.freeze({});\n }\n\n // ── Bounds helpers ────────────────────────────────────────────────────\n\n /**\n * Check whether a tile coordinate lies within the layer bounds.\n * Always `true` for an unbounded layer.\n * @advanced\n */\n public inBounds(tx: number, ty: number): boolean {\n if (this.width === undefined || this.height === undefined) return true;\n return tx >= 0 && tx < this.width && ty >= 0 && ty < this.height;\n }\n\n /**\n * Compute the range of chunk coordinates that intersect this layer, or\n * `null` if the layer is unbounded (any signed chunk coordinate is valid).\n */\n public chunkRange(): ChunkRange | null {\n if (this.width === undefined || this.height === undefined) return null;\n return {\n minCx: 0,\n minCy: 0,\n maxCx: Math.floor((this.width - 1) / this.chunkWidth),\n maxCy: Math.floor((this.height - 1) / this.chunkHeight),\n };\n }\n\n // ── Chunk keying ──────────────────────────────────────────────────────\n\n private _chunkKey(cx: number, cy: number): string {\n return `${cx},${cy}`;\n }\n\n /**\n * Get a readonly view of a chunk by signed chunk coordinates,\n * or undefined if it does not exist (never been touched).\n * @advanced\n */\n public getChunk(cx: number, cy: number): ReadonlyTileChunk | undefined {\n return this._chunks.get(this._chunkKey(cx, cy));\n }\n\n /**\n * Get or create a chunk at the given coordinates.\n * For a bounded layer, creation is only allowed within the valid chunk\n * range and edge chunks are clamped to the layer's remaining size. For an\n * unbounded layer, any signed chunk coordinate is accepted and every\n * chunk is full-size ({@link chunkWidth} × {@link chunkHeight}).\n *\n * @internal Package-private: used by {@link setTileAt}, {@link fillRect},\n * and future adapter ingest. External users should not allocate\n * chunks - use {@link setTileAt} to populate tiles.\n */\n public _ensureChunk(cx: number, cy: number): TileChunk {\n this._checkDestroyed();\n const key = this._chunkKey(cx, cy);\n let chunk = this._chunks.get(key);\n if (!chunk) {\n const range = this.chunkRange();\n let cw = this.chunkWidth;\n let ch = this.chunkHeight;\n if (range !== null && this.width !== undefined && this.height !== undefined) {\n if (cx < range.minCx || cx > range.maxCx || cy < range.minCy || cy > range.maxCy) {\n throw new Error(`Chunk (${cx}, ${cy}) outside layer chunk range ` + `[${range.minCx}..${range.maxCx}, ${range.minCy}..${range.maxCy}].`);\n }\n // Compute the actual tile dimensions for this chunk (edge chunks may be smaller).\n const startTx = cx * this.chunkWidth;\n const startTy = cy * this.chunkHeight;\n cw = Math.min(this.chunkWidth, this.width - startTx);\n ch = Math.min(this.chunkHeight, this.height - startTy);\n }\n chunk = new TileChunk(cx, cy, cw, ch);\n this._chunks.set(key, chunk);\n }\n return chunk;\n }\n\n /**\n * Install a chunk-provider-supplied payload directly, bypassing per-tile\n * `setTileAt` cost. Overwrites any existing chunk at `(cx, cy)`. Always\n * bumps the layer revision (installing a chunk is always a structural\n * change, even if the payload happens to be all-zero).\n *\n * Does not validate `(cx, cy)` against {@link chunkRange} - callers\n * (chunk-streaming controllers) are trusted to request coordinates within\n * whatever range they intend to manage.\n *\n * @internal Package-private: for future chunk-provider/streaming use.\n */\n public _adoptChunk(cx: number, cy: number, payload: ChunkPayload): void {\n this._checkDestroyed();\n const chunk = new TileChunk(cx, cy, payload.width, payload.height, payload.tiles);\n this._chunks.set(this._chunkKey(cx, cy), chunk);\n this._revision++;\n this._notifyStructural({ cx, cy, chunk });\n }\n\n /**\n * Evict a chunk from storage, freeing it for garbage collection. No-op if\n * no chunk is loaded at `(cx, cy)`.\n *\n * @returns `true` if a chunk was found and removed, `false` otherwise.\n * @internal Package-private: for future chunk-streaming eviction use.\n */\n public _evictChunk(cx: number, cy: number): boolean {\n this._checkDestroyed();\n const key = this._chunkKey(cx, cy);\n if (!this._chunks.delete(key)) return false;\n this._revision++;\n this._notifyStructural({ cx, cy, chunk: null });\n return true;\n }\n\n /**\n * Register a callback invoked synchronously whenever a chunk is installed\n * ({@link _adoptChunk}) or evicted ({@link _evictChunk}). Package-internal:\n * {@link import('./TileLayerNode').TileLayerNode} subscribes to keep its\n * chunk-node children in sync with chunk-provider-driven adopt/evict calls\n * (e.g. from {@link import('./ChunkStreamer').ChunkStreamer}) without\n * needing a full {@link import('./TileLayerNode').TileLayerNode.refresh}.\n * @internal\n */\n public _addStructuralListener(listener: (event: ChunkStructuralEvent) => void): void {\n (this._structuralListeners ??= new Set()).add(listener);\n }\n\n /**\n * Unregister a listener added via {@link _addStructuralListener} (node destroy).\n * @internal\n */\n public _removeStructuralListener(listener: (event: ChunkStructuralEvent) => void): void {\n this._structuralListeners?.delete(listener);\n }\n\n private _notifyStructural(event: ChunkStructuralEvent): void {\n if (this._structuralListeners === null) return;\n for (const listener of this._structuralListeners) {\n listener(event);\n }\n }\n\n /**\n * Iterate over all loaded chunks in deterministic (cy, cx) ascending order.\n * Returns readonly chunk views - callers cannot mutate storage.\n * @advanced\n */\n public loadedChunks(): IterableIterator<ReadonlyTileChunk> {\n const entries = [...this._chunks.values()];\n entries.sort((a, b) => a.cy - b.cy || a.cx - b.cx);\n return entries[Symbol.iterator]();\n }\n\n // ── Tile queries ──────────────────────────────────────────────────────\n\n /**\n * Get the raw packed tile word at (tx, ty). Returns 0 for empty or out-of-bounds.\n * @advanced\n */\n public getRawTileAt(tx: number, ty: number): PackedTile {\n validateInteger(tx, 'tx');\n validateInteger(ty, 'ty');\n if (!this.inBounds(tx, ty)) return 0;\n const { cx, cy } = tileToChunkCoord(tx, ty, this.chunkWidth, this.chunkHeight);\n const chunk = this._chunks.get(this._chunkKey(cx, cy));\n if (!chunk) return 0;\n const { lx, ly } = tileToLocalInChunk(tx, ty, this.chunkWidth, this.chunkHeight);\n return chunk.getRawAt(lx, ly);\n }\n\n /**\n * Query a resolved tile at (tx, ty). Returns null for empty or out-of-bounds.\n * @advanced\n */\n public getTileAt(tx: number, ty: number): ResolvedTile | null {\n const packed = this.getRawTileAt(tx, ty);\n if (packed === 0) return null;\n const decoded = unpackTile(packed);\n if (!decoded) return null;\n if (decoded.tilesetIndex >= this.tilesets.length) return null;\n const tileset = this.tilesets[decoded.tilesetIndex]!;\n if (decoded.localTileId >= tileset.tileCount) return null;\n return {\n tileset,\n localTileId: decoded.localTileId,\n transform: decoded.transform,\n };\n }\n\n // ── Mutation ──────────────────────────────────────────────────────────\n\n /**\n * Validate a tile reference against the layer's tilesets.\n * Returns the packed form or throws.\n */\n private _validateTileRef(tile: ResolvedTile): PackedTile {\n if (!tile?.tileset) {\n throw new Error('setTileAt requires a valid ResolvedTile.');\n }\n const tilesetIndex = this.tilesets.indexOf(tile.tileset);\n if (tilesetIndex === -1) {\n throw new Error(`Tileset \"${tile.tileset.name}\" is not available to layer \"${this.name}\".`);\n }\n if (tile.localTileId < 0 || tile.localTileId >= tile.tileset.tileCount) {\n throw new Error(`localTileId ${tile.localTileId} out of range for tileset \"${tile.tileset.name}\" ` + `(max ${tile.tileset.tileCount - 1}).`);\n }\n return packTile(tilesetIndex, tile.localTileId, tile.transform);\n }\n\n /**\n * Set a tile at the given tile coordinates.\n * No-op if the effective value is unchanged.\n * @throws If coordinates are out of bounds or the tile reference is invalid.\n * @advanced\n */\n public setTileAt(tx: number, ty: number, tile: ResolvedTile): void {\n this._checkDestroyed();\n validateInteger(tx, 'tx');\n validateInteger(ty, 'ty');\n if (!this.inBounds(tx, ty)) {\n const boundsMsg = this.width !== undefined && this.height !== undefined ? `[0..${this.width - 1}, 0..${this.height - 1}]` : '[unbounded]';\n throw new Error(`setTileAt (${tx}, ${ty}) out of bounds ${boundsMsg}.`);\n }\n const packed = this._validateTileRef(tile);\n const { cx, cy } = tileToChunkCoord(tx, ty, this.chunkWidth, this.chunkHeight);\n const chunk = this._ensureChunk(cx, cy);\n const { lx, ly } = tileToLocalInChunk(tx, ty, this.chunkWidth, this.chunkHeight);\n if (chunk._setRawAt(lx, ly, packed)) {\n this._revision++;\n }\n }\n\n /**\n * Clear (erase) the tile at the given coordinates.\n * No-op if the cell is already empty.\n * @throws If coordinates are out of bounds.\n * @advanced\n */\n public clearTileAt(tx: number, ty: number): void {\n this._checkDestroyed();\n validateInteger(tx, 'tx');\n validateInteger(ty, 'ty');\n if (!this.inBounds(tx, ty)) {\n const boundsMsg = this.width !== undefined && this.height !== undefined ? `[0..${this.width - 1}, 0..${this.height - 1}]` : '[unbounded]';\n throw new Error(`clearTileAt (${tx}, ${ty}) out of bounds ${boundsMsg}.`);\n }\n const { cx, cy } = tileToChunkCoord(tx, ty, this.chunkWidth, this.chunkHeight);\n const chunk = this._chunks.get(this._chunkKey(cx, cy));\n if (!chunk) return; // no chunk = already empty\n const { lx, ly } = tileToLocalInChunk(tx, ty, this.chunkWidth, this.chunkHeight);\n if (chunk._setRawAt(lx, ly, 0)) {\n this._revision++;\n }\n }\n\n // ── Bulk fill ─────────────────────────────────────────────────────────\n\n /**\n * Fill a rectangular region with a tile.\n * @advanced\n */\n public fillRect(x: number, y: number, w: number, h: number, tile: ResolvedTile): void {\n this._checkDestroyed();\n const packed = this._validateTileRef(tile);\n let changed = false;\n for (let ty = y; ty < y + h; ty++) {\n for (let tx = x; tx < x + w; tx++) {\n if (!this.inBounds(tx, ty)) continue;\n const { cx, cy } = tileToChunkCoord(tx, ty, this.chunkWidth, this.chunkHeight);\n const chunk = this._ensureChunk(cx, cy);\n const { lx, ly } = tileToLocalInChunk(tx, ty, this.chunkWidth, this.chunkHeight);\n if (chunk._setRawAt(lx, ly, packed)) {\n changed = true;\n }\n }\n }\n if (changed) this._revision++;\n }\n\n /**\n * Clear a rectangular region.\n * @advanced\n */\n public clearRect(x: number, y: number, w: number, h: number): void {\n this._checkDestroyed();\n let changed = false;\n for (let ty = y; ty < y + h; ty++) {\n for (let tx = x; tx < x + w; tx++) {\n if (!this.inBounds(tx, ty)) continue;\n const { cx, cy } = tileToChunkCoord(tx, ty, this.chunkWidth, this.chunkHeight);\n const chunk = this._chunks.get(this._chunkKey(cx, cy));\n if (!chunk) continue;\n const { lx, ly } = tileToLocalInChunk(tx, ty, this.chunkWidth, this.chunkHeight);\n if (chunk._setRawAt(lx, ly, 0)) {\n changed = true;\n }\n }\n }\n if (changed) this._revision++;\n }\n\n // ── Iteration ─────────────────────────────────────────────────────────\n\n /**\n * Iterate non-empty tiles within a rectangular region in row-major order.\n * Yields (tx, ty, resolvedTile) tuples. Skips empty cells.\n * @advanced\n */\n public *tilesInRect(x: number, y: number, w: number, h: number): Generator<{ tx: number; ty: number; tile: ResolvedTile }> {\n const startCx = Math.floor(x / this.chunkWidth);\n const endCx = Math.floor((x + w - 1) / this.chunkWidth);\n const startCy = Math.floor(y / this.chunkHeight);\n const endCy = Math.floor((y + h - 1) / this.chunkHeight);\n\n for (let cy = startCy; cy <= endCy; cy++) {\n for (let cx = startCx; cx <= endCx; cx++) {\n const chunk = this._chunks.get(this._chunkKey(cx, cy));\n if (!chunk || chunk.empty) continue;\n\n const chunkStartTx = cx * this.chunkWidth;\n const chunkStartTy = cy * this.chunkHeight;\n const minLx = Math.max(0, x - chunkStartTx);\n const maxLx = Math.min(chunk.width - 1, x + w - 1 - chunkStartTx);\n const minLy = Math.max(0, y - chunkStartTy);\n const maxLy = Math.min(chunk.height - 1, y + h - 1 - chunkStartTy);\n\n for (let ly = minLy; ly <= maxLy; ly++) {\n for (let lx = minLx; lx <= maxLx; lx++) {\n const packed = chunk.getRawAt(lx, ly);\n if (packed === 0) continue;\n const decoded = unpackTile(packed);\n if (!decoded) continue;\n if (decoded.tilesetIndex >= this.tilesets.length) continue;\n const tileset = this.tilesets[decoded.tilesetIndex]!;\n if (decoded.localTileId >= tileset.tileCount) continue;\n yield {\n tx: chunkStartTx + lx,\n ty: chunkStartTy + ly,\n tile: {\n tileset,\n localTileId: decoded.localTileId,\n transform: decoded.transform,\n },\n };\n }\n }\n }\n }\n }\n\n // ── Coordinate conversion ─────────────────────────────────────────────\n\n /**\n * Convert a tile coordinate to the pixel position of its top-left corner\n * in the layer's local space.\n * @advanced\n */\n public tileToPixel(tx: number, ty: number): { x: number; y: number } {\n return {\n x: tx * this.tileWidth + this.offsetX,\n y: ty * this.tileHeight + this.offsetY,\n };\n }\n\n /**\n * Convert a local pixel position to the tile coordinate that contains it.\n * Uses `floor`, so a point exactly on a tile boundary maps to the tile.\n * May return coordinates outside layer bounds.\n * @advanced\n */\n public pixelToTile(px: number, py: number): { tx: number; ty: number } {\n return {\n tx: Math.floor((px - this.offsetX) / this.tileWidth),\n ty: Math.floor((py - this.offsetY) / this.tileHeight),\n };\n }\n\n // ── Revision / lifecycle ──────────────────────────────────────────────\n\n /**\n * Monotonic layer revision counter.\n * Increments on every cell mutation that changes a stored value.\n * No-op writes and failed mutations do NOT increment.\n * @advanced\n */\n public get revision(): number {\n return this._revision;\n }\n\n /** Whether the layer has been destroyed. */\n public get destroyed(): boolean {\n return this._destroyed;\n }\n\n private _checkDestroyed(): void {\n if (this._destroyed) {\n throw new Error(`TileLayer \"${this.name}\" has been destroyed.`);\n }\n }\n\n /**\n * Destroy this layer: clear chunk storage and mark destroyed.\n * Does NOT destroy tileset textures or external resources.\n * Idempotent.\n */\n public destroy(): void {\n if (this._destroyed) return;\n this._destroyed = true;\n this._chunks.clear();\n }\n\n /**\n * Total number of non-empty tiles across all chunks.\n * Walk is cheap for dense layers; sparse layers benefit from empty-chunk fast path.\n * @advanced\n */\n public countNonEmptyTiles(): number {\n let count = 0;\n for (const chunk of this._chunks.values()) {\n for (let ly = 0; ly < chunk.height; ly++) {\n for (let lx = 0; lx < chunk.width; lx++) {\n if (chunk.getRawAt(lx, ly) !== 0) count++;\n }\n }\n }\n return count;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReadonlyRectangle } from '@codexo/exojs';
|
|
2
2
|
import { Container } from '@codexo/exojs';
|
|
3
|
-
import
|
|
3
|
+
import { PixelSnapMode, type RenderPlanBuilder } from '@codexo/exojs/renderer-sdk';
|
|
4
4
|
import { TileChunkNode } from './TileChunkNode';
|
|
5
5
|
import type { TileLayer } from './TileLayer';
|
|
6
6
|
/**
|
|
@@ -26,12 +26,23 @@ export interface TileLayerNodeOptions {
|
|
|
26
26
|
* `offset` is applied to this node's transform; `visible` and `opacity` are
|
|
27
27
|
* read live from the runtime layer on every frame (no rebuild required).
|
|
28
28
|
*
|
|
29
|
-
*
|
|
29
|
+
* A `parallax` factor other than `1` makes this node's rendered position
|
|
30
|
+
* camera-dependent, resolved per frame in {@link _collectContent} by patching
|
|
31
|
+
* the node position against the camera centre, then restoring it - the cull
|
|
32
|
+
* test runs before that patch, so a bounded layer with parallax would be
|
|
33
|
+
* culled at its static base-offset bounds while actually rendering elsewhere.
|
|
34
|
+
* Such a layer therefore opts out of view culling (`cullable = false`), same
|
|
35
|
+
* as an unbounded layer (exactly like {@link import('./ImageLayerNode').ImageLayerNode}).
|
|
36
|
+
*
|
|
37
|
+
* The node references - but never owns - the {@link TileLayer}: destroying it
|
|
30
38
|
* frees its chunk nodes and their cached geometry but leaves the layer, map,
|
|
31
39
|
* and Loader-owned textures intact.
|
|
32
40
|
*
|
|
33
|
-
* Structural changes
|
|
34
|
-
* are
|
|
41
|
+
* Structural changes made via `_adoptChunk`/`_evictChunk` (chunk streaming)
|
|
42
|
+
* are picked up incrementally as they happen, without a full rebuild.
|
|
43
|
+
* {@link TileLayerNode.refresh} remains available for callers that mutate
|
|
44
|
+
* chunk structure by other means (e.g. a bulk edit that bypasses
|
|
45
|
+
* `_adoptChunk`/`_evictChunk`) and need a full resync. In-place tile edits to
|
|
35
46
|
* existing chunks are picked up automatically via chunk revisions.
|
|
36
47
|
*
|
|
37
48
|
* @advanced
|
|
@@ -45,6 +56,14 @@ export declare class TileLayerNode extends Container {
|
|
|
45
56
|
private _pixelSnapMode;
|
|
46
57
|
private readonly _baseOffsetX;
|
|
47
58
|
private readonly _baseOffsetY;
|
|
59
|
+
/**
|
|
60
|
+
* Bound once so `TileLayer._addStructuralListener`/`_removeStructuralListener`
|
|
61
|
+
* add and remove the SAME function reference. Incrementally adds/removes
|
|
62
|
+
* the `TileChunkNode` child for exactly the chunk that changed - never
|
|
63
|
+
* triggers a full {@link refresh}, so every other chunk node's
|
|
64
|
+
* revision-cached geometry survives untouched.
|
|
65
|
+
*/
|
|
66
|
+
private readonly _onStructuralChange;
|
|
48
67
|
constructor(layer: TileLayer, options?: TileLayerNodeOptions);
|
|
49
68
|
/** The runtime layer this node renders. */
|
|
50
69
|
get layer(): TileLayer;
|
|
@@ -56,12 +75,12 @@ export declare class TileLayerNode extends Container {
|
|
|
56
75
|
* origin, the whole grid stays exact and adjacent chunks cannot drift apart.
|
|
57
76
|
*
|
|
58
77
|
* Purely visual: tile data, the layer offset, chunk content revisions, and
|
|
59
|
-
* culling bounds are never changed. `
|
|
78
|
+
* culling bounds are never changed. `PixelSnapMode.Geometry` and `PixelSnapMode.Position` both resolve
|
|
60
79
|
* to coherent origin snapping for tile chunks (chunk quads are already on the
|
|
61
80
|
* integer pixel grid by construction). Setting the current value is a no-op;
|
|
62
81
|
* an invalid value throws and leaves the prior mode unchanged.
|
|
63
82
|
*
|
|
64
|
-
* @default
|
|
83
|
+
* @default PixelSnapMode.None
|
|
65
84
|
* @stable
|
|
66
85
|
*/
|
|
67
86
|
get pixelSnapMode(): PixelSnapMode;
|
|
@@ -74,15 +93,37 @@ export declare class TileLayerNode extends Container {
|
|
|
74
93
|
refresh(): this;
|
|
75
94
|
/** The chunk render nodes owned by this layer node, in build order. @internal */
|
|
76
95
|
get chunkNodes(): readonly TileChunkNode[];
|
|
77
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Recomputed lazily on read, so it writes `_localBounds` directly rather than
|
|
98
|
+
* going through `_setLocalBounds`: an invalidating write inside a getter
|
|
99
|
+
* would re-dirty the node on every read.
|
|
100
|
+
*/
|
|
101
|
+
getLocalBounds(): ReadonlyRectangle;
|
|
78
102
|
/** @internal */
|
|
79
103
|
protected _collectContent(builder: RenderPlanBuilder): void;
|
|
80
104
|
destroy(): void;
|
|
81
105
|
private _buildChunkNodes;
|
|
82
106
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
107
|
+
* Construct one configured {@link TileChunkNode} for `chunk` - shared by
|
|
108
|
+
* the initial bulk build ({@link _buildChunkNodes}) and the incremental
|
|
109
|
+
* structural-listener handler, so a future constructor argument or
|
|
110
|
+
* per-node setting only needs to be added in one place.
|
|
111
|
+
*/
|
|
112
|
+
private _createChunkNode;
|
|
113
|
+
/**
|
|
114
|
+
* Compute and apply this layer's live tint (opacity as alpha, `tintColor`
|
|
115
|
+
* as RGB multiply) to a single chunk node. Used both by {@link _syncTint}'s
|
|
116
|
+
* bulk pass and by the structural-listener handler for a freshly-added
|
|
117
|
+
* node - a node added between two "nothing changed" full syncs must still
|
|
118
|
+
* receive the current tint, which a change-detection-guarded bulk pass
|
|
119
|
+
* alone would skip.
|
|
120
|
+
*/
|
|
121
|
+
private _applyTint;
|
|
122
|
+
/**
|
|
123
|
+
* Propagate the layer's live opacity and tint colour onto every chunk
|
|
124
|
+
* render tint if either changed since the last call. Opacity drives the
|
|
125
|
+
* tint alpha; `tintColor` (`0xRRGGBB`) multiplies the RGB (white = no tint).
|
|
86
126
|
*/
|
|
87
127
|
private _syncTint;
|
|
88
128
|
}
|
|
129
|
+
//# sourceMappingURL=TileLayerNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TileLayerNode.d.ts","sourceRoot":"","sources":["../../src/TileLayerNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAKnF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAwB,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAoBlC;gBAEiB,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAkBnE,2CAA2C;IAC3C,IAAW,KAAK,IAAI,SAAS,CAE5B;IAED;;;;;;;;;;;;;;;OAeG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED,IAAW,aAAa,CAAC,IAAI,EAAE,aAAa,EAW3C;IAED;;;;OAIG;IACI,OAAO,IAAI,IAAI;IAiBtB,iFAAiF;IACjF,IAAW,UAAU,IAAI,SAAS,aAAa,EAAE,CAEhD;IAED;;;;OAIG;IACa,cAAc,IAAI,iBAAiB;IAgBnD,gBAAgB;cACG,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IA4CpD,OAAO,IAAI,IAAI;IAc/B,OAAO,CAAC,gBAAgB;IAiBxB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,SAAS;CAelB"}
|