7 #include <reactphysics3d/body/RigidBody.h>
8 #include <reactphysics3d/collision/Collider.h>
9 #include <reactphysics3d/collision/shapes/CollisionShape.h>
76 return Vector3(0.0f, 0.0f, 0.0f);
114 Body(
World*
world,
const string&
id,
BodyType type, uint16_t
collisionTypeId,
bool enabled,
const Transform&
transform,
float restitution,
float friction,
float mass,
const Vector3&
inertiaTensor,
const vector<BoundingVolume*>&
boundingVolumes);
217 if (enabled ==
true)
rigidBody->setIsSleeping(
false);
320 rigidBody->setLinearVelocity(reactphysics3d::Vector3(linearVelocity.
getX(), linearVelocity.
getY(), linearVelocity.
getZ()));
339 rigidBody->setAngularVelocity(reactphysics3d::Vector3(angularVelocity.
getX(), angularVelocity.
getY(), angularVelocity.
getZ()));
354 rigidBody->setLinearDamping(linearDamping);
369 rigidBody->setAngularDamping(angularDamping);
396 reactphysics3d::Transform(
397 reactphysics3d::Vector3(
399 this->transform.getTranslation().getY(),
400 this->transform.getTranslation().getZ()
402 reactphysics3d::Quaternion(
403 this->transform.getRotationsQuaternion().getX(),
404 this->transform.getRotationsQuaternion().getY(),
405 this->transform.getRotationsQuaternion().getZ(),
406 this->transform.getRotationsQuaternion().getW()
418 rigidBody->applyWorldForceAtWorldPosition(
419 reactphysics3d::Vector3(force.
getX(), force.
getY(), force.
getZ()),
420 reactphysics3d::Vector3(forceOrigin.
getX(), forceOrigin.
getY(), forceOrigin.
getZ())
429 rigidBody->applyWorldForceAtCenterOfMass(
430 reactphysics3d::Vector3(force.
getX(), force.
getY(), force.
getZ())
440 reactphysics3d::Vector3(torque.
getX(), torque.
getY(), torque.
getZ())
449 rigidBody->setAngularLockAxisFactor(reactphysics3d::Vector3(factor.
getX(), factor.
getY(), factor.
getZ()));
457 rigidBody->setLinearLockAxisFactor(reactphysics3d::Vector3(factor.
getX(), factor.
getY(), factor.
getZ()));
vector< BoundingVolume * > boundingVolumes
BoundingBox computeWorldBoundingBox()
Compute world bounding box.
void setTransform(const Transform &transform)
Set transform.
uint16_t getCollisionTypeIds()
vector< CollisionListener * > collisionListener
void addForce(const Vector3 &force)
Add force to center of mass.
void addTorque(const Vector3 &torque)
Add torque.
static constexpr uint16_t COLLISION_TYPEID_RESERVED
reactphysics3d::RigidBody * rigidBody
void fireOnCollisionBegin(Body *other, CollisionResponse &collisionResponse)
Fire on collision begin.
void setMass(float mass)
Set up mass.
void setAngularVelocity(const Vector3 &angularVelocity)
Set angular velocity.
void removeColliders(vector< reactphysics3d::Collider * > &colliders, vector< BoundingVolume * > &boundingVolumes)
Remove colliders.
static constexpr uint16_t COLLISION_TYPEID_12
static constexpr uint16_t COLLISION_TYPEID_6
void setEnabled(bool enabled)
Set up if rigid body is enabled.
void setLinearVelocity(const Vector3 &linearVelocity)
Set linear velocity.
void setFriction(float friction)
Set up friction.
void setRestitution(float restitution)
Set up restitution.
static constexpr uint16_t COLLISION_TYPEID_STATIC
void setSleeping(bool sleeping)
Set sleeping.
static constexpr uint16_t COLLISION_TYPEID_11
static constexpr uint16_t COLLISION_TYPEID_DYNAMIC
void setCollisionTypeId(uint16_t typeId)
Set collision type id.
void addForce(const Vector3 &forceOrigin, const Vector3 &force)
Add force.
void setLinearDamping(float linearDamping)
Set linear damping.
void removeCollisionListener(CollisionListener *listener)
Remove a collision listener to this rigid body.
void fireOnCollisionEnd(Body *other)
Fire on collision end.
const Transform & getTransform()
uint16_t collisionTypeIds
vector< BoundingVolume * > & getBoundingVolumes()
void setAngularDamping(float angularDamping)
Set angular damping.
static constexpr uint16_t COLLISION_TYPEID_13
void setAngularLockAxisFactor(const Vector3 &factor)
Set angular lock axis factor.
const Vector3 getAngularVelocity()
virtual ~Body()
Destructor.
virtual void resetColliders()
Reset body colliders.
void setCollisionTypeIds(uint16_t collisionTypeIds)
Set up collision type ids.
static constexpr uint16_t COLLISION_TYPEID_ALL
void setLinearLockAxisFactor(const Vector3 &factor)
Set linear lock axis factor.
void addCollisionListener(CollisionListener *listener)
Add a collision listener to this rigid body.
static constexpr uint16_t COLLISION_TYPEID_8
vector< reactphysics3d::Collider * > colliders
float getAngularDamping()
static constexpr uint16_t COLLISION_TYPEID_14
static constexpr uint16_t COLLISION_TYPEID_5
Body(World *world, const string &id, BodyType type, uint16_t collisionTypeId, bool enabled, const Transform &transform, float restitution, float friction, float mass, const Vector3 &inertiaTensor, const vector< BoundingVolume * > &boundingVolumes)
Protected constructor.
uint16_t getCollisionTypeId()
void fireOnCollision(Body *other, CollisionResponse &collisionResponse)
Fire on collision.
static constexpr uint16_t COLLISION_TYPEID_4
@ BODYTYPE_COLLISION_DYNAMIC
@ BODYTYPE_COLLISION_STATIC
static constexpr uint16_t COLLISION_TYPEID_10
BodyType getType()
Return type, see TYPE_*.
static const Vector3 getNoRotationInertiaTensor()
static constexpr uint16_t COLLISION_TYPEID_16
const Vector3 getLinearVelocity()
static constexpr uint16_t COLLISION_TYPEID_7
static constexpr uint16_t COLLISION_TYPEID_9
static constexpr uint16_t COLLISION_TYPEID_3
static constexpr uint16_t COLLISION_TYPEID_15
Dynamic physics world class.
Axis aligned bounding box used for frustum, this is not directly connectable with physics engine.
Bounding volume interface.
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Vector3 class representing vector3 mathematical structure and operations with x, y,...
Vector3 & set(float x, float y, float z)
Sets this vector3 by its components.
bool equals(const Vector3 &vector3, float tolerance=Math::EPSILON) const
Compares this vector3 with given vector3.
#define FORBID_CLASS_COPY(CLASS)