ARGoS  3
A parallel, multi-engine simulator for swarm robotics
dynamics2d_multi_body_object_model.h
Go to the documentation of this file.
1 
7 #ifndef DYNAMICS2D_MULTI_BODY_OBJECT_MODEL_H
8 #define DYNAMICS2D_MULTI_BODY_OBJECT_MODEL_H
9 
10 namespace argos {
11  class CDynamics2DMultiBodyObjectModel;
12 }
13 
14 #include <argos3/plugins/simulator/physics_engines/dynamics2d/dynamics2d_model.h>
15 #include <argos3/plugins/simulator/physics_engines/dynamics2d/chipmunk-physics/include/chipmunk.h>
16 
17 namespace argos {
18 
45 
46  public:
47 
48  struct SBody {
49  cpBody* Body;
50  cpVect OffsetPos;
51  cpFloat OffsetOrient;
53  SBody(cpBody* pt_body,
54  const cpVect& t_offset_pos,
55  cpFloat t_offset_orient,
56  Real f_height);
57  };
58 
59  public:
60 
68  CComposableEntity& c_entity);
69 
75 
81  return m_cEntity;
82  }
83 
88  inline const CComposableEntity& GetComposableEntity() const {
89  return m_cEntity;
90  }
91 
96  inline SBody& GetBody(size_t i) {
97  return m_vecBodies[i];
98  }
99 
104  inline const SBody& GetBody(size_t i) const {
105  return m_vecBodies[i];
106  }
107 
108  virtual void Reset();
109 
110  virtual void MoveTo(const CVector3& c_position,
111  const CQuaternion& c_orientation);
112 
113  virtual void CalculateBoundingBox();
114 
115  virtual void UpdateFromEntityStatus() = 0;
116 
117  virtual bool IsCollidingWithSomething() const;
118 
143  virtual void AddBody(cpBody* pt_body,
144  const cpVect& t_offset_pos,
145  cpFloat t_offset_orient,
146  Real f_height);
147 
148  private:
149 
150  CComposableEntity& m_cEntity;
151  std::vector<SBody> m_vecBodies;
152  };
153 
154 }
155 
156 #endif
argos::CDynamics2DMultiBodyObjectModel::Reset
virtual void Reset()
Definition: dynamics2d_multi_body_object_model.cpp:71
argos::CDynamics2DMultiBodyObjectModel
Base class for object models with multiple bodies.
Definition: dynamics2d_multi_body_object_model.h:44
argos
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
argos::CVector3
A 3D vector class.
Definition: vector3.h:29
argos::CComposableEntity
Basic class for an entity that contains other entities.
Definition: composable_entity.h:32
argos::CDynamics2DMultiBodyObjectModel::AddBody
virtual void AddBody(cpBody *pt_body, const cpVect &t_offset_pos, cpFloat t_offset_orient, Real f_height)
Adds a body.
Definition: dynamics2d_multi_body_object_model.cpp:136
argos::CDynamics2DMultiBodyObjectModel::SBody::OffsetPos
cpVect OffsetPos
Definition: dynamics2d_multi_body_object_model.h:50
argos::CDynamics2DMultiBodyObjectModel::~CDynamics2DMultiBodyObjectModel
virtual ~CDynamics2DMultiBodyObjectModel()
Class destructor.
Definition: dynamics2d_multi_body_object_model.cpp:17
argos::CDynamics2DMultiBodyObjectModel::SBody::SBody
SBody(cpBody *pt_body, const cpVect &t_offset_pos, cpFloat t_offset_orient, Real f_height)
Definition: dynamics2d_multi_body_object_model.cpp:154
argos::CDynamics2DEngine
Definition: dynamics2d_engine.h:42
argos::CDynamics2DMultiBodyObjectModel::GetComposableEntity
CComposableEntity & GetComposableEntity()
Returns the associated composable entity as a non-const reference.
Definition: dynamics2d_multi_body_object_model.h:80
argos::CDynamics2DMultiBodyObjectModel::CalculateBoundingBox
virtual void CalculateBoundingBox()
Calculates the axis-aligned box that contains the entire physics model.
Definition: dynamics2d_multi_body_object_model.cpp:88
argos::CDynamics2DMultiBodyObjectModel::GetBody
const SBody & GetBody(size_t i) const
Returns the i-th body associated to the model.
Definition: dynamics2d_multi_body_object_model.h:104
argos::CQuaternion
Definition: quaternion.h:14
argos::CDynamics2DMultiBodyObjectModel::UpdateFromEntityStatus
virtual void UpdateFromEntityStatus()=0
Updates the state of this model from the status of the associated entity.
argos::CDynamics2DMultiBodyObjectModel::GetBody
SBody & GetBody(size_t i)
Returns the i-th body associated to the model.
Definition: dynamics2d_multi_body_object_model.h:96
argos::CDynamics2DMultiBodyObjectModel::SBody::OffsetOrient
cpFloat OffsetOrient
Definition: dynamics2d_multi_body_object_model.h:51
argos::CDynamics2DModel
The base class for models in the dynamics 2D engine.
Definition: dynamics2d_model.h:27
argos::CDynamics2DMultiBodyObjectModel::SBody::Body
cpBody * Body
Definition: dynamics2d_multi_body_object_model.h:49
argos::CDynamics2DMultiBodyObjectModel::SBody::Height
Real Height
Definition: dynamics2d_multi_body_object_model.h:52
argos::CDynamics2DMultiBodyObjectModel::MoveTo
virtual void MoveTo(const CVector3 &c_position, const CQuaternion &c_orientation)
Definition: dynamics2d_multi_body_object_model.cpp:42
argos::CDynamics2DMultiBodyObjectModel::SBody
Definition: dynamics2d_multi_body_object_model.h:48
argos::CDynamics2DMultiBodyObjectModel::IsCollidingWithSomething
virtual bool IsCollidingWithSomething() const
Returns true if this model is colliding with another model.
Definition: dynamics2d_multi_body_object_model.cpp:116
argos::CDynamics2DMultiBodyObjectModel::GetComposableEntity
const CComposableEntity & GetComposableEntity() const
Returns the associated composable entity as a const reference.
Definition: dynamics2d_multi_body_object_model.h:88
Real
float Real
Collects all ARGoS code.
Definition: datatypes.h:39
argos::CDynamics2DMultiBodyObjectModel::CDynamics2DMultiBodyObjectModel
CDynamics2DMultiBodyObjectModel(CDynamics2DEngine &c_engine, CComposableEntity &c_entity)
Class constructor.
Definition: dynamics2d_multi_body_object_model.cpp:9