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 Details

    • WORLD_POOL_SIZE

      public static final int WORLD_POOL_SIZE
      See Also:
    • WORLD_POOL_CONTAINER_SIZE

      public static final int WORLD_POOL_CONTAINER_SIZE
      See Also:
    • NEW_FIXTURE

      public static final int NEW_FIXTURE
      See Also:
    • LOCKED

      public static final int LOCKED
      See Also:
    • CLEAR_FORCES

      public static final int CLEAR_FORCES
      See Also:
    • 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 Details

    • 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 Details

    • 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()
    • popContact

      public Contact popContact(Fixture fixtureA, int indexA, Fixture fixtureB, int indexB)
    • 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:
      velocityIterations - for the velocity constraint solver.
      positionIterations - for the position constraint solver.
      timeStep - the amount of time to simulate, this should not vary.
    • 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:
    • 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 point
      point2 - 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)
    • drawShape

      private void drawShape(Fixture fixture, Transform xf, Color3f color)