ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 #ifndef RAB_MEDIUM_H 00002 #define RAB_MEDIUM_H 00003 00004 namespace argos { 00005 class CRABMedium; 00006 class CRABEquippedEntity; 00007 } 00008 00009 #include <argos3/core/simulator/medium/medium.h> 00010 #include <argos3/core/simulator/space/positional_indices/positional_index.h> 00011 #include <argos3/plugins/robots/generic/control_interface/ci_range_and_bearing_sensor.h> 00012 #include <argos3/plugins/simulator/entities/rab_equipped_entity.h> 00013 00014 namespace argos { 00015 00016 class CRABMedium : public CMedium { 00017 00018 public: 00019 00023 CRABMedium(); 00024 00028 virtual ~CRABMedium(); 00029 00030 virtual void Init(TConfigurationNode& t_tree); 00031 virtual void PostSpaceInit(); 00032 virtual void Reset(); 00033 virtual void Destroy(); 00034 virtual void Update(); 00035 00040 void AddEntity(CRABEquippedEntity& c_entity); 00041 00046 void RemoveEntity(CRABEquippedEntity& c_entity); 00047 00054 const CSet<CRABEquippedEntity*>& GetRABsCommunicatingWith(CRABEquippedEntity& c_entity) const; 00055 00056 private: 00057 00059 typedef std::map<CRABEquippedEntity*, CSet<CRABEquippedEntity*> > TRoutingTable; 00060 00062 TRoutingTable m_tRoutingTable; 00063 00065 CPositionalIndex<CRABEquippedEntity>* m_pcRABEquippedEntityIndex; 00066 00068 CRABEquippedEntityGridEntityUpdater* m_pcRABEquippedEntityGridUpdateOperation; 00069 00070 }; 00071 00072 } 00073 00074 #endif