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).
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new ContinuousHashGrid2D(
cellSize):ContinuousHashGrid2D
Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:25
Parameters
Section titled “Parameters”cellSize
Section titled “cellSize”number
Returns
Section titled “Returns”ContinuousHashGrid2D
Properties
Section titled “Properties”cellSize
Section titled “cellSize”
readonlycellSize:number
Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:21
readonlygrid:HashGrid2D
Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:23
The underlying integer-cell grid.
Methods
Section titled “Methods”add(
id,x,y):void
Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:33
Parameters
Section titled “Parameters”number
number
Returns
Section titled “Returns”void
clear()
Section titled “clear()”clear():
void
Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:38
Returns
Section titled “Returns”void
findAt()
Section titled “findAt()”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).
Parameters
Section titled “Parameters”number
number
predicate
Section titled “predicate”(id) => boolean
Returns
Section titled “Returns”EntityId[]
findFirstAt()
Section titled “findFirstAt()”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.
Parameters
Section titled “Parameters”number
number
predicate
Section titled “predicate”(id) => boolean
Returns
Section titled “Returns”EntityId | undefined
getAt()
Section titled “getAt()”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.
Parameters
Section titled “Parameters”number
number
Returns
Section titled “Returns”ReadonlySet<EntityId> | undefined
getInRect()
Section titled “getInRect()”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.
Parameters
Section titled “Parameters”number
number
number
number
Returns
Section titled “Returns”EntityId[]
move()
Section titled “move()”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.
Parameters
Section titled “Parameters”number
number
number
number
Returns
Section titled “Returns”void
queryAt()
Section titled “queryAt()”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).
Parameters
Section titled “Parameters”number
number
Returns
Section titled “Returns”Iterable<EntityId>
queryNear()
Section titled “queryNear()”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.
Parameters
Section titled “Parameters”number
number
radius
Section titled “radius”number
Returns
Section titled “Returns”Iterable<EntityId>
queryRect()
Section titled “queryRect()”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].
Parameters
Section titled “Parameters”number
number
number
number
Returns
Section titled “Returns”Iterable<EntityId>
remove()
Section titled “remove()”remove(
id,x,y):void
Defined in: src/modules/spatial/continuous-hash-grid-2d.ts:111
Parameters
Section titled “Parameters”number
number
Returns
Section titled “Returns”void