Skip to content

ContinuousHashGrid2D

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:20

A HashGrid2D wrapper that accepts continuous {x, y} world-space positions and projects them to integer cell keys internally via Math.floor(pos / cellSize).

Useful when entity positions are in pixel or world-unit coordinates rather than pre-quantised grid indices. Three consumers (asteroids, platformer, top-down-shooter) all hand-rolled this projection before this class shipped.

Exposes the underlying HashGrid2D as .grid for consumers that need the integer-cell API directly (e.g. spatial queries in collision broadphase).

new ContinuousHashGrid2D(cellSize): ContinuousHashGrid2D

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:25

number

ContinuousHashGrid2D

readonly cellSize: number

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:21


readonly grid: HashGrid2D

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:23

The underlying integer-cell grid.

add(id, x, y): void

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:33

EntityId

number

number

void


clear(): void

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:38

void


findAt(x, y, predicate): EntityId[]

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:43

All matching entities in the cell containing (x, y).

number

number

(id) => boolean

EntityId[]


findFirstAt(x, y, predicate): EntityId | undefined

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:49

First matching entity in the cell containing (x, y), or undefined.

number

number

(id) => boolean

EntityId | undefined


getAt(x, y): ReadonlySet<EntityId> | undefined

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:57

All entities in the cell containing (x, y), or undefined if empty.

number

number

ReadonlySet<EntityId> | undefined


getInRect(x1, y1, x2, y2): EntityId[]

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:66

All entity IDs within the continuous rectangle [x1, x2] × [y1, y2] (inclusive bounds), returned as an array.

number

number

number

number

EntityId[]


move(id, fromX, fromY, toX, toY): void

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:76

Move an entity from one continuous position to another. Skips work when the old and new positions fall in the same cell.

EntityId

number

number

number

number

void


queryAt(x, y): Iterable<EntityId>

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:85

Iterate every entity in the cell containing (x, y).

number

number

Iterable<EntityId>


queryNear(x, y, radius): Iterable<EntityId>

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:95

Iterate every entity within radius world units of (x, y). The radius is converted to cells via Math.ceil(radius / cellSize) so the search conservatively covers the whole disc.

number

number

number

Iterable<EntityId>


queryRect(minX, minY, maxX, maxY): Iterable<EntityId>

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:105

Iterate every entity whose cell falls within the continuous axis-aligned rectangle [minX, maxX] × [minY, maxY].

number

number

number

number

Iterable<EntityId>


remove(id, x, y): void

Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:111

EntityId

number

number

void