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

#### Members¶

## 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

## 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