Class 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 Detail

      • WORLD_POOL_CONTAINER_SIZE

        public static final int WORLD_POOL_CONTAINER_SIZE
        See Also:
        Constant Field Values
      • activeContacts

        public int activeContacts
      • contactPoolCount

        public int contactPoolCount
      • m_flags

        protected int m_flags
      • 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_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
      • stepTimer

        private final Timer stepTimer
      • tempTimer

        private final Timer tempTimer
      • color

        private final Color3f color
      • cA

        private final Vec2 cA
      • cB

        private final Vec2 cB
      • island

        private final Island island
      • stack

        private Body[] stack
      • islandProfile

        private final Profile islandProfile
      • broadphaseTimer

        private final Timer broadphaseTimer
      • toiIsland

        private final Island toiIsland
      • 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.
    • Method Detail

      • setAllowSleep

        public void setAllowSleep​(boolean flag)
      • setSubStepping

        public void setSubStepping​(boolean subStepping)
      • isSubStepping

        public boolean isSubStepping()
      • isAllowSleep

        public boolean isAllowSleep()
      • initializeRegisters

        private void initializeRegisters()
      • popContact

        public Contact popContact​(Fixture fixtureA,
                                  int indexA,
                                  Fixture fixtureB,
                                  int indexB)
      • pushContact

        public void pushContact​(Contact contact)
      • 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 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)