Package org.jbox2d.collision.broadphase
Class BroadPhase
- java.lang.Object
-
- org.jbox2d.collision.broadphase.BroadPhase
-
- All Implemented Interfaces:
TreeCallback
public class BroadPhase extends java.lang.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.
-
-
Field Summary
Fields Modifier and Type Field Description private int[]
m_moveBuffer
private int
m_moveCapacity
private int
m_moveCount
private Pair[]
m_pairBuffer
private int
m_pairCapacity
private int
m_pairCount
private int
m_proxyCount
private int
m_queryProxyId
private BroadPhaseStrategy
m_tree
static int
NULL_PROXY
-
Constructor Summary
Constructors Constructor Description BroadPhase(BroadPhaseStrategy strategy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
bufferMove(int proxyId)
int
createProxy(AABB aabb, java.lang.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()
java.lang.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.
-
-
-
Field Detail
-
NULL_PROXY
public static final int NULL_PROXY
- See Also:
- Constant Field Values
-
m_tree
private final BroadPhaseStrategy m_tree
-
m_proxyCount
private int m_proxyCount
-
m_moveBuffer
private int[] m_moveBuffer
-
m_moveCapacity
private int m_moveCapacity
-
m_moveCount
private int m_moveCount
-
m_pairBuffer
private Pair[] m_pairBuffer
-
m_pairCapacity
private int m_pairCapacity
-
m_pairCount
private int m_pairCount
-
m_queryProxyId
private int m_queryProxyId
-
-
Constructor Detail
-
BroadPhase
public BroadPhase(BroadPhaseStrategy strategy)
-
-
Method Detail
-
createProxy
public final int createProxy(AABB aabb, java.lang.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 java.lang.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 interfaceTreeCallback
- Parameters:
proxyId
- the id of the proxy- Returns:
- if the query should be continued
-
-