positional_entity.cpp
Go to the documentation of this file.
1 
7 #include "positional_entity.h"
8 #include "composable_entity.h"
9 #include <argos3/core/simulator/space/space.h>
10 #include <argos3/core/simulator/simulator.h>
11 #include <argos3/core/utility/string_utilities.h>
12 
13 namespace argos {
14 
15  /****************************************/
16  /****************************************/
17 
19  CEntity(pc_parent) {}
20 
21  /****************************************/
22  /****************************************/
23 
25  const std::string& str_id,
26  const CVector3& c_position,
27  const CQuaternion& c_orientation) :
28  CEntity(pc_parent, str_id),
29  m_cPosition(c_position),
30  m_cInitPosition(c_position),
31  m_cOrientation(c_orientation),
32  m_cInitOrientation(c_orientation) {}
33 
34  /****************************************/
35  /****************************************/
36 
38  try {
39  /* Initialize base entity */
40  CEntity::Init(t_tree);
41  /* Get the position of the entity */
42  GetNodeAttributeOrDefault(t_tree, "position", m_cPosition, CVector3());
43  /* Get the orientation of the entity */
44  GetNodeAttributeOrDefault(t_tree, "orientation", m_cOrientation, CQuaternion());
45  m_cInitPosition = m_cPosition;
46  m_cInitOrientation = m_cOrientation;
47  }
48  catch(CARGoSException& ex) {
49  THROW_ARGOSEXCEPTION_NESTED("Failed to initialize positional entity \"" << GetId() << "\".", ex);
50  }
51  }
52 
53  /****************************************/
54  /****************************************/
55 
57  /* Reset the entity's initial position and orientation */
58  SetPosition(m_cInitPosition);
59  SetOrientation(m_cInitOrientation);
60  }
61 
62  /****************************************/
63  /****************************************/
64 
65  void CPositionalEntity::MoveTo(const CVector3& c_position,
66  const CQuaternion& c_orientation) {
67  SetPosition(c_position);
68  SetOrientation(c_orientation);
69  }
70 
71  /****************************************/
72  /****************************************/
73 
75 
76  /****************************************/
77  /****************************************/
78 
79 }
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
A 3D vector class.
Definition: vector3.h:29
virtual void MoveTo(const CVector3 &c_position, const CQuaternion &c_orientation)
void GetNodeAttributeOrDefault(TConfigurationNode &t_node, const std::string &str_attribute, T &t_buffer, const T &t_default)
Returns the value of a node's attribute, or the passed default value.
The basic entity type.
Definition: entity.h:89
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
#define THROW_ARGOSEXCEPTION_NESTED(message, nested)
This macro throws an ARGoS exception with the passed message and nesting the passed exception...
CPositionalEntity(CComposableEntity *pc_parent)
Basic class for an entity that contains other entities.
virtual void Reset()
Resets the state of the entity to whatever it was after Init() or the standalone constructor was call...
The exception that wraps all errors in ARGoS.
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
Definition: entity.cpp:40
void SetOrientation(const CQuaternion c_orientation)
REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY(CEntity)
const std::string & GetId() const
Returns the id of this entity.
Definition: entity.h:157
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
void SetPosition(const CVector3 &c_position)