47 m_pcControllableEntity(nullptr),
48 m_pcEmbodiedEntity(nullptr),
49 m_pcGroundSensorEquippedEntity(nullptr),
50 m_pcLEDEquippedEntity(nullptr),
51 m_pcLightSensorEquippedEntity(nullptr),
52 m_pcProximitySensorEquippedEntity(nullptr),
53 m_pcRABEquippedEntity(nullptr),
54 m_pcWheeledEntity(nullptr),
55 m_pcBatteryEquippedEntity(nullptr) {
62 const std::string& str_controller_id,
66 size_t un_rab_data_size,
67 const std::string& str_bat_model) :
69 m_pcControllableEntity(nullptr),
70 m_pcEmbodiedEntity(nullptr),
71 m_pcGroundSensorEquippedEntity(nullptr),
72 m_pcLEDEquippedEntity(nullptr),
73 m_pcLightSensorEquippedEntity(nullptr),
74 m_pcProximitySensorEquippedEntity(nullptr),
75 m_pcRABEquippedEntity(nullptr),
76 m_pcWheeledEntity(nullptr),
77 m_pcBatteryEquippedEntity(nullptr) {
83 m_pcEmbodiedEntity =
new CEmbodiedEntity(
this,
"body_0", c_position, c_orientation);
88 m_pcWheeledEntity->SetWheel(0,
CVector3(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
89 m_pcWheeledEntity->SetWheel(1,
CVector3(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
93 m_pcLEDEquippedEntity->AddLEDRing(
94 CVector3(0.0f, 0.0f, LED_RING_ELEVATION),
98 m_pcEmbodiedEntity->GetOriginAnchor());
100 m_pcProximitySensorEquippedEntity =
124 CVector3 cOff, cDir, c_center =
CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION);
125 for(
UInt32 i = 0; i < 8; ++i)
127 cAngle = sensor_angle[i];
129 cOff.
Set(PROXIMITY_SENSOR_RING_RADIUS, 0.0f, 0.0f);
132 cDir.
Set(PROXIMITY_SENSOR_RING_RANGE, 0.0f, 0.0f);
134 m_pcProximitySensorEquippedEntity->AddSensor(cOff, cDir, PROXIMITY_SENSOR_RING_RANGE, m_pcEmbodiedEntity->GetOriginAnchor());
139 m_pcLightSensorEquippedEntity =
143 m_pcLightSensorEquippedEntity->AddSensorRing(
144 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
145 PROXIMITY_SENSOR_RING_RADIUS,
146 PROXIMITY_SENSOR_RING_START_ANGLE,
147 PROXIMITY_SENSOR_RING_RANGE,
149 m_pcEmbodiedEntity->GetOriginAnchor());
151 m_pcGroundSensorEquippedEntity =
155 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.03f, -0.009f),
157 m_pcEmbodiedEntity->GetOriginAnchor());
158 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.03f, 0.0f),
160 m_pcEmbodiedEntity->GetOriginAnchor());
161 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.03f, 0.009f),
163 m_pcEmbodiedEntity->GetOriginAnchor());
169 m_pcEmbodiedEntity->GetOriginAnchor(),
171 CVector3(0.0f, 0.0f, RAB_ELEVATION));
180 m_pcControllableEntity->SetController(str_controller_id);
204 m_pcEmbodiedEntity->Init(
GetNode(t_tree,
"body"));
208 m_pcWheeledEntity->SetWheel(0,
CVector3(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
209 m_pcWheeledEntity->SetWheel(1,
CVector3(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
213 m_pcLEDEquippedEntity->AddLEDRing(
214 CVector3(0.0f, 0.0f, LED_RING_ELEVATION),
216 LED_RING_START_ANGLE,
218 m_pcEmbodiedEntity->GetOriginAnchor());
221 m_pcProximitySensorEquippedEntity =
244 CVector3 cOff, cDir, c_center =
CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION);
245 for(
UInt32 i = 0; i < 8; ++i)
247 cAngle = sensor_angle[i];
249 cOff.
Set(PROXIMITY_SENSOR_RING_RADIUS, 0.0f, 0.0f);
252 cDir.
Set(PROXIMITY_SENSOR_RING_RANGE, 0.0f, 0.0f);
254 m_pcProximitySensorEquippedEntity->AddSensor(cOff, cDir, PROXIMITY_SENSOR_RING_RANGE, m_pcEmbodiedEntity->GetOriginAnchor());
260 m_pcLightSensorEquippedEntity =
264 m_pcLightSensorEquippedEntity->AddSensorRing(
265 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
266 PROXIMITY_SENSOR_RING_RADIUS,
267 PROXIMITY_SENSOR_RING_START_ANGLE,
268 PROXIMITY_SENSOR_RING_RANGE,
270 m_pcEmbodiedEntity->GetOriginAnchor());
272 m_pcGroundSensorEquippedEntity =
276 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.03f, -0.009f),
278 m_pcEmbodiedEntity->GetOriginAnchor());
279 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.03f, 0.0f),
281 m_pcEmbodiedEntity->GetOriginAnchor());
282 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.03f, 0.009f),
284 m_pcEmbodiedEntity->GetOriginAnchor());
294 m_pcEmbodiedEntity->GetOriginAnchor(),
296 CVector3(0.0f, 0.0f, RAB_ELEVATION));
301 m_pcBatteryEquippedEntity->Init(
GetNode(t_tree,
"battery"));
307 m_pcControllableEntity->Init(
GetNode(t_tree,
"controller"));