Box2D 2.4.1
A 2D physics engine for games
b2BroadPhase Class Reference

#include <b2_broad_phase.h>

Public Types

enum  { e_nullProxy = -1 }
 

Public Member Functions

int32 CreateProxy (const b2AABB &aabb, void *userData)
 
void DestroyProxy (int32 proxyId)
 Destroy a proxy. It is up to the client to remove any pairs.
 
void MoveProxy (int32 proxyId, const b2AABB &aabb, const b2Vec2 &displacement)
 
void TouchProxy (int32 proxyId)
 Call to trigger a re-processing of it's pairs on the next call to UpdatePairs.
 
const b2AABBGetFatAABB (int32 proxyId) const
 Get the fat AABB for a proxy.
 
void * GetUserData (int32 proxyId) const
 Get user data from a proxy. Returns nullptr if the id is invalid.
 
bool TestOverlap (int32 proxyIdA, int32 proxyIdB) const
 Test overlap of fat AABBs.
 
int32 GetProxyCount () const
 Get the number of proxies.
 
template<typename T >
void UpdatePairs (T *callback)
 Update the pairs. This results in pair callbacks. This can only add pairs.
 
template<typename T >
void Query (T *callback, const b2AABB &aabb) const
 
template<typename T >
void RayCast (T *callback, const b2RayCastInput &input) const
 
int32 GetTreeHeight () const
 Get the height of the embedded tree.
 
int32 GetTreeBalance () const
 Get the balance of the embedded tree.
 
float GetTreeQuality () const
 Get the quality metric of the embedded tree.
 
void ShiftOrigin (const b2Vec2 &newOrigin)
 

Friends

class b2DynamicTree
 

Detailed Description

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.

Member Function Documentation

◆ CreateProxy()

int32 b2BroadPhase::CreateProxy ( const b2AABB aabb,
void *  userData 
)

Create a proxy with an initial AABB. Pairs are not reported until UpdatePairs is called.

◆ MoveProxy()

void b2BroadPhase::MoveProxy ( int32  proxyId,
const b2AABB aabb,
const b2Vec2 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).

◆ Query()

template<typename T >
void b2BroadPhase::Query ( T *  callback,
const b2AABB aabb 
) const
inline

Query an AABB for overlapping proxies. The callback class is called for each proxy that overlaps the supplied AABB.

◆ RayCast()

template<typename T >
void b2BroadPhase::RayCast ( T *  callback,
const b2RayCastInput input 
) const
inline

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
inputthe ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1).
callbacka callback class that is called for each proxy that is hit by the ray.

◆ ShiftOrigin()

void b2BroadPhase::ShiftOrigin ( const b2Vec2 newOrigin)
inline

Shift the world origin. Useful for large worlds. The shift formula is: position -= newOrigin

Parameters
newOriginthe new origin with respect to the old origin

The documentation for this class was generated from the following file: