public class Body

  1. Object
  2. Body
A rigid body. These are created via World.createBody.

Fields

public static final int e_islandFlag = 1
public static final int e_awakeFlag = 2
public static final int e_autoSleepFlag = 4
public static final int e_bulletFlag = 8
public static final int e_fixedRotationFlag = 16
public static final int e_activeFlag = 32
public static final int e_toiFlag = 64
public BodyType m_type
public int m_flags
public int m_islandIndex
public final Transform m_xfThe body origin transform.
public final Sweep m_sweepThe swept motion for CCD
public final Vec2 m_linearVelocity
public float m_angularVelocity
public final Vec2 m_force
public float m_torque
public World m_world
public Body m_prev
public Body m_next
public Fixture m_fixtureList
public int m_fixtureCount
public JointEdge m_jointList
public ContactEdge m_contactList
public float m_mass
public float m_invMass
public float m_I
public float m_invI
public float m_linearDamping
public float m_angularDamping
public float m_gravityScale
public float m_sleepTime
public Object m_userData

Constructors

public Body(BodyDef bd, World world)

Methods

public final Fixture createFixture(FixtureDef def)Creates a fixture and attach it to this body.
public final Fixture createFixture(Shape shape, float density)Creates a fixture from a shape and attach it to this body.
public final void destroyFixture(Fixture fixture)Destroy a fixture.
public final void setTransform(Vec2 position, float angle)Set the position of the body’s origin and rotation.
public final Transform getTransform()Get the body transform for the body’s origin.
public final Vec2 getPosition()Get the world body origin position.
public final float getAngle()Get the angle in radians.
public final Vec2 getWorldCenter()Get the world position of the center of mass.
public final Vec2 getLocalCenter()Get the local position of the center of mass.
public final void setLinearVelocity(Vec2 v)Set the linear velocity of the center of mass.
public final Vec2 getLinearVelocity()Get the linear velocity of the center of mass.
public final void setAngularVelocity(float w)Set the angular velocity.
public final float getAngularVelocity()Get the angular velocity.
public float getGravityScale()Get the gravity scale of the body.
public void setGravityScale(float gravityScale)Set the gravity scale of the body.
public final void applyForce(Vec2 force, Vec2 point)Apply a force at a world point.
public final void applyForceToCenter(Vec2 force)Apply a force to the center of mass.
public final void applyTorque(float torque)Apply a torque.
public final void applyLinearImpulse(Vec2 impulse, Vec2 point)Apply an impulse at a point.
public void applyAngularImpulse(float impulse)Apply an angular impulse.
public final float getMass()Get the total mass of the body.
public final float getInertia()Get the central rotational inertia of the body.
public final void getMassData(MassData data)Get the mass data of the body.
public final void setMassData(MassData massData)Set the mass properties to override the mass properties of the fixtures.
public final void resetMassData()This resets the mass properties to the sum of the mass properties of the fixtures.
public final Vec2 getWorldPoint(Vec2 localPoint)Get the world coordinates of a point given the local coordinates.
public final void getWorldPointToOut(Vec2 localPoint, Vec2 out)
public final Vec2 getWorldVector(Vec2 localVector)Get the world coordinates of a vector given the local coordinates.
public final void getWorldVectorToOut(Vec2 localVector, Vec2 out)
public final void getWorldVectorToOutUnsafe(Vec2 localVector, Vec2 out)
public final Vec2 getLocalPoint(Vec2 worldPoint)Gets a local point relative to the body’s origin given a world point.
public final void getLocalPointToOut(Vec2 worldPoint, Vec2 out)
public final Vec2 getLocalVector(Vec2 worldVector)Gets a local vector given a world vector.
public final void getLocalVectorToOut(Vec2 worldVector, Vec2 out)
public final void getLocalVectorToOutUnsafe(Vec2 worldVector, Vec2 out)
public final Vec2 getLinearVelocityFromWorldPoint(Vec2 worldPoint)Get the world linear velocity of a world point attached to this body.
public final void getLinearVelocityFromWorldPointToOut(Vec2 worldPoint, Vec2 out)
public final Vec2 getLinearVelocityFromLocalPoint(Vec2 localPoint)Get the world velocity of a local point.
public final void getLinearVelocityFromLocalPointToOut(Vec2 localPoint, Vec2 out)
public final float getLinearDamping()Get the linear damping of the body.
public final void setLinearDamping(float linearDamping)Set the linear damping of the body.
public final float getAngularDamping()Get the angular damping of the body.
public final void setAngularDamping(float angularDamping)Set the angular damping of the body.
public BodyType getType()
public void setType(BodyType type)Set the type of this body.
public final boolean isBullet()Is this body treated like a bullet for continuous collision detection?
public final void setBullet(boolean flag)Should this body be treated like a bullet for continuous collision detection?
public void setSleepingAllowed(boolean flag)You can disable sleeping on this body.
public boolean isSleepingAllowed()Is this body allowed to sleep
public void setAwake(boolean flag)Set the sleep state of the body.
public boolean isAwake()Get the sleeping state of this body.
public void setActive(boolean flag)Set the active state of the body.
public boolean isActive()Get the active state of the body.
public void setFixedRotation(boolean flag)Set this body to have fixed rotation.
public boolean isFixedRotation()Does this body have fixed rotation?
public final Fixture getFixtureList()Get the list of all fixtures attached to this body.
public final JointEdge getJointList()Get the list of all joints attached to this body.
public final ContactEdge getContactList()Get the list of all contacts attached to this body.
public final Body getNext()Get the next body in the world’s body list.
public final Object getUserData()Get the user data pointer that was provided in the body definition.
public final void setUserData(Object data)Set the user data.
public final World getWorld()Get the parent world of this body.
protected final void synchronizeFixtures()
public final void synchronizeTransform()
public boolean shouldCollide(Body other)This is used to prevent connected bodies from colliding.
protected final void advance(float t)

Inherited methods

Field details

e_islandFlag

public static final int e_islandFlag = 1

e_awakeFlag

public static final int e_awakeFlag = 2

e_autoSleepFlag

public static final int e_autoSleepFlag = 4

e_bulletFlag

public static final int e_bulletFlag = 8

e_fixedRotationFlag

public static final int e_fixedRotationFlag = 16

e_activeFlag

public static final int e_activeFlag = 32

e_toiFlag

public static final int e_toiFlag = 64

m_type

public BodyType m_type

m_flags

public int m_flags

m_islandIndex

public int m_islandIndex

m_xf

public final Transform m_xf
The body origin transform.

m_sweep

public final Sweep m_sweep
The swept motion for CCD

m_linearVelocity

public final Vec2 m_linearVelocity

m_angularVelocity

public float m_angularVelocity

m_force

public final Vec2 m_force

m_torque

public float m_torque

m_world

public World m_world

m_prev

public Body m_prev

m_next

public Body m_next

m_fixtureList

public Fixture m_fixtureList

m_fixtureCount

public int m_fixtureCount

m_jointList

public JointEdge m_jointList

m_contactList

public ContactEdge m_contactList

m_mass

public float m_mass

m_invMass

public float m_invMass

m_I

public float m_I

m_invI

public float m_invI

m_linearDamping

public float m_linearDamping

m_angularDamping

public float m_angularDamping

m_gravityScale

public float m_gravityScale

m_sleepTime

public float m_sleepTime

m_userData

public Object m_userData

Constructor 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

def FixtureDef
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

shape Shape
the shape to be cloned.
density float
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

fixture Fixture
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

position Vec2
the world position of the body’s local origin.
angle float
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

v Vec2
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

force Vec2
the world force vector, usually in Newtons (N).
point Vec2
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

force Vec2
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

torque float
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

impulse Vec2
the world impulse vector, usually in N-seconds or kg-m/s.
point Vec2
the world position of the point of application.

applyAngularImpulse

public void applyAngularImpulse(float impulse)
Apply an angular impulse.

Parameters

impulse float
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

massData MassData
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

localPoint Vec2
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

localVector Vec2
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

flag boolean
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)