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 rect
Phaser.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 body
Phaser.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 group
Phaser.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 sprite
Phaser.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 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 69
-
retrieve(source) → {array}
-
Return all objects that could collide with the given Sprite or Rectangle.
Parameters:
Name Type Description source
Phaser.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