org.jbox2d.collision.broadphase
Class BroadPhase

java.lang.Object
  extended by org.jbox2d.collision.broadphase.BroadPhase
All Implemented Interfaces:
TreeCallback

public class BroadPhase
extends Object
implements TreeCallback

The broad-phase is used for computing pairs and performing volume queries and ray casts. This broad-phase does not persist pairs. Instead, this reports potentially new pairs. It is up to the client to consume the new pairs and to track subsequent overlap.

Author:
Daniel Murphy

Field Summary
static int NULL_PROXY
           
 
Constructor Summary
BroadPhase(BroadPhaseStrategy strategy)
           
 
Method Summary
protected  void bufferMove(int proxyId)
           
 int createProxy(AABB aabb, Object userData)
          Create a proxy with an initial AABB.
 void destroyProxy(int proxyId)
          Destroy a proxy.
 void drawTree(DebugDraw argDraw)
           
 AABB getFatAABB(int proxyId)
           
 int getProxyCount()
          Get the number of proxies.
 int getTreeBalance()
           
 int getTreeHeight()
          Get the height of the embedded tree.
 float getTreeQuality()
           
 Object getUserData(int proxyId)
           
 void moveProxy(int proxyId, AABB aabb, Vec2 displacement)
          Call MoveProxy as many times as you like, then when you are done call UpdatePairs to finalized the proxy pairs (for your time step).
 void query(TreeCallback callback, AABB aabb)
          Query an AABB for overlapping proxies.
 void raycast(TreeRayCastCallback callback, RayCastInput input)
          Ray-cast against the proxies in the tree.
 boolean testOverlap(int proxyIdA, int proxyIdB)
           
 void touchProxy(int proxyId)
           
 boolean treeCallback(int proxyId)
          This is called from DynamicTree::query when we are gathering pairs.
protected  void unbufferMove(int proxyId)
           
 void updatePairs(PairCallback callback)
          Update the pairs.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NULL_PROXY

public static final int NULL_PROXY
See Also:
Constant Field Values
Constructor Detail

BroadPhase

public BroadPhase(BroadPhaseStrategy strategy)
Method Detail

createProxy

public final int createProxy(AABB aabb,
                             Object userData)
Create a proxy with an initial AABB. Pairs are not reported until updatePairs is called.

Parameters:
aabb -
userData -
Returns:

destroyProxy

public final void destroyProxy(int proxyId)
Destroy a proxy. It is up to the client to remove any pairs.

Parameters:
proxyId -

moveProxy

public final void moveProxy(int proxyId,
                            AABB aabb,
                            Vec2 displacement)
Call MoveProxy as many times as you like, then when you are done call UpdatePairs to finalized the proxy pairs (for your time step).


touchProxy

public void touchProxy(int proxyId)

getUserData

public Object getUserData(int proxyId)

getFatAABB

public AABB getFatAABB(int proxyId)

testOverlap

public boolean testOverlap(int proxyIdA,
                           int proxyIdB)

getProxyCount

public final int getProxyCount()
Get the number of proxies.

Returns:

drawTree

public void drawTree(DebugDraw argDraw)

updatePairs

public final void updatePairs(PairCallback callback)
Update the pairs. This results in pair callbacks. This can only add pairs.

Parameters:
callback -

query

public final void query(TreeCallback callback,
                        AABB aabb)
Query an AABB for overlapping proxies. The callback class is called for each proxy that overlaps the supplied AABB.

Parameters:
callback -
aabb -

raycast

public final void raycast(TreeRayCastCallback callback,
                          RayCastInput input)
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.

Parameters:
input - the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1).
callback - a callback class that is called for each proxy that is hit by the ray.

getTreeHeight

public final int getTreeHeight()
Get the height of the embedded tree.

Returns:

getTreeBalance

public int getTreeBalance()

getTreeQuality

public float getTreeQuality()

bufferMove

protected final void bufferMove(int proxyId)

unbufferMove

protected final void unbufferMove(int proxyId)

treeCallback

public final boolean treeCallback(int proxyId)
This is called from DynamicTree::query when we are gathering pairs.

Specified by:
treeCallback in interface TreeCallback
Parameters:
proxyId - the id of the proxy
Returns:
if the query should be continued


Copyright © 2013. All Rights Reserved.