Package org.jbox2d.dynamics
Class World
- java.lang.Object
-
- org.jbox2d.dynamics.World
-
public class World extends java.lang.Object
The world class manages all physics entities, dynamic simulation, and asynchronous queries. The world also contains efficient memory management facilities.
-
-
Field Summary
-
Constructor Summary
Constructors Constructor Description World(Vec2 gravity)
Construct a world object.World(Vec2 gravity, IWorldPool pool)
Construct a world object.World(Vec2 gravity, IWorldPool argPool, BroadPhaseStrategy broadPhaseStrategy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addType(IDynamicStack<Contact> creator, ShapeType type1, ShapeType type2)
void
clearForces()
Call this after you are done with time steps to clear the forces.Body
createBody(BodyDef def)
create a rigid body given a definition.Joint
createJoint(JointDef def)
create a joint to constrain bodies together.void
destroyBody(Body body)
destroy a rigid body given a definition.void
destroyJoint(Joint j)
destroy a joint.void
drawDebugData()
Call this to draw shapes and other debug draw data.private void
drawJoint(Joint joint)
private void
drawShape(Fixture fixture, Transform xf, Color3f color)
boolean
getAutoClearForces()
Get the flag that controls automatic clearing of forces after each time step.int
getBodyCount()
Get the number of bodies.Body
getBodyList()
Get the world body list.int
getContactCount()
Get the number of contacts (each may have 0 or more contact points).Contact
getContactList()
Get the world contact list.ContactManager
getContactManager()
Get the contact manager for testing purposesVec2
getGravity()
Get the global gravity vector.int
getJointCount()
Get the number of joints.Joint
getJointList()
Get the world joint list.IWorldPool
getPool()
Profile
getProfile()
int
getProxyCount()
Get the number of broad-phase proxies.int
getTreeBalance()
Gets the balance of the dynamic treeint
getTreeHeight()
Gets the height of the dynamic treefloat
getTreeQuality()
Gets the quality of the dynamic treeprivate void
initializeRegisters()
boolean
isAllowSleep()
boolean
isContinuousPhysics()
boolean
isLocked()
Is the world locked (in the middle of a time step).boolean
isSleepingAllowed()
boolean
isSubStepping()
boolean
isWarmStarting()
Contact
popContact(Fixture fixtureA, int indexA, Fixture fixtureB, int indexB)
void
pushContact(Contact contact)
void
queryAABB(QueryCallback callback, AABB aabb)
Query the world for all fixtures that potentially overlap the provided AABB.void
raycast(RayCastCallback callback, Vec2 point1, Vec2 point2)
Ray-cast the world for all fixtures in the path of the ray.void
setAllowSleep(boolean flag)
void
setAutoClearForces(boolean flag)
Set flag to control automatic clearing of forces after each time step.void
setContactFilter(ContactFilter filter)
Register a contact filter to provide specific control over collision.void
setContactListener(ContactListener listener)
Register a contact event listener.void
setContinuousPhysics(boolean flag)
Enable/disable continuous physics.void
setDebugDraw(DebugDraw debugDraw)
Register a routine for debug drawing.void
setDestructionListener(DestructionListener listener)
Register a destruction listener.void
setGravity(Vec2 gravity)
Change the global gravity vector.void
setSleepingAllowed(boolean sleepingAllowed)
void
setSubStepping(boolean subStepping)
void
setWarmStarting(boolean flag)
Enable/disable warm starting.private void
solve(TimeStep step)
private void
solveTOI(TimeStep step)
void
step(float dt, int velocityIterations, int positionIterations)
Take a time step.
-
-
-
Field Detail
-
WORLD_POOL_SIZE
public static final int WORLD_POOL_SIZE
- See Also:
- Constant Field Values
-
WORLD_POOL_CONTAINER_SIZE
public static final int WORLD_POOL_CONTAINER_SIZE
- See Also:
- Constant Field Values
-
NEW_FIXTURE
public static final int NEW_FIXTURE
- See Also:
- Constant Field Values
-
LOCKED
public static final int LOCKED
- See Also:
- Constant Field Values
-
CLEAR_FORCES
public static final int CLEAR_FORCES
- See Also:
- Constant Field Values
-
activeContacts
public int activeContacts
-
contactPoolCount
public int contactPoolCount
-
m_flags
protected int m_flags
-
m_contactManager
protected ContactManager m_contactManager
-
m_bodyList
private Body m_bodyList
-
m_jointList
private Joint m_jointList
-
m_bodyCount
private int m_bodyCount
-
m_jointCount
private int m_jointCount
-
m_gravity
private final Vec2 m_gravity
-
m_allowSleep
private boolean m_allowSleep
-
m_destructionListener
private DestructionListener m_destructionListener
-
m_debugDraw
private DebugDraw m_debugDraw
-
pool
private final IWorldPool pool
-
m_inv_dt0
private float m_inv_dt0
This is used to compute the time step ratio to support a variable time step.
-
m_warmStarting
private boolean m_warmStarting
-
m_continuousPhysics
private boolean m_continuousPhysics
-
m_subStepping
private boolean m_subStepping
-
m_stepComplete
private boolean m_stepComplete
-
m_profile
private Profile m_profile
-
contactStacks
private ContactRegister[][] contactStacks
-
step
private final TimeStep step
-
stepTimer
private final Timer stepTimer
-
tempTimer
private final Timer tempTimer
-
color
private final Color3f color
-
xf
private final Transform xf
-
cA
private final Vec2 cA
-
cB
private final Vec2 cB
-
avs
private final Vec2Array avs
-
wqwrapper
private final WorldQueryWrapper wqwrapper
-
wrcwrapper
private final WorldRayCastWrapper wrcwrapper
-
input
private final RayCastInput input
-
island
private final Island island
-
stack
private Body[] stack
-
islandProfile
private final Profile islandProfile
-
broadphaseTimer
private final Timer broadphaseTimer
-
toiIsland
private final Island toiIsland
-
toiInput
private final TimeOfImpact.TOIInput toiInput
-
toiOutput
private final TimeOfImpact.TOIOutput toiOutput
-
subStep
private final TimeStep subStep
-
tempBodies
private final Body[] tempBodies
-
backup1
private final Sweep backup1
-
backup2
private final Sweep backup2
-
LIQUID_INT
private static java.lang.Integer LIQUID_INT
-
liquidLength
private float liquidLength
-
averageLinearVel
private float averageLinearVel
-
liquidOffset
private final Vec2 liquidOffset
-
circCenterMoved
private final Vec2 circCenterMoved
-
liquidColor
private final Color3f liquidColor
-
center
private final Vec2 center
-
axis
private final Vec2 axis
-
v1
private final Vec2 v1
-
v2
private final Vec2 v2
-
tlvertices
private final Vec2Array tlvertices
-
-
Constructor Detail
-
World
public World(Vec2 gravity)
Construct a world object.- Parameters:
gravity
- the world gravity vector.
-
World
public World(Vec2 gravity, IWorldPool pool)
Construct a world object.- Parameters:
gravity
- the world gravity vector.
-
World
public World(Vec2 gravity, IWorldPool argPool, BroadPhaseStrategy broadPhaseStrategy)
-
-
Method Detail
-
setAllowSleep
public void setAllowSleep(boolean flag)
-
setSubStepping
public void setSubStepping(boolean subStepping)
-
isSubStepping
public boolean isSubStepping()
-
isAllowSleep
public boolean isAllowSleep()
-
addType
private void addType(IDynamicStack<Contact> creator, ShapeType type1, ShapeType type2)
-
initializeRegisters
private void initializeRegisters()
-
pushContact
public void pushContact(Contact contact)
-
getPool
public IWorldPool getPool()
-
setDestructionListener
public void setDestructionListener(DestructionListener listener)
Register a destruction listener. The listener is owned by you and must remain in scope.- Parameters:
listener
-
-
setContactFilter
public void setContactFilter(ContactFilter filter)
Register a contact filter to provide specific control over collision. Otherwise the default filter is used (_defaultFilter). The listener is owned by you and must remain in scope.- Parameters:
filter
-
-
setContactListener
public void setContactListener(ContactListener listener)
Register a contact event listener. The listener is owned by you and must remain in scope.- Parameters:
listener
-
-
setDebugDraw
public void setDebugDraw(DebugDraw debugDraw)
Register a routine for debug drawing. The debug draw functions are called inside with World.DrawDebugData method. The debug draw object is owned by you and must remain in scope.- Parameters:
debugDraw
-
-
createBody
public Body createBody(BodyDef def)
create a rigid body given a definition. No reference to the definition is retained.- Parameters:
def
-- Returns:
-
destroyBody
public void destroyBody(Body body)
destroy a rigid body given a definition. No reference to the definition is retained. This function is locked during callbacks.- Parameters:
body
-
-
createJoint
public Joint createJoint(JointDef def)
create a joint to constrain bodies together. No reference to the definition is retained. This may cause the connected bodies to cease colliding.- Parameters:
def
-- Returns:
-
destroyJoint
public void destroyJoint(Joint j)
destroy a joint. This may cause the connected bodies to begin colliding.- Parameters:
joint
-
-
step
public void step(float dt, int velocityIterations, int positionIterations)
Take a time step. This performs collision detection, integration, and constraint solution.- Parameters:
timeStep
- the amount of time to simulate, this should not vary.velocityIterations
- for the velocity constraint solver.positionIterations
- for the position constraint solver.
-
clearForces
public void clearForces()
Call this after you are done with time steps to clear the forces. You normally call this after each call to Step, unless you are performing sub-steps. By default, forces will be automatically cleared, so you don't need to call this function.- See Also:
setAutoClearForces(boolean)
-
drawDebugData
public void drawDebugData()
Call this to draw shapes and other debug draw data.
-
queryAABB
public void queryAABB(QueryCallback callback, AABB aabb)
Query the world for all fixtures that potentially overlap the provided AABB.- Parameters:
callback
- a user implemented callback class.aabb
- the query box.
-
raycast
public void raycast(RayCastCallback callback, Vec2 point1, Vec2 point2)
Ray-cast the world for all fixtures in the path of the ray. Your callback controls whether you get the closest point, any point, or n-points. The ray-cast ignores shapes that contain the starting point.- Parameters:
callback
- a user implemented callback class.point1
- the ray starting pointpoint2
- the ray ending point
-
getBodyList
public Body getBodyList()
Get the world body list. With the returned body, use Body.getNext to get the next body in the world list. A null body indicates the end of the list.- Returns:
- the head of the world body list.
-
getJointList
public Joint getJointList()
Get the world joint list. With the returned joint, use Joint.getNext to get the next joint in the world list. A null joint indicates the end of the list.- Returns:
- the head of the world joint list.
-
getContactList
public Contact getContactList()
Get the world contact list. With the returned contact, use Contact.getNext to get the next contact in the world list. A null contact indicates the end of the list.- Returns:
- the head of the world contact list.
-
isSleepingAllowed
public boolean isSleepingAllowed()
-
setSleepingAllowed
public void setSleepingAllowed(boolean sleepingAllowed)
-
setWarmStarting
public void setWarmStarting(boolean flag)
Enable/disable warm starting. For testing.- Parameters:
flag
-
-
isWarmStarting
public boolean isWarmStarting()
-
setContinuousPhysics
public void setContinuousPhysics(boolean flag)
Enable/disable continuous physics. For testing.- Parameters:
flag
-
-
isContinuousPhysics
public boolean isContinuousPhysics()
-
getProxyCount
public int getProxyCount()
Get the number of broad-phase proxies.- Returns:
-
getBodyCount
public int getBodyCount()
Get the number of bodies.- Returns:
-
getJointCount
public int getJointCount()
Get the number of joints.- Returns:
-
getContactCount
public int getContactCount()
Get the number of contacts (each may have 0 or more contact points).- Returns:
-
getTreeHeight
public int getTreeHeight()
Gets the height of the dynamic tree- Returns:
-
getTreeBalance
public int getTreeBalance()
Gets the balance of the dynamic tree- Returns:
-
getTreeQuality
public float getTreeQuality()
Gets the quality of the dynamic tree- Returns:
-
setGravity
public void setGravity(Vec2 gravity)
Change the global gravity vector.- Parameters:
gravity
-
-
getGravity
public Vec2 getGravity()
Get the global gravity vector.- Returns:
-
isLocked
public boolean isLocked()
Is the world locked (in the middle of a time step).- Returns:
-
setAutoClearForces
public void setAutoClearForces(boolean flag)
Set flag to control automatic clearing of forces after each time step.- Parameters:
flag
-
-
getAutoClearForces
public boolean getAutoClearForces()
Get the flag that controls automatic clearing of forces after each time step.- Returns:
-
getContactManager
public ContactManager getContactManager()
Get the contact manager for testing purposes- Returns:
-
getProfile
public Profile getProfile()
-
solve
private void solve(TimeStep step)
-
solveTOI
private void solveTOI(TimeStep step)
-
drawJoint
private void drawJoint(Joint joint)
-
-