new QuadTree(x, y, width, height, maxObjects, maxLevels, level)
A QuadTree implementation. The original code was a conversion of the Java code posted to GameDevTuts. However I've tweaked it massively to add node indexing, removed lots of temp. var creation and significantly increased performance as a result. Original version at https://github.com/timohausmann/quadtree-js/
Parameters:
| Name | Type | Argument | Default | Description |
|---|---|---|---|---|
x |
number | The top left coordinate of the quadtree. |
||
y |
number | The top left coordinate of the quadtree. |
||
width |
number | The width of the quadtree in pixels. |
||
height |
number | The height of the quadtree in pixels. |
||
maxObjects |
number |
<optional> |
10 | The maximum number of objects per node. |
maxLevels |
number |
<optional> |
4 | The maximum number of levels to iterate to. |
level |
number |
<optional> |
0 | Which level is this? |
- Source - math/QuadTree.js, line 23
Members
-
bounds :object
-
Object that contains the quadtree bounds.
- Source - math/QuadTree.js, line 45
-
level :number
-
The current level.
- Source - math/QuadTree.js, line 40
-
maxLevels :number
-
The maximum number of levels to break down to.
- Default Value:
- 4
- Source - math/QuadTree.js, line 35
-
maxObjects :number
-
The maximum number of objects per node.
- Default Value:
- 10
- Source - math/QuadTree.js, line 29
-
nodes :array
-
Array of associated child nodes.
- Source - math/QuadTree.js, line 55
-
objects :array
-
Array of quadtree children.
- Source - math/QuadTree.js, line 50
Methods
-
clear()
-
Clear the quadtree.
- Source - math/QuadTree.js, line 295
-
getIndex(rect) → {number}
-
Determine which node the object belongs to.
Parameters:
Name Type Description rectPhaser.Rectangle | object The bounds in which to check.
Returns:
number -index - Index of the subnode (0-3), or -1 if rect cannot completely fit within a subnode and is part of the parent node.
- Source - math/QuadTree.js, line 203
-
insert(body)
-
Insert the object into the node. If the node exceeds the capacity, it will split and add all objects to their corresponding subnodes.
Parameters:
Name Type Description bodyPhaser.Physics.Arcade.Body | object The Body object to insert into the quadtree. Can be any object so long as it exposes x, y, right and bottom properties.
- Source - math/QuadTree.js, line 151
-
populate(group)
-
Populates this quadtree with the children of the given Group. In order to be added the child must exist and have a body property.
Parameters:
Name Type Description groupPhaser.Group The Group to add to the quadtree.
- Source - math/QuadTree.js, line 103
-
populateHandler(sprite)
-
Handler for the populate method.
Parameters:
Name Type Description spritePhaser.Sprite | object The Sprite to check.
- Source - math/QuadTree.js, line 115
-
reset(x, y, width, height, maxObjects, maxLevels, level)
-
Resets the QuadTree.
Parameters:
Name Type Argument Default Description xnumber The top left coordinate of the quadtree.
ynumber The top left coordinate of the quadtree.
widthnumber The width of the quadtree in pixels.
heightnumber The height of the quadtree in pixels.
maxObjectsnumber <optional>
10 The maximum number of objects per node.
maxLevelsnumber <optional>
4 The maximum number of levels to iterate to.
levelnumber <optional>
0 Which level is this?
- Source - math/QuadTree.js, line 69
-
retrieve(source) → {array}
-
Return all objects that could collide with the given Sprite or Rectangle.
Parameters:
Name Type Description sourcePhaser.Sprite | Phaser.Rectangle The source object to check the QuadTree against. Either a Sprite or Rectangle.
Returns:
array -- Array with all detected objects.
- Source - math/QuadTree.js, line 247
-
split()
-
Split the node into 4 subnodes
- Source - math/QuadTree.js, line 130
