Class System<TBody>

collision system

Type Parameters

Hierarchy

  • BaseSystem<TBody>
    • System

Constructors

  • 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.

    Type Parameters

    Parameters

    • 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.

    Returns System<TBody>

Properties

ray: Line

for raycasting

response: Response = ...

the last collision result

Methods

  • Returns all items contained in the tree.

    Returns TBody[]

  • check do 2 objects collide

    Parameters

    Returns boolean

  • Removes all items.

    Returns RBush<TBody>

  • Returns true if there are any items intersecting the given bounding box, otherwise false.

    Parameters

    • box: BBox

      The bounding box in which to search.

    Returns boolean

  • 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().

    Parameters

    • a: TBody

      The first item to compare.

    • b: TBody

      The second item to compare.

    Returns number

    Example

    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().

    Parameters

    • a: TBody

      The first item to compare.

    • b: TBody

      The second item to compare.

    Returns number

    Example

    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

    Parameters

    Returns Box

  • create ellipse at position with options and add to system

    Parameters

    Returns Ellipse

  • draw exact bodies colliders outline

    Parameters

    • context: CanvasRenderingContext2D

    Returns void

  • draw bounding boxes hierarchy outline

    Parameters

    • context: CanvasRenderingContext2D

    Returns void

  • 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.

    Parameters

    • data: any

      The previously exported JSON data.

    Returns RBush<TBody>

  • get object potential colliders

    Parameters

    Returns TBody[]

    Deprecated

    because it's slower to use than checkOne() or checkAll()

  • 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.

    Parameters

    • items: readonly TBody[]

      The items to load.

    Returns RBush<TBody>

  • 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.

    Parameters

    • box: BBox

      The bounding box in which to search.

    Returns TBody[]

  • separate (move away) bodies

    Returns void

  • separate (move away) 1 body

    Parameters

    Returns void

  • 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().

    Parameters

    • item: TBody

      The item whose bounding box should be returned.

    Returns BBox

    Example

    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.

    Returns any

  • used to find body deep inside data with finder function returning boolean found or not

    Parameters

    Returns undefined | TBody

  • update all bodies aabb

    Returns void

  • updates body in collision tree

    Parameters

    Returns void

Generated using TypeDoc