public class Body
- Object
- Body
A rigid body. These are created via World.createBody.
Fields
Constructors
public Body(BodyDef bd, World world) |
Methods
Inherited methods
Field details
e_islandFlag
public static final int e_islandFlag = 1e_awakeFlag
public static final int e_awakeFlag = 2e_autoSleepFlag
public static final int e_autoSleepFlag = 4e_bulletFlag
public static final int e_bulletFlag = 8e_fixedRotationFlag
public static final int e_fixedRotationFlag = 16e_activeFlag
public static final int e_activeFlag = 32e_toiFlag
public static final int e_toiFlag = 64m_type
public BodyType m_typem_flags
public int m_flagsm_islandIndex
public int m_islandIndexm_xf
public final Transform m_xfThe body origin transform.
m_sweep
public final Sweep m_sweepThe swept motion for CCD
m_linearVelocity
public final Vec2 m_linearVelocitym_angularVelocity
public float m_angularVelocitym_force
public final Vec2 m_forcem_torque
public float m_torquem_world
public World m_worldm_prev
public Body m_prevm_next
public Body m_nextm_fixtureList
public Fixture m_fixtureListm_fixtureCount
public int m_fixtureCountm_jointList
public JointEdge m_jointListm_contactList
public ContactEdge m_contactListm_mass
public float m_massm_invMass
public float m_invMassm_I
public float m_Im_invI
public float m_invIm_linearDamping
public float m_linearDampingm_angularDamping
public float m_angularDampingm_gravityScale
public float m_gravityScalem_sleepTime
public float m_sleepTimem_userData
public Object m_userDataConstructor details
Body
public Body(BodyDef bd, World world)Method details
createFixture
public final Fixture createFixture(FixtureDef def)Creates a fixture and attach it to this body. Use this function if you need to set some fixture
parameters, like friction. Otherwise you can create the fixture directly from a shape. If the
density is non-zero, this function automatically updates the mass of the body. Contacts are not
created until the next time step.
Warning. This function is locked during callbacks.
Parameters
defFixtureDef- the fixture definition.
createFixture
public final Fixture createFixture(Shape shape, float density)Creates a fixture from a shape and attach it to this body. This is a convenience function. Use
FixtureDef if you need to set parameters like friction, restitution, user data, or filtering.
If the density is non-zero, this function automatically updates the mass of the body.
Warning. This function is locked during callbacks.
Parameters
shapeShape- the shape to be cloned.
densityfloat- the shape density (set to zero for static bodies).
destroyFixture
public final void destroyFixture(Fixture fixture)Destroy a fixture. This removes the fixture from the broad-phase and destroys all contacts
associated with this fixture. This will automatically adjust the mass of the body if the body
is dynamic and the fixture has positive density. All fixtures attached to a body are implicitly
destroyed when the body is destroyed.
Warning. This function is locked during callbacks.
Parameters
fixtureFixture- the fixture to be removed.
setTransform
public final void setTransform(Vec2 position, float angle)Set the position of the body’s origin and rotation. This breaks any contacts and wakes the
other bodies. Manipulating a body’s transform may cause non-physical behavior.
Parameters
positionVec2- the world position of the body’s local origin.
anglefloat- the world rotation in radians.
getTransform
public final Transform getTransform()Get the body transform for the body’s origin.
Returns
the world transform of the body’s origin.
getPosition
public final Vec2 getPosition()Get the world body origin position. Do not modify.
Returns
the world position of the body’s origin.
getAngle
public final float getAngle()Get the angle in radians.
Returns
the current world rotation angle in radians.
getWorldCenter
public final Vec2 getWorldCenter()Get the world position of the center of mass. Do not modify.
getLocalCenter
public final Vec2 getLocalCenter()Get the local position of the center of mass. Do not modify.
setLinearVelocity
public final void setLinearVelocity(Vec2 v)Set the linear velocity of the center of mass.
Parameters
vVec2- the new linear velocity of the center of mass.
getLinearVelocity
public final Vec2 getLinearVelocity()Get the linear velocity of the center of mass. Do not modify, instead use
setLinearVelocity(Vec2).Returns
the linear velocity of the center of mass.
setAngularVelocity
public final void setAngularVelocity(float w)Set the angular velocity.
getAngularVelocity
public final float getAngularVelocity()Get the angular velocity.
Returns
the angular velocity in radians/second.
getGravityScale
public float getGravityScale()Get the gravity scale of the body.
setGravityScale
public void setGravityScale(float gravityScale)Set the gravity scale of the body.
applyForce
public final void applyForce(Vec2 force, Vec2 point)Apply a force at a world point. If the force is not applied at the center of mass, it will
generate a torque and affect the angular velocity. This wakes up the body.
Parameters
forceVec2- the world force vector, usually in Newtons (N).
pointVec2- the world position of the point of application.
applyForceToCenter
public final void applyForceToCenter(Vec2 force)Apply a force to the center of mass. This wakes up the body.
Parameters
forceVec2- the world force vector, usually in Newtons (N).
applyTorque
public final void applyTorque(float torque)Apply a torque. This affects the angular velocity without affecting the linear velocity of the
center of mass. This wakes up the body.
Parameters
torquefloat- about the z-axis (out of the screen), usually in N-m.
applyLinearImpulse
public final void applyLinearImpulse(Vec2 impulse, Vec2 point)Apply an impulse at a point. This immediately modifies the velocity. It also modifies the
angular velocity if the point of application is not at the center of mass. This wakes up the
body.
Parameters
impulseVec2- the world impulse vector, usually in N-seconds or kg-m/s.
pointVec2- the world position of the point of application.
applyAngularImpulse
public void applyAngularImpulse(float impulse)Apply an angular impulse.
Parameters
impulsefloat- the angular impulse in units of kgmm/s
getMass
public final float getMass()Get the total mass of the body.
Returns
the mass, usually in kilograms (kg).
getInertia
public final float getInertia()Get the central rotational inertia of the body.
Returns
the rotational inertia, usually in kg-m^2.
getMassData
public final void getMassData(MassData data)Get the mass data of the body. The rotational inertia is relative to the center of mass.
Returns
a struct containing the mass, inertia and center of the body.
setMassData
public final void setMassData(MassData massData)Set the mass properties to override the mass properties of the fixtures. Note that this changes
the center of mass position. Note that creating or destroying fixtures can also alter the mass.
This function has no effect if the body isn’t dynamic.
Parameters
massDataMassData- the mass properties.
resetMassData
public final void resetMassData()This resets the mass properties to the sum of the mass properties of the fixtures. This
normally does not need to be called unless you called setMassData to override the mass and you
later want to reset the mass.
getWorldPoint
public final Vec2 getWorldPoint(Vec2 localPoint)Get the world coordinates of a point given the local coordinates.
Parameters
localPointVec2- a point on the body measured relative the the body’s origin.
Returns
the same point expressed in world coordinates.
getWorldPointToOut
public final void getWorldPointToOut(Vec2 localPoint, Vec2 out)getWorldVector
public final Vec2 getWorldVector(Vec2 localVector)Get the world coordinates of a vector given the local coordinates.
Parameters
localVectorVec2- a vector fixed in the body.
Returns
the same vector expressed in world coordinates.
getWorldVectorToOut
public final void getWorldVectorToOut(Vec2 localVector, Vec2 out)getWorldVectorToOutUnsafe
public final void getWorldVectorToOutUnsafe(Vec2 localVector, Vec2 out)getLocalPoint
public final Vec2 getLocalPoint(Vec2 worldPoint)Gets a local point relative to the body’s origin given a world point.
Returns
the corresponding local point relative to the body’s origin.
getLocalPointToOut
public final void getLocalPointToOut(Vec2 worldPoint, Vec2 out)getLocalVector
public final Vec2 getLocalVector(Vec2 worldVector)Gets a local vector given a world vector.
Returns
the corresponding local vector.
getLocalVectorToOut
public final void getLocalVectorToOut(Vec2 worldVector, Vec2 out)getLocalVectorToOutUnsafe
public final void getLocalVectorToOutUnsafe(Vec2 worldVector, Vec2 out)getLinearVelocityFromWorldPoint
public final Vec2 getLinearVelocityFromWorldPoint(Vec2 worldPoint)Get the world linear velocity of a world point attached to this body.
Returns
the world velocity of a point.
getLinearVelocityFromWorldPointToOut
public final void getLinearVelocityFromWorldPointToOut(Vec2 worldPoint, Vec2 out)getLinearVelocityFromLocalPoint
public final Vec2 getLinearVelocityFromLocalPoint(Vec2 localPoint)Get the world velocity of a local point.
Returns
the world velocity of a point.
getLinearVelocityFromLocalPointToOut
public final void getLinearVelocityFromLocalPointToOut(Vec2 localPoint, Vec2 out)getLinearDamping
public final float getLinearDamping()Get the linear damping of the body.
setLinearDamping
public final void setLinearDamping(float linearDamping)Set the linear damping of the body.
getAngularDamping
public final float getAngularDamping()Get the angular damping of the body.
setAngularDamping
public final void setAngularDamping(float angularDamping)Set the angular damping of the body.
getType
public BodyType getType()setType
public void setType(BodyType type)Set the type of this body. This may alter the mass and velocity.
isBullet
public final boolean isBullet()Is this body treated like a bullet for continuous collision detection?
setBullet
public final void setBullet(boolean flag)Should this body be treated like a bullet for continuous collision detection?
setSleepingAllowed
public void setSleepingAllowed(boolean flag)You can disable sleeping on this body. If you disable sleeping, the body will be woken.
isSleepingAllowed
public boolean isSleepingAllowed()Is this body allowed to sleep
setAwake
public void setAwake(boolean flag)Set the sleep state of the body. A sleeping body has very low CPU cost.
Parameters
flagboolean- set to true to put body to sleep, false to wake it.
isAwake
public boolean isAwake()Get the sleeping state of this body.
Returns
true if the body is sleeping.
setActive
public void setActive(boolean flag)Set the active state of the body. An inactive body is not simulated and cannot be collided with
or woken up. If you pass a flag of true, all fixtures will be added to the broad-phase. If you
pass a flag of false, all fixtures will be removed from the broad-phase and all contacts will
be destroyed. Fixtures and joints are otherwise unaffected. You may continue to create/destroy
fixtures and joints on inactive bodies. Fixtures on an inactive body are implicitly inactive
and will not participate in collisions, ray-casts, or queries. Joints connected to an inactive
body are implicitly inactive. An inactive body is still owned by a World object and remains in
the body list.
isActive
public boolean isActive()Get the active state of the body.
setFixedRotation
public void setFixedRotation(boolean flag)Set this body to have fixed rotation. This causes the mass to be reset.
isFixedRotation
public boolean isFixedRotation()Does this body have fixed rotation?
getFixtureList
public final Fixture getFixtureList()Get the list of all fixtures attached to this body.
getJointList
public final JointEdge getJointList()Get the list of all joints attached to this body.
getContactList
public final ContactEdge getContactList()Get the list of all contacts attached to this body.
Warning. this list changes during the time step and you may miss some collisions if you don’t
use ContactListener.
getNext
public final Body getNext()Get the next body in the world’s body list.
getUserData
public final Object getUserData()Get the user data pointer that was provided in the body definition.
setUserData
public final void setUserData(Object data)Set the user data. Use this to store your application specific data.
getWorld
public final World getWorld()Get the parent world of this body.
synchronizeFixtures
protected final void synchronizeFixtures()synchronizeTransform
public final void synchronizeTransform()shouldCollide
public boolean shouldCollide(Body other)This is used to prevent connected bodies from colliding. It may lie, depending on the
collideConnected flag.
advance
protected final void advance(float t)