# Class World

java.lang.Object
com.codename1.gaming.physics.box2d.dynamics.World

public class World extends Object
The world class manages all physics entities, dynamic simulation, and asynchronous queries. The world also contains efficient memory management facilities.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `int`
  `activeContacts`
  `static final int`
  `CLEAR_FORCES`
  `int`
  `contactPoolCount`
  `static final int`
  `LOCKED`
  `protected ContactManager`
  `m_contactManager`
  `protected int`
  `m_flags`
  `static final int`
  `NEW_FIXTURE`
  `static final int`
  `WORLD_POOL_CONTAINER_SIZE`
  `static final int`
  `WORLD_POOL_SIZE`

- ## 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

  Modifier and Type
  Method
  Description
  `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.
  `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 purposes
  `Vec2`
  `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 tree
  `int`
  `getTreeHeight()`
  Gets the height of the dynamic tree
  `float`
  `getTreeQuality()`
  Gets the quality of the dynamic tree
  `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.
  `void`
  `step(float dt, int velocityIterations, int positionIterations)`
  Take a time step.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### 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

- ## 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()

  - ### 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:
      - `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 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()