![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtEntityElementProcessor.h,v $ $Revision: 1.17 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvVrl/vrvVrl.h> 00016 #include <vrvCore/DtVisualizerCreationSettings.h> 00017 #include <vrvUtil/DtSignalConnectionManager.h> 00018 #include <boost/unordered_map.hpp> 00019 #include <vl/globalObjDes.h> 00020 00021 namespace makVrv 00022 { 00023 class DtEntityVisualizerSet; 00024 class DtAggregateEchelonManager; 00025 class DtEntityFilter; 00026 00027 namespace DT_PROTOCOL_NAMESPACE 00028 { 00029 class DtEntityElement; 00030 class DtEntityExistenceListener; 00031 class DtVrlinkConnection; 00032 class DtVrlinkEntityStateListener; 00033 00039 class DL_DLL_IGCONVRLINK DtEntityElementProcessor : public DtVirtualBaseClass 00040 { 00041 public: 00043 DtEntityElementProcessor(DtVrlinkConnection& conn); 00044 00047 static void registerInstance(DtVrlinkConnection& conn, 00048 DtEntityElementProcessor* instance); 00049 00051 static DtEntityElementProcessor* findInstance(DtVrlinkConnection& conn); 00052 00054 virtual ~DtEntityElementProcessor(); 00055 00057 void toggleLabelPinnedState(const DtSelectionManager::IdSet& ids); 00058 00060 void changeEntitySelection(const DtSelectionManager::IdSet& selected, 00061 const DtSelectionManager::IdSet& deselected); 00062 00064 DtEntityVisualizerSet* findVisualizer(int modelSet, const DtGlobalObjectDesignator& id); 00065 00068 std::vector<DtEntityVisualizerSet*> findVisualizers( const DtGlobalObjectDesignator& id); 00069 00072 DtEntityVisualizerSet* findVisualizerSet( 00073 const DtGlobalObjectDesignator& id, unsigned int modelSet); 00074 00076 DtVrlinkEntityStateListener* findListener( const DtElementID& elementId ); 00077 00079 DtEntityElement* findElement( const DtElementID& elementId ); 00080 00082 DtEntityElement* findElement( const DtGlobalObjectDesignator& id ); 00083 00085 DtEntityVisualizerSet* findVisualizer( const DtUniqueID& id); 00086 00089 void setVisualizerCreationProcessingTime(double); 00090 double visualizerCreationProcessingTime() const; 00091 00093 const DtVisualizerCreationSettings::VisualTypeVisualizerCreationMap& 00094 visualTypeVisualizerCreationMap() const; 00095 00096 public: 00097 boost::signal<void (DtVrlinkEntityStateListener&, DtEntityElement*)> signal_elementCreated; 00098 boost::signal<void (DtVrlinkEntityStateListener&, DtEntityElement*)> signal_elementAboutToBeDestroyed; 00099 00100 protected: 00101 00104 virtual void modelSetVisualized(int modelSet, bool enabled); 00105 00107 virtual void handleElementAttributeChanged( 00108 DtEntityElement& entity, const DtElementAttribute* attr); 00109 00111 virtual void onEntityDiscovered(DtVrlinkEntityStateListener& listener); 00112 00114 virtual void onEntityToBeDestroyed(DtVrlinkEntityStateListener& listener); 00115 00117 virtual bool onFilterEntity(const std::string& entityId); 00118 00120 virtual void elementAttributeChangeRequested( DtUniqueID id, 00121 DtUniqueID parentID, DtBoost::shared_ptr<const DtElementAttribute> atr ); 00122 00124 virtual void slot_completeDiscovery(); 00125 00126 virtual void slot_addEntityFilter(DtEntityFilter* filter); 00127 00130 virtual void slot_visualizerCreationEnabled( int modelSet, int visualType ); 00131 00134 virtual void slot_visualizerCreationDisabled( int modelSet, int visualType ); 00135 00138 virtual void createElement(DtVrlinkEntityStateListener&); 00139 00140 protected: 00141 00142 typedef boost::unordered_map<DtUniqueID, DtEntityElement*> 00143 EntityElementVisualizerMap; 00144 typedef boost::unordered_map<std::string, DtEntityElement*> 00145 GlobalIdToEntityElementVisualizerMap; 00146 typedef boost::unordered_map<DtUniqueID, DtVrlinkEntityStateListener*> 00147 ToBeVisualizedMap; 00148 typedef std::vector<DtEntityFilter*> EntityFilterList; 00149 00150 DtVrlinkConnection& myConnection; 00151 DtSignalConnectionManager myConnections; 00152 EntityElementVisualizerMap myEntityElementVisualizers; 00153 GlobalIdToEntityElementVisualizerMap myGlobalIdToElementVisualizerMap; 00154 DtAggregateEchelonManager& myEchelonHierarchy; 00155 ToBeVisualizedMap myToBeVisualized; 00156 double myVisualizerCreationProcessingTime; 00157 EntityFilterList myEntityFilterList; 00158 DtVisualizerCreationSettings* myVisualTypeVisualizerSettings; 00159 }; 00160 } 00161 }