23 #ifndef _SENSORMANAGER_HH_ 
   24 #define _SENSORMANAGER_HH_ 
   26 #include <boost/thread.hpp> 
   49       public: common::Time time;
 
   52       public: boost::condition_variable *condition;
 
   57     class SimTimeEventHandler
 
   60       public: SimTimeEventHandler();
 
   63       public: 
virtual ~SimTimeEventHandler();
 
   70       public: 
void AddRelativeEvent(
const common::Time &_time,
 
   71                   boost::condition_variable *_var);
 
   75       private: 
void OnUpdate(
const common::UpdateInfo &_info);
 
   78       private: boost::mutex mutex;
 
   81       private: std::list<SimTimeEvent*> events;
 
  106       public: 
void Update(
bool _force = 
false);
 
  123       public: 
void GetSensorTypes(std::vector<std::string> &_types) 
const;
 
  127                   const std::string &_worldName,
 
  138                                        const std::string &_worldName,
 
  139                                        const std::string &_parentName,
 
  167       private: 
void AddSensor(
SensorPtr _sensor);
 
  198                  public: 
virtual void Update(
bool _force = 
false);
 
  202                  public: 
void AddSensor(
SensorPtr _sensor);
 
  210                                              bool _useLeafName = 
false) 
const;
 
  225                  private: 
void RunLoop();
 
  235                  private: 
bool initialized;
 
  238                  private: boost::thread *runThread;
 
  241                  private: 
mutable boost::recursive_mutex mutex;
 
  245                  private: boost::condition_variable runCondition;
 
  257                  public: 
virtual void Update(
bool _force = 
false);
 
  263       private: 
bool initialized;
 
  266       private: 
bool removeAllSensors;
 
  269       private: 
mutable boost::recursive_mutex mutex;
 
  275       private: std::vector<std::string> removeSensors;
 
  278       private: 
typedef std::vector<SensorContainer*> SensorContainer_V;
 
  281       private: SensorContainer_V sensorContainers;
 
  290       private: SimTimeEventHandler *simTimeEventHandler;