A dynamic tree arranges data in a binary tree to accelerate queries such as volume queries and ray casts. Leafs are proxies with an AABB. In the tree we expand the proxy AABB by b2_fatAABBFactor so that the proxy AABB is bigger than the client object. This allows the client object to move by small amounts without triggering a tree update. Nodes are pooled.
Constructing the tree initializes the node pool.
Create a proxy. Provide a tight fitting AABB and a userData.
AABB.
Dynamic tree node.
Destroy a proxy. This asserts if the id is invalid.
Proxy to destroy.
Gets the Fat AABB for the proxy.
Proxy to retrieve Fat AABB.
Fat AABB for proxy.
Get user data from a proxy. Returns null if the proxy is invalid. Cast to your type on return.
Proxy to retrieve user data from.
any
User data for proxy or null if proxy is invalid.
Move a proxy with a swept AABB. If the proxy has moved outside of its fattened AABB, then the proxy is removed from the tree and re-inserted. Otherwise the function returns immediately.
Proxy to move.
Swept AABB.
Extra AABB displacement.
boolean
Query an AABB for overlapping proxies. The callback is called for each proxy that overlaps the supplied AABB. The callback should match function signature fuction callback(proxy:b2DynamicTreeNode):Boolean and should return false to trigger premature termination.
Called for each proxy that overlaps the supplied AABB. param proxy Proxy overlapping the supplied AABB.
Ray-cast against the proxies in the tree. This relies on the callback to perform a exact ray-cast in the case were the proxy contains a shape. The callback also performs the any collision filtering. This has performance roughly equal to k log(n), where k is the number of collisions and n is the number of proxies in the tree.
Called for each proxy that is hit by the ray. param input Ray cast input data. param proxy The proxy hit by the ray cast. return Return value is the new value for maxFraction.
Ray cast input data. Query all proxies along this ray cast.
Perform some iterations to re-balance the tree.
Number of rebalance iterations to perform.