ARGoS  3
A parallel, multi-engine simulator for swarm robotics
core/simulator/entity/positional_entity.h
Go to the documentation of this file.
00001 
00007 #ifndef POSITIONAL_ENTITY_H
00008 #define POSITIONAL_ENTITY_H
00009 
00010 namespace argos {
00011    class CPositionalEntity;
00012 }
00013 
00014 #include <argos3/core/simulator/entity/entity.h>
00015 #include <argos3/core/utility/math/vector3.h>
00016 #include <argos3/core/utility/math/quaternion.h>
00017 
00018 namespace argos {
00019 
00020    class CPositionalEntity : public CEntity {
00021 
00022    public:
00023 
00024       ENABLE_VTABLE();
00025 
00026       CPositionalEntity(CComposableEntity* pc_parent);
00027 
00028       CPositionalEntity(CComposableEntity* pc_parent,
00029                         const std::string& str_id,
00030                         const CVector3& c_position,
00031                         const CQuaternion& c_orientation);
00032 
00033       virtual void Init(TConfigurationNode& t_tree);
00034       virtual void Reset();
00035 
00036       inline const CVector3& GetPosition() const {
00037          return m_cPosition;
00038       }
00039 
00040       inline const CVector3& GetInitPosition() const {
00041          return m_cInitPosition;
00042       }
00043 
00044       inline void SetPosition(const CVector3& c_position) {
00045          m_cPosition = c_position;
00046       }
00047 
00048       inline void SetInitPosition(const CVector3& c_position) {
00049          m_cInitPosition = c_position;
00050       }
00051 
00052       inline const CQuaternion& GetOrientation() const {
00053          return m_cOrientation;
00054       }
00055 
00056       inline const CQuaternion& GetInitOrientation() const {
00057          return m_cInitOrientation;
00058       }
00059 
00060       inline void SetOrientation(const CQuaternion c_orientation) {
00061          m_cOrientation = c_orientation;
00062       }
00063 
00064       inline void SetInitOrientation(const CQuaternion c_orientation) {
00065          m_cInitOrientation = c_orientation;
00066       }
00067 
00068       virtual bool MoveTo(const CVector3& c_position,
00069                           const CQuaternion& c_orientation,
00070                           bool b_check_only = false);
00071 
00072       virtual std::string GetTypeDescription() const {
00073          return "position";
00074       }
00075 
00076    private:
00077       
00078       CVector3 m_cPosition;
00079       CVector3 m_cInitPosition;
00080       CQuaternion m_cOrientation;
00081       CQuaternion m_cInitOrientation;
00082    };
00083 }
00084 
00085 #endif