![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtGlStudioVisualizer.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #ifndef DT_PROTOCOL_NAMESPACE 00016 #error Namespace Protocol Macro DT_PROTOCOL_NAMESPACE not defined. 00017 #endif 00018 00019 #include <vrvUtil/DtVirtualBaseClass.h> 00020 #include <vrvCore/DtUniqueID.h> 00021 #include <vrvUtil/DtSignalConnectionManager.h> 00022 #include <boost/unordered_map.hpp> 00023 #include <string> 00024 #include <list> 00025 00026 namespace makVrv 00027 { 00028 class DtOsgGlStudioCockpitAgent; 00029 class DtModelDefinition; 00030 00031 namespace DT_PROTOCOL_NAMESPACE 00032 { 00033 00034 class DtVrlinkEntityStateListener; 00035 class DtVrlinkConnection; 00036 class DtGlStudioVrlAttributeUpdater; 00037 00040 class DT_DLL_VRVGLSTUDIOVRLINK DtGlStudioVisualizer : 00041 public DtVirtualBaseClass 00042 { 00043 public: 00045 DtGlStudioVisualizer(DtVrlinkConnection& conn); 00046 00048 static void registerInstance(DtVrlinkConnection& conn, 00049 DtGlStudioVisualizer* instance); 00050 00051 static void unregisterInstance(DtVrlinkConnection& conn); 00052 00054 static DtGlStudioVisualizer* findInstance(DtVrlinkConnection& conn); 00055 00057 virtual ~DtGlStudioVisualizer(); 00058 00060 virtual void update(); 00061 00062 protected: 00063 00064 typedef std::vector<DtOsgGlStudioCockpitAgent*> CockpitAgentList; 00065 typedef std::vector<std::pair<std::string,DtGlStudioVrlAttributeUpdater*> > AttributeUpdaterList; 00066 00068 class CockpitDataBundle 00069 { 00070 public: 00071 CockpitDataBundle(DtVrlinkEntityStateListener* listener); 00072 ~CockpitDataBundle(); 00073 00074 void addAgent(DtOsgGlStudioCockpitAgent* agent); 00075 void addUpdater(const std::string& name, DtGlStudioVrlAttributeUpdater* updater); 00076 DtVrlinkEntityStateListener* findListener(); 00077 void setVisible(bool visible); 00078 00079 CockpitAgentList myAgents; 00080 AttributeUpdaterList myUpdaters; 00081 DtVrlinkEntityStateListener* myListener; 00082 }; 00083 00084 //holds the observers->agents/listeners 00085 typedef boost::unordered_map<std::string, CockpitDataBundle*> 00086 CockpitAgentsMap; 00087 00089 void attachEntity(const DtUniqueID& id); 00090 void detachEntity(); 00091 00093 virtual void realizeCockpit(const std::string& obsName, DtUniqueID id); 00094 virtual void unrealizeCockpit(const std::string& obsName); 00095 virtual void enableCockpits(bool enable); 00096 virtual void buildAttributeMap(const DtModelDefinition* def, 00097 DtOsgGlStudioCockpitAgent* agent, CockpitDataBundle* bundle); 00098 00099 //slots to connect to the entity listener 00100 virtual void slot_entityRemoved(DtVrlinkEntityStateListener& listener); 00101 00102 virtual CockpitAgentsMap::iterator 00103 clearCockpitAgents(const std::string& obsName); 00104 00105 protected: 00106 00107 //protected variables 00108 DtVrlinkConnection& mySimConn; 00109 DtSignalConnectionManager myConnections; 00110 CockpitAgentsMap myCockpitAgentMap; 00111 }; 00112 } 00113 }