Constructs an RBush
, a high-performance 2D
spatial index for points and rectangles. Based on an
optimized R-tree data structure with
bulk-insertion support.
Optional
maxEntries:
number
An optional argument to RBush defines the maximum
number of entries in a tree node. 9
(used
by default) is a reasonable choice for most
applications. Higher value means faster insertion and
slower search, and vice versa.
Protected
ray
for raycasting
the last collision result
check all bodies collisions with callback
check one body collisions with callback
Returns true
if there are any items
intersecting the given bounding box, otherwise
false
.
The bounding box in which to search.
Compares the minimum x coordinate of two items. Returns -1
if a
's x-coordinate is smaller, 1 if
b
's x coordinate is smaller, or 0 if
they're equal.
By default, RBush
assumes the format of data
points to be an object with minX
,
minY
, maxX
, and maxY
.
However, you can specify a custom item format by overriding
toBBox()
, compareMinX()
, and
compareMinY()
.
class MyRBush<T> extends RBush<T> {
toBBox([x, y]) { return { minX: x, minY: y, maxX: x, maxY: y }; }
compareMinX(a, b) { return a.x - b.x; }
compareMinY(a, b) { return a.y - b.y; }
}
const tree = new MyRBush<[number, number]>();
tree.insert([20, 50]); // accepts [x, y] points
Compares the minimum y coordinate of two items. Returns -1
if a
's x-coordinate is smaller, 1 if
b
's x coordinate is smaller, or 0 if
they're equal.
By default, RBush
assumes the format of data
points to be an object with minX
,
minY
, maxX
, and maxY
.
However, you can specify a custom item format by overriding
toBBox()
, compareMinX()
, and
compareMinY()
.
class MyRBush<T> extends RBush<T> {
toBBox([x, y]) { return { minX: x, minY: y, maxX: x, maxY: y }; }
compareMinX(a, b) { return a.x - b.x; }
compareMinY(a, b) { return a.y - b.y; }
}
const tree = new MyRBush<[number, number]>();
tree.insert([20, 50]); // accepts [x, y] points
create box at position with options and add to system
Optional
options:
BodyOptions
create circle at position with options and add to system
Optional
options:
BodyOptions
create ellipse at position with options and add to system
Optional
step:
number
Optional
options:
BodyOptions
create line at position with options and add to system
Optional
options:
BodyOptions
create point at position with options and add to system
Optional
options:
BodyOptions
create polygon at position with options and add to system
Optional
options:
BodyOptions
Imports previously exported data into the tree (i.e., data
that was emitted by toJSON()
).
Importing and exporting as JSON allows you to use RBush on both the server (using Node.js) and the browser combined, e.g. first indexing the data on the server and and then importing the resulting tree data on the client for searching.
Note that the maxEntries
option from the
constructor must be the same in both trees for export/import
to work properly.
The previously exported JSON data.
Bulk-inserts the given items into the tree.
Bulk insertion is usually ~2-3 times faster than inserting items one by one. After bulk loading (bulk insertion into an empty tree), subsequent query performance is also ~20-30% better.
Note that when you do bulk insertion into an existing tree, it bulk-loads the given data into a separate tree and inserts the smaller tree into the larger tree. This means that bulk insertion works very well for clustered data (where items in one update are close to each other), but makes query performance worse if the data is scattered.
The items to load.
raycast to get collider of ray from start to end
Returns an array of data items (points or rectangles) that the given bounding box intersects.
Note that the search method accepts a bounding box in
{minX, minY, maxX, maxY}
format regardless of
the data format.
The bounding box in which to search.
separate (move away) 1 body
Returns the bounding box for the provided item.
By default, RBush
assumes the format of data
points to be an object with minX
,
minY
, maxX
, and maxY
.
However, you can specify a custom item format by overriding
toBBox()
, compareMinX()
, and
compareMinY()
.
The item whose bounding box should be returned.
class MyRBush<T> extends RBush<T> {
toBBox([x, y]) { return { minX: x, minY: y, maxX: x, maxY: y }; }
compareMinX(a, b) { return a.x - b.x; }
compareMinY(a, b) { return a.y - b.y; }
}
const tree = new MyRBush<[number, number]>();
tree.insert([20, 50]); // accepts [x, y] points
Exports the tree's contents as a JSON object.
Importing and exporting as JSON allows you to use RBush on both the server (using Node.js) and the browser combined, e.g. first indexing the data on the server and and then importing the resulting tree data on the client for searching.
Note that the maxEntries
option from the
constructor must be the same in both trees for export/import
to work properly.
updates body in collision tree
Generated using TypeDoc
collision system