42 m_pcControllableEntity(nullptr),
43 m_pcEmbodiedEntity(nullptr),
44 m_pcLEDEquippedEntity(nullptr),
45 m_pcLightSensorEquippedEntity(nullptr),
46 m_pcPerspectiveCameraEquippedEntity(nullptr),
47 m_pcProximitySensorEquippedEntity(nullptr),
48 m_pcQuadRotorEntity(nullptr),
49 m_pcRABEquippedEntity(nullptr),
50 m_pcBatteryEquippedEntity(nullptr) {
57 const std::string& str_controller_id,
61 size_t un_rab_data_size,
62 const std::string& str_bat_model,
64 Real f_perspcam_focal_length,
65 Real f_perspcam_range) :
67 m_pcControllableEntity(nullptr),
68 m_pcEmbodiedEntity(nullptr),
69 m_pcLEDEquippedEntity(nullptr),
70 m_pcLightSensorEquippedEntity(nullptr),
71 m_pcPerspectiveCameraEquippedEntity(nullptr),
72 m_pcProximitySensorEquippedEntity(nullptr),
73 m_pcQuadRotorEntity(nullptr),
74 m_pcRABEquippedEntity(nullptr),
75 m_pcBatteryEquippedEntity(nullptr) {
84 m_pcEmbodiedEntity =
new CEmbodiedEntity(
this,
"body_0", c_position, c_orientation);
91 m_pcLEDEquippedEntity->AddLEDRing(
92 CVector3(0.0f, 0.0f, LED_LOWER_RING_ELEVATION),
96 m_pcEmbodiedEntity->GetOriginAnchor());
97 m_pcLEDEquippedEntity->AddLEDRing(
98 CVector3(0.0f, 0.0f, LED_UPPER_RING_ELEVATION),
100 HALF_LED_ANGLE_SLICE,
102 m_pcEmbodiedEntity->GetOriginAnchor());
103 CVector3 cLEDPos(LED_RING_RADIUS * 0.7f,
105 LED_LOWER_RING_ELEVATION - 0.01f);
107 m_pcLEDEquippedEntity->AddLED(
109 m_pcEmbodiedEntity->GetOriginAnchor());
112 m_pcProximitySensorEquippedEntity =
116 m_pcProximitySensorEquippedEntity->AddSensorRing(
117 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
118 PROXIMITY_SENSOR_RING_RADIUS,
119 PROXIMITY_SENSOR_RING_START_ANGLE,
120 PROXIMITY_SENSOR_RING_RANGE,
122 m_pcEmbodiedEntity->GetOriginAnchor());
124 m_pcLightSensorEquippedEntity =
128 m_pcLightSensorEquippedEntity->AddSensorRing(
129 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
130 PROXIMITY_SENSOR_RING_RADIUS,
131 PROXIMITY_SENSOR_RING_START_ANGLE,
132 PROXIMITY_SENSOR_RING_RANGE,
134 m_pcEmbodiedEntity->GetOriginAnchor());
141 m_pcEmbodiedEntity->GetOriginAnchor(),
142 *m_pcEmbodiedEntity);
146 SAnchor& cPerspCamAnchor = m_pcEmbodiedEntity->AddAnchor(
"perspective_camera",
149 m_pcPerspectiveCameraEquippedEntity =
151 "perspective_camera_0",
153 f_perspcam_focal_length,
165 m_pcControllableEntity->SetController(str_controller_id);
192 m_pcEmbodiedEntity->Init(
GetNode(t_tree,
"body"));
198 m_pcLEDEquippedEntity->AddLEDRing(
199 CVector3(0.0f, 0.0f, LED_LOWER_RING_ELEVATION),
201 HALF_LED_ANGLE_SLICE,
203 m_pcEmbodiedEntity->GetOriginAnchor());
204 m_pcLEDEquippedEntity->AddLEDRing(
205 CVector3(0.0f, 0.0f, LED_UPPER_RING_ELEVATION),
207 HALF_LED_ANGLE_SLICE,
209 m_pcEmbodiedEntity->GetOriginAnchor());
210 CVector3 cLEDPos(LED_RING_RADIUS * 0.7f,
212 LED_LOWER_RING_ELEVATION - 0.01f);
214 m_pcLEDEquippedEntity->AddLED(
216 m_pcEmbodiedEntity->GetOriginAnchor());
219 m_pcProximitySensorEquippedEntity =
223 m_pcProximitySensorEquippedEntity->AddSensorRing(
224 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
225 PROXIMITY_SENSOR_RING_RADIUS,
226 PROXIMITY_SENSOR_RING_START_ANGLE,
227 PROXIMITY_SENSOR_RING_RANGE,
229 m_pcEmbodiedEntity->GetOriginAnchor());
231 m_pcLightSensorEquippedEntity =
235 m_pcLightSensorEquippedEntity->AddSensorRing(
236 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
237 PROXIMITY_SENSOR_RING_RADIUS,
238 PROXIMITY_SENSOR_RING_START_ANGLE,
239 PROXIMITY_SENSOR_RING_RANGE,
241 m_pcEmbodiedEntity->GetOriginAnchor());
252 m_pcEmbodiedEntity->GetOriginAnchor(),
253 *m_pcEmbodiedEntity);
256 bool bPerspCamFront =
true;
258 Real fPerspCamFocalLength = 0.035;
260 Real fPerspCamRange = 2.0;
265 SAnchor& cPerspCamAnchor = m_pcEmbodiedEntity->AddAnchor(
"perspective_camera",
268 m_pcPerspectiveCameraEquippedEntity =
270 "perspective_camera_0",
272 fPerspCamFocalLength,
280 m_pcBatteryEquippedEntity->Init(
GetNode(t_tree,
"battery"));
286 m_pcControllableEntity->Init(
GetNode(t_tree,
"controller"));