VR-Forces 4.0.4 Class Documentation
include/vrvGlStudioShared/DtGlStudioVisualizer.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)