Navigation
These archived docs are for Phaser 2.2.2 Phaser 3 docs can be found on newdocs.phaser.io.
Phaser CE docs can be found on the Phaser CE Documentation site.

Constructor

Phaser. QuadTree

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 code: math/QuadTree.js, line 23

Public Properties

bounds : Object

Object that contains the quadtree bounds.

Source code: math/QuadTree.js, line 45

level : number

The current level.

Source code: math/QuadTree.js, line 40

maxLevels : number

The maximum number of levels to break down to.

Default Value
  • 4
Source code: math/QuadTree.js, line 35

maxObjects : number

The maximum number of objects per node.

Default Value
  • 10
Source code: math/QuadTree.js, line 29

nodes :array

Array of associated child nodes.

Source code: math/QuadTree.js, line 55

objects :array

Array of quadtree children.

Source code: math/QuadTree.js, line 50

Public Methods

clear()

Clear the quadtree.

Source code: 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 code: 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 code: 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 code: 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 code: 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 code: 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 code: math/QuadTree.js, line 247

split()

Split the node into 4 subnodes

Source code: math/QuadTree.js, line 130