Spatial Hash Grid that extends Map & incrementally assigns IDs
- ✔️ Elements are stored on a 2D grid
- ✔️ Filter nearby elements
- ✔️ Extends Map
- ✔️ Incrementally assigns IDs
- 🟦 Written in TypeScript
npm i @wingit/icellmap
bun i @wingit/icellmap
import ICellMap from "@wingit/icellmap";
// create a ICellMap(width, height, cell size)
const units = new ICellMap(100, 100, 10);
// add a unit
// set id & hash to -1, it is used internally and gets reassigned when added
const unit = { id: -1, hash: -1, pos: {x: 0, y: 0}, name: "Bob" };
const id = units.add(unit);
console.log(id); // 0
console.log(unit.id); // 0
// delete a unit
units.delete(id);
// update a unit
unit.pos.x = 35;
units.update(unit);
// get cells in range
const cellsInRange = g.ig.units.query(pos, radius);
for (const cell of cellsInRange) {
for (const u of cell){
console.log(u);
}
}
MIT