Skip to content

galavi / TileManager

Class: TileManager<T>

Defined in: utils/tile.ts:650

TileManager<T> — composition helper held by tileable layers.

Owns a TilePool + TileLoadQueue + loadedTiles eviction set, the per-grid prevIndices mapping, and a shared pump/loadOne runner. Concrete layers compute the per-frame TilePlan (level, resSize, makeTile) and call commit(plan, loader, opts?) to push the plan onto the GPU + load queue.

Type Parameters

T extends TilePlacement

Constructors

new TileManager()

new TileManager<T>(maxConcurrent): TileManager<T>

Defined in: utils/tile.ts:658

Parameters

maxConcurrent

number = 4

Returns

TileManager<T>

Properties

pool?

optional pool: TilePool

Defined in: utils/tile.ts:651


queue

readonly queue: TileLoadQueue<T>

Defined in: utils/tile.ts:652


loadedTiles

readonly loadedTiles: Set<string>

Defined in: utils/tile.ts:653

Methods

init()

init(config): void

Defined in: utils/tile.ts:663

Synchronous pool construction. Idempotent.

Parameters

config

TilePoolConfig

Returns

void


setLoader()

setLoader(loader): void

Defined in: utils/tile.ts:668

Parameters

loader

TileLoader<T>

Returns

void


setOnUpdate()

setOnUpdate(cb?): void

Defined in: utils/tile.ts:672

Parameters

cb?

() => void

Returns

void


invalidatePrev()

invalidatePrev(): void

Defined in: utils/tile.ts:677

Forget the previous-frame slot mapping (e.g. on level / source change).

Returns

void


commit()

commit(plan, loader, opts?): void

Defined in: utils/tile.ts:692

Push a planTiles result onto the GPU + load queue:

  1. Write index buffer (current + prev slot per grid cell).
  2. Filter tiles needing a fetch (in-bounds, no slot, not loading).
  3. Sort by Manhattan distance from grid center.
  4. Bind per-frame loader, set the desired set, pump the queue.

Layers must call setOnUpdate/setLoader once at construction; commit accepts a fresh loader per call because the closures usually capture source / selection / sliceIndex that change between frames.

Parameters

plan

TilePlan<T>

loader

TileLoader<T>

opts?
inBounds

(tile) => boolean

Returns

void


pump()

pump(): void

Defined in: utils/tile.ts:730

Schedule any pending tile loads up to the queue's concurrency limit.

Returns

void


reset()

reset(): void

Defined in: utils/tile.ts:768

Drop all in-flight loads, the cache, the prev-slot map, and the pool.

Returns

void

Released under the GPL-3.0 License.