7 #ifndef DYNAMICS3D_MODEL_H
8 #define DYNAMICS3D_MODEL_H
11 class CDynamics3DEngine;
14 #include <argos3/core/simulator/physics_engine/physics_model.h>
15 #include <argos3/core/simulator/entity/composable_entity.h>
16 #include <argos3/core/utility/math/vector3.h>
17 #include <argos3/core/utility/math/quaternion.h>
18 #include <argos3/plugins/simulator/physics_engines/dynamics3d/bullet/btBulletCollisionCommon.h>
19 #include <argos3/plugins/simulator/physics_engines/dynamics3d/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h>
30 typedef std::map<std::string, CDynamics3DModel*>
TMap;
38 using TVector = std::vector<CAbstractBody*>;
44 SData(
const btTransform& c_start_transform,
45 const btTransform& c_center_of_mass_offset,
46 const btVector3& c_inertia,
63 std::shared_ptr<btCollisionShape>& ptr_shape,
76 virtual void Reset() = 0;
78 virtual void AddToWorld(btMultiBodyDynamicsWorld& c_world) = 0;
82 virtual void ApplyForce(
const btVector3& c_force) = 0;
84 virtual void ApplyForce(
const btVector3& c_force,
const btVector3& c_offset) = 0;
86 virtual void ApplyTorque(
const btVector3& c_torque) = 0;
110 virtual void Reset() = 0;
121 return m_cComposableEntity;
125 return m_cComposableEntity;
138 virtual void AddToWorld(btMultiBodyDynamicsWorld& c_world) = 0;
virtual void RemoveFromWorld(btMultiBodyDynamicsWorld &c_world)=0
const CDynamics3DEngine & GetEngine() const
virtual void AddToWorld(btMultiBodyDynamicsWorld &c_world)=0
virtual btTransform & GetTransform()=0
virtual ~CDynamics3DModel()
btTransform CenterOfMassOffset
CDynamics3DEngine & GetEngine()
std::shared_ptr< btCollisionShape > m_ptrShape
CDynamics3DModel & GetModel()
virtual void RemoveFromWorld(btMultiBodyDynamicsWorld &c_world)=0
CAbstractBody(CDynamics3DModel &c_model, SAnchor &s_anchor, std::shared_ptr< btCollisionShape > &ptr_shape, const SData &s_data)
virtual void ApplyForce(const btVector3 &c_force)=0
std::map< std::string, CDynamics3DModel * > TMap
std::vector< CAbstractBody * > m_vecBodies
virtual bool IsCollidingWithSomething() const
Returns true if this model is colliding with another model.
virtual void ApplyTorque(const btVector3 &c_torque)=0
std::vector< CAbstractBody * >::iterator TVectorIterator
Basic class for an entity that contains other entities.
An anchor related to the body of an entity.
btTransform InverseStartTransform
CComposableEntity & GetComposableEntity()
virtual void AddToWorld(btMultiBodyDynamicsWorld &c_world)=0
virtual void UpdateFromEntityStatus()
Updates the state of this model from the status of the associated entity.
btTransform StartTransform
btCollisionShape & GetShape()
SData(const btTransform &c_start_transform, const btTransform &c_center_of_mass_offset, const btVector3 &c_inertia, btScalar f_mass, btScalar f_friction)
CDynamics3DModel(CDynamics3DEngine &c_engine, CComposableEntity &c_entity)
std::vector< CAbstractBody * > & GetBodies()
virtual void UpdateEntityStatus()
Updates the status of the associated entity.
The namespace containing all the ARGoS related code.
CDynamics3DModel & m_cModel
const CComposableEntity & GetComposableEntity() const
std::vector< CAbstractBody * > TVector
btTransform InverseCenterOfMassOffset