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/quadtreejs/
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 (03), 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)