Box2D 2.4.1
A 2D physics engine for games
b2Body Class Reference

A rigid body. These are created via b2World::CreateBody. More...

#include <b2_body.h>

Public Member Functions

b2FixtureCreateFixture (const b2FixtureDef *def)
 
b2FixtureCreateFixture (const b2Shape *shape, float density)
 
void DestroyFixture (b2Fixture *fixture)
 
void SetTransform (const b2Vec2 &position, float angle)
 
const b2TransformGetTransform () const
 
const b2Vec2GetPosition () const
 
float GetAngle () const
 
const b2Vec2GetWorldCenter () const
 Get the world position of the center of mass.
 
const b2Vec2GetLocalCenter () const
 Get the local position of the center of mass.
 
void SetLinearVelocity (const b2Vec2 &v)
 
const b2Vec2GetLinearVelocity () const
 
void SetAngularVelocity (float omega)
 
float GetAngularVelocity () const
 
void ApplyForce (const b2Vec2 &force, const b2Vec2 &point, bool wake)
 
void ApplyForceToCenter (const b2Vec2 &force, bool wake)
 
void ApplyTorque (float torque, bool wake)
 
void ApplyLinearImpulse (const b2Vec2 &impulse, const b2Vec2 &point, bool wake)
 
void ApplyLinearImpulseToCenter (const b2Vec2 &impulse, bool wake)
 
void ApplyAngularImpulse (float impulse, bool wake)
 
float GetMass () const
 
float GetInertia () const
 
void GetMassData (b2MassData *data) const
 
void SetMassData (const b2MassData *data)
 
void ResetMassData ()
 
b2Vec2 GetWorldPoint (const b2Vec2 &localPoint) const
 
b2Vec2 GetWorldVector (const b2Vec2 &localVector) const
 
b2Vec2 GetLocalPoint (const b2Vec2 &worldPoint) const
 
b2Vec2 GetLocalVector (const b2Vec2 &worldVector) const
 
b2Vec2 GetLinearVelocityFromWorldPoint (const b2Vec2 &worldPoint) const
 
b2Vec2 GetLinearVelocityFromLocalPoint (const b2Vec2 &localPoint) const
 
float GetLinearDamping () const
 Get the linear damping of the body.
 
void SetLinearDamping (float linearDamping)
 Set the linear damping of the body.
 
float GetAngularDamping () const
 Get the angular damping of the body.
 
void SetAngularDamping (float angularDamping)
 Set the angular damping of the body.
 
float GetGravityScale () const
 Get the gravity scale of the body.
 
void SetGravityScale (float scale)
 Set the gravity scale of the body.
 
void SetType (b2BodyType type)
 Set the type of this body. This may alter the mass and velocity.
 
b2BodyType GetType () const
 Get the type of this body.
 
void SetBullet (bool flag)
 Should this body be treated like a bullet for continuous collision detection?
 
bool IsBullet () const
 Is this body treated like a bullet for continuous collision detection?
 
void SetSleepingAllowed (bool flag)
 
bool IsSleepingAllowed () const
 Is this body allowed to sleep.
 
void SetAwake (bool flag)
 
bool IsAwake () const
 
void SetEnabled (bool flag)
 
bool IsEnabled () const
 Get the active state of the body.
 
void SetFixedRotation (bool flag)
 
bool IsFixedRotation () const
 Does this body have fixed rotation?
 
b2FixtureGetFixtureList ()
 Get the list of all fixtures attached to this body.
 
const b2FixtureGetFixtureList () const
 
b2JointEdgeGetJointList ()
 Get the list of all joints attached to this body.
 
const b2JointEdgeGetJointList () const
 
b2ContactEdgeGetContactList ()
 
const b2ContactEdgeGetContactList () const
 
b2BodyGetNext ()
 Get the next body in the world's body list.
 
const b2BodyGetNext () const
 
b2BodyUserDataGetUserData ()
 Get the user data pointer that was provided in the body definition.
 
void SetUserData (void *data)
 Set the user data. Use this to store your application specific data.
 
b2WorldGetWorld ()
 Get the parent world of this body.
 
const b2WorldGetWorld () const
 
void Dump ()
 Dump this body to a file.
 

Friends

class b2World
 
class b2Island
 
class b2ContactManager
 
class b2ContactSolver
 
class b2Contact
 
class b2DistanceJoint
 
class b2FrictionJoint
 
class b2GearJoint
 
class b2MotorJoint
 
class b2MouseJoint
 
class b2PrismaticJoint
 
class b2PulleyJoint
 
class b2RevoluteJoint
 
class b2RopeJoint
 
class b2WeldJoint
 
class b2WheelJoint
 

Detailed Description

A rigid body. These are created via b2World::CreateBody.

Member Function Documentation

◆ ApplyAngularImpulse()

void b2Body::ApplyAngularImpulse ( float  impulse,
bool  wake 
)
inline

Apply an angular impulse.

Parameters
impulsethe angular impulse in units of kg*m*m/s
wakealso wake up the body

◆ ApplyForce()

void b2Body::ApplyForce ( const b2Vec2 force,
const b2Vec2 point,
bool  wake 
)
inline

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
forcethe world force vector, usually in Newtons (N).
pointthe world position of the point of application.
wakealso wake up the body

◆ ApplyForceToCenter()

void b2Body::ApplyForceToCenter ( const b2Vec2 force,
bool  wake 
)
inline

Apply a force to the center of mass. This wakes up the body.

Parameters
forcethe world force vector, usually in Newtons (N).
wakealso wake up the body

◆ ApplyLinearImpulse()

void b2Body::ApplyLinearImpulse ( const b2Vec2 impulse,
const b2Vec2 point,
bool  wake 
)
inline

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
impulsethe world impulse vector, usually in N-seconds or kg-m/s.
pointthe world position of the point of application.
wakealso wake up the body

◆ ApplyLinearImpulseToCenter()

void b2Body::ApplyLinearImpulseToCenter ( const b2Vec2 impulse,
bool  wake 
)
inline

Apply an impulse to the center of mass. This immediately modifies the velocity.

Parameters
impulsethe world impulse vector, usually in N-seconds or kg-m/s.
wakealso wake up the body

◆ ApplyTorque()

void b2Body::ApplyTorque ( float  torque,
bool  wake 
)
inline

Apply a torque. This affects the angular velocity without affecting the linear velocity of the center of mass.

Parameters
torqueabout the z-axis (out of the screen), usually in N-m.
wakealso wake up the body

◆ CreateFixture() [1/2]

b2Fixture * b2Body::CreateFixture ( const b2FixtureDef 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.

Parameters
defthe fixture definition.
Warning
This function is locked during callbacks.

◆ CreateFixture() [2/2]

b2Fixture * b2Body::CreateFixture ( const b2Shape shape,
float  density 
)

Creates a fixture from a shape and attach it to this body. This is a convenience function. Use b2FixtureDef 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.

Parameters
shapethe shape to be cloned.
densitythe shape density (set to zero for static bodies).
Warning
This function is locked during callbacks.

◆ DestroyFixture()

void b2Body::DestroyFixture ( b2Fixture 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.

Parameters
fixturethe fixture to be removed.
Warning
This function is locked during callbacks.

◆ GetAngle()

float b2Body::GetAngle ( ) const
inline

Get the angle in radians.

Returns
the current world rotation angle in radians.

◆ GetAngularVelocity()

float b2Body::GetAngularVelocity ( ) const
inline

Get the angular velocity.

Returns
the angular velocity in radians/second.

◆ GetContactList()

b2ContactEdge * b2Body::GetContactList ( )
inline

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 b2ContactListener.

◆ GetInertia()

float b2Body::GetInertia ( ) const
inline

Get the rotational inertia of the body about the local origin.

Returns
the rotational inertia, usually in kg-m^2.

◆ GetLinearVelocity()

const b2Vec2 & b2Body::GetLinearVelocity ( ) const
inline

Get the linear velocity of the center of mass.

Returns
the linear velocity of the center of mass.

◆ GetLinearVelocityFromLocalPoint()

b2Vec2 b2Body::GetLinearVelocityFromLocalPoint ( const b2Vec2 localPoint) const
inline

Get the world velocity of a local point.

Parameters
localPointa point in local coordinates.
Returns
the world velocity of a point.

◆ GetLinearVelocityFromWorldPoint()

b2Vec2 b2Body::GetLinearVelocityFromWorldPoint ( const b2Vec2 worldPoint) const
inline

Get the world linear velocity of a world point attached to this body.

Parameters
worldPointa point in world coordinates.
Returns
the world velocity of a point.

◆ GetLocalPoint()

b2Vec2 b2Body::GetLocalPoint ( const b2Vec2 worldPoint) const
inline

Gets a local point relative to the body's origin given a world point.

Parameters
worldPointa point in world coordinates.
Returns
the corresponding local point relative to the body's origin.

◆ GetLocalVector()

b2Vec2 b2Body::GetLocalVector ( const b2Vec2 worldVector) const
inline

Gets a local vector given a world vector.

Parameters
worldVectora vector in world coordinates.
Returns
the corresponding local vector.

◆ GetMass()

float b2Body::GetMass ( ) const
inline

Get the total mass of the body.

Returns
the mass, usually in kilograms (kg).

◆ GetMassData()

void b2Body::GetMassData ( b2MassData data) const
inline

Get the mass data of the body.

Returns
a struct containing the mass, inertia and center of the body.

◆ GetPosition()

const b2Vec2 & b2Body::GetPosition ( ) const
inline

Get the world body origin position.

Returns
the world position of the body's origin.

◆ GetTransform()

const b2Transform & b2Body::GetTransform ( ) const
inline

Get the body transform for the body's origin.

Returns
the world transform of the body's origin.

◆ GetWorldPoint()

b2Vec2 b2Body::GetWorldPoint ( const b2Vec2 localPoint) const
inline

Get the world coordinates of a point given the local coordinates.

Parameters
localPointa point on the body measured relative the the body's origin.
Returns
the same point expressed in world coordinates.

◆ GetWorldVector()

b2Vec2 b2Body::GetWorldVector ( const b2Vec2 localVector) const
inline

Get the world coordinates of a vector given the local coordinates.

Parameters
localVectora vector fixed in the body.
Returns
the same vector expressed in world coordinates.

◆ IsAwake()

bool b2Body::IsAwake ( ) const
inline

Get the sleeping state of this body.

Returns
true if the body is awake.

◆ ResetMassData()

void b2Body::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.

◆ SetAngularVelocity()

void b2Body::SetAngularVelocity ( float  omega)
inline

Set the angular velocity.

Parameters
omegathe new angular velocity in radians/second.

◆ SetAwake()

void b2Body::SetAwake ( bool  flag)
inline

Set the sleep state of the body. A sleeping body has very low CPU cost.

Parameters
flagset to true to wake the body, false to put it to sleep.

◆ SetEnabled()

void b2Body::SetEnabled ( bool  flag)

Allow a body to be disabled. A disabled 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 disabled bodies. Fixtures on a disabled body are implicitly disabled and will not participate in collisions, ray-casts, or queries. Joints connected to a disabled body are implicitly disabled. An diabled body is still owned by a b2World object and remains in the body list.

◆ SetFixedRotation()

void b2Body::SetFixedRotation ( bool  flag)

Set this body to have fixed rotation. This causes the mass to be reset.

◆ SetLinearVelocity()

void b2Body::SetLinearVelocity ( const b2Vec2 v)
inline

Set the linear velocity of the center of mass.

Parameters
vthe new linear velocity of the center of mass.

◆ SetMassData()

void b2Body::SetMassData ( const b2MassData data)

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
datathe mass properties.

◆ SetSleepingAllowed()

void b2Body::SetSleepingAllowed ( bool  flag)
inline

You can disable sleeping on this body. If you disable sleeping, the body will be woken.

◆ SetTransform()

void b2Body::SetTransform ( const b2Vec2 position,
float  angle 
)

Set the position of the body's origin and rotation. Manipulating a body's transform may cause non-physical behavior. Note: contacts are updated on the next call to b2World::Step.

Parameters
positionthe world position of the body's local origin.
anglethe world rotation in radians.

The documentation for this class was generated from the following file: