Create a SpatialHashGrid object using a fixed sized grid.
The min/max the grid will operate on. I.e. if the world goes from -1000, -1000 to 1000, 1000, then this should be [-1000, -1000], [1000, 1000].
How many cells along each dimensional axis. I.e. if the world is 100 units wide and we have 5 cells, then each cell will span 100/5=20 units.
Private boundsThe min and max the grid will operate on.
Private cellsA doubly-linked list containing a two-dimensional array of nodes. Each node corresponds to a cell.
See: https://medium.com/front-end-weekly/data-structures-linked-list-implementation-in-js-3beb48ff49cd
Private dimensionsHow many cells along each dimensional axis.
For example: If the world is 100 units wide and we have 5 cells, then each cell will span 100/5=20 units.
Private queryUsed to deduplicate clients in findNear.
Protected findPrivate getPrivate insertUsing the position and size of the client,
loop over the cells that the client touches.
If the client touches a cell, then insert the client into it.
Protected newProtected removeRemove client from the grid.
Update client.
Generated using TypeDoc
A spatial hash is a 2 or 3 dimensional extension of the hash table. The basic idea of a hash table is that you take a piece of data (the 'key'), run it through some function (the 'hash function') to produce a new value (the 'hash'), and then use the hash as an index into a set of slots ('cells').
Or, in other words: You can define you 2D world into a fixed grid, e.g 4x4.
If you place an object into the world, it would fall into a least one of these cells.
For example, let's put an object
Xat cellg.If we want to look for objects nearby, we simply check the nearby cells.
In this example, we ignore the diagonally neighbors.
In other words: This is just like Minesweeper
See: https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/spatial-hashing-r2697/
Author
André Wisén
Copyright
MIT