![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtObserverObjectManager.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtObserverObjectManager_H_ 00014 #define DtObserverObjectManager_H_ 00015 00016 #include <boost/signals.hpp> 00017 #include <vrvCore/vrvCore.h> 00018 #include <map> 00019 #include <vector> 00020 00021 namespace makVrv 00022 { 00023 class DtDe; 00024 class DtObserverObject; 00025 class DtRenderer; 00026 00029 class DT_DLL_VRVCORE DtObserverObjectManager 00030 { 00031 public: 00032 00033 typedef std::vector<DtObserverObject*> ObserverObjectsList; 00034 00036 DtObserverObjectManager(DtDe& de); 00037 00039 virtual ~DtObserverObjectManager(); 00040 00042 virtual void update( double simTime ); 00043 00045 virtual void addObject( DtObserverObject* observer, 00046 const std::string& name ); 00047 00049 virtual void removeObject( DtObserverObject* observer ); 00050 00053 virtual void removeObject( const std::string& name ); 00054 00056 00057 DtObserverObject* findObserverObjectByName( const std::string& name ); 00058 const DtObserverObject* findObserverObjectByName( 00059 const std::string& name ) const; 00061 00063 const ObserverObjectsList& observerObjects() const; 00064 00066 boost::signal<void (const std::string&)> signal_observerAdded; 00067 00069 boost::signal<void (const std::string&)> signal_observerRemoved; 00070 00071 protected: 00072 00073 typedef std::map<std::string, DtObserverObject*> ObserverObjectsMap; 00074 00075 void removeObject( ObserverObjectsMap& observers, 00076 DtObserverObject* observer ); 00077 00078 void removeObject(ObserverObjectsMap& observers, 00079 const std::string& name ); 00080 00081 void addObject( ObserverObjectsMap& observers, 00082 DtObserverObject* observer, const std::string& name ); 00083 00084 DtDe& myDe; 00085 00086 ObserverObjectsMap myObserverObjects; 00087 ObserverObjectsList myObserverObjectsList; 00088 00089 }; 00090 } 00091 00092 #endif 00093