![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtEntityElement.h,v $ $Revision: 1.17 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvVrl/vrvVrl.h> 00016 #include <vrvUtil/DtSignalConnectionManager.h> 00017 #include <vrvCore/DtStateVisualizer.h> 00018 #include <vrvCore/DtEntityVisualizerSet.h> 00019 #include <vrvVrl/DtVrlinkElement.h> 00020 #include <boost/unordered_map.hpp> 00021 00022 namespace makVrv 00023 { 00024 class DtStateVisualizerFactory; 00025 00026 namespace DT_PROTOCOL_NAMESPACE 00027 { 00028 class DtVrlinkEntityStateListener; 00029 class DtVrlinkConnection; 00030 00033 class DL_DLL_IGCONVRLINK DtEntityElement : public DtVrlinkElement 00034 { 00035 public: 00036 00037 typedef boost::unordered_map<int, DtEntityVisualizerSet*> ModelSetMap; 00038 00040 DtEntityElement( DtVrlinkConnection& conn, 00041 DtVrlinkEntityStateListener& listener ); 00042 00044 ~DtEntityElement(); 00045 00047 void visualize(const DtSharedModelSetSettings::ModelSetVisualizedMap& sets); 00048 00050 virtual void setVisible(bool visible); 00051 00054 void setModelSetEnabled( int modelSet, bool enabled ); 00055 00058 void createVisualizersByModelSetAndType( int modelSet, int visualType ); 00059 00062 void destroyVisualizersByModelSetAndType( int modelSet, int visualType ); 00063 00065 inline const ModelSetMap& modelSetMap() const 00066 { 00067 return myEntityModelSetMap; 00068 } 00069 00070 template <typename VisualizerClass> 00071 void findVisualizers(std::vector<VisualizerClass*>& visualizers) 00072 { 00073 ModelSetMap::iterator i = myEntityModelSetMap.begin(); 00074 ModelSetMap::iterator e = myEntityModelSetMap.end(); 00075 for(;i != e;++i) 00076 { 00077 i->second->findVisualizers(visualizers); 00078 } 00079 } 00080 00082 inline DtVrlinkEntityStateListener& listener() 00083 { 00084 return myListener; 00085 } 00086 00087 virtual DtElementEntry::ObjectType elementType() const 00088 { 00089 return DtElementEntry::Entity; 00090 } 00091 00093 virtual void damageSet(unsigned int damage); 00094 00096 virtual void updateVisibilityStates(); 00097 00101 virtual void updateVisibilityState(DtEntityVisualizerSet*); 00102 00103 protected: 00104 00105 virtual void getDefinitions( std::vector<DtUnicode>& definitions ); 00106 00109 virtual void slot_showStealthsChanged( bool enabled ); 00110 00111 protected: 00112 00113 ModelSetMap myEntityModelSetMap; 00114 DtVrlinkConnection& myVrlinkConnection; 00115 DtVrlinkEntityStateListener& myListener; 00116 DtSignalConnectionManager myConnections; 00117 }; 00118 } 00119 } 00120