![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00011 00012 #pragma once 00013 00014 #include <vrfGuiCore/vrfGuiCore.h> 00015 #include <vrfGuiCore/DtVrfObjectFacadeInterface.h> 00016 #include <vrfGuiCore/DtEntityStateListenerExtensions.h> 00017 00018 #include <vrvCore/DtBaseConnection.h> 00019 #include <vrvCore/DtAggregateStateListener.h> 00020 #include <vrvCore/DtSharedModelSetSettings.h> 00021 #include <vrvCore/DtVisualizerSet.h> 00022 #include <vrvUtil/DtUnicode.h> 00023 #include <vrvVrl/DtForceManager.h> 00024 00025 #include <matrix/vlVector.h> 00026 #include <matrix/vlTaitBryan.h> 00027 00028 #include <vlpi/entityType.h> 00029 00030 #include <string> 00031 #include <map> 00032 00033 class DtEntityType; 00034 00035 namespace makVrv 00036 { 00037 class DtVisualDefinitionSet; 00038 class DtAgentManagerInterface; 00039 class DtDe; 00040 class DtBaseConnection; 00041 } 00042 00043 namespace makVrf 00044 { 00045 class MyStateVisualizer : public makVrv::DtStateVisualizer 00046 { 00047 public: 00048 MyStateVisualizer(makVrv::DtBaseConnection& connection, makVrv::DtStateListener& listener, 00049 int modelSet) : makVrv::DtStateVisualizer(connection, listener, modelSet) {}; 00050 00051 int modelSet() const { return myModelSet; }; 00052 }; 00053 00054 class DT_DLL_VRFGUICORE DtExtAggregateStateListener : public makVrv::DtAggregateStateListener, public DtEntityStateListenerExtensions 00055 { 00056 public: 00057 DtExtAggregateStateListener(makVrv::DtUniqueID id) : makVrv::DtAggregateStateListener(id), DtEntityStateListenerExtensions(id) {}; 00058 virtual ~DtExtAggregateStateListener() {}; 00059 }; 00060 00061 class DT_DLL_VRFGUICORE DtEntityFacadeCollection : public DtVrfObjectFacadeInterface 00062 { 00063 public: 00064 typedef std::map<int, makVrv::DtVisualizerSet*> ModelSetMap; 00065 00066 public: 00067 DtEntityFacadeCollection(makVrv::DtDe&, int modelSet = -1); 00068 virtual ~DtEntityFacadeCollection(); 00069 00070 public: 00072 00074 virtual void visualize(const makVrv::DtUnicode& type, 00075 const makVrv::DtSharedModelSetSettings::ModelSetVisualizedMap& sets); 00076 00077 const ModelSetMap& modelSetMap() const 00078 { 00079 return myModelSetMap; 00080 } 00081 00082 ModelSetMap& modelSetMap() 00083 { 00084 return myModelSetMap; 00085 } 00086 00088 virtual void setOrientation(const DtTaitBryan& orientation); 00089 00091 virtual void setOrigin(const DtVector& v); 00092 virtual void setOrigin(const DtGeodeticCoord& v); 00093 00095 virtual void setOriginAndSeaLevel(const DtVector& v); 00096 virtual void setOriginAndSeaLevel(const DtGeodeticCoord& v); 00097 00099 virtual void setForceId(int); 00100 int forceId() const; 00101 00102 virtual makVrv::DtBaseConnection& baseConnection() const; 00103 00105 void setHatLineVisible( bool visible ); 00106 00108 virtual void setVisible(bool b); 00109 00111 virtual void setPickable(bool b); 00112 00114 virtual void setSelected(bool b); 00115 00117 virtual void setOverlayName(const std::string&); 00118 virtual std::string overlayName() const; 00119 00121 virtual void setIndicatorVisible(bool b); 00122 00123 virtual void setUniqueID(makVrv::DtUniqueID); 00124 makVrv::DtUniqueID uniqueID() const; 00125 00127 virtual void setWidgetEventsEnabled(bool b); 00128 00130 virtual void setGroundClamping(bool b); 00131 00133 virtual void setSymbolDecorationOffset(double x, double y); 00134 00136 virtual void setAutoEnableGroundClamping(bool b); 00137 00139 virtual void realizeFacades(); 00140 00142 virtual void unrealizeFacades(); 00143 00146 virtual bool hasProjectedModel(int modelSet) const; 00147 00151 virtual void setElementDefinition(const makVrv::DtUnicode& elementName); 00152 00154 virtual const makVrv::DtUnicode& elementDefinition() const; 00155 00158 virtual void setElementDefinition(const DtEntityType&); 00159 00161 void setSmoothingEnabled(bool enabled); 00162 00164 void setMotionModel(const std::string&); 00165 00167 virtual void setHeadingIndicatorVisible(bool); 00168 00170 virtual void setHeadingIndicatorSize(float l); 00171 00173 //virtual bool visualDefinitionSetFor(const std::string& type, makVrv::DtVisualDefinitionSet&, int, bool& isAggregate); 00174 00176 virtual DtVector position() const; 00177 00178 virtual makVrv::DtUniqueID uniqueIDForModelSet(int set) const; 00179 00181 virtual void setEffectsVisible(bool); 00182 00185 virtual void setAltitudeAboveTerrain(double d); 00186 00189 virtual void setAltitudeAboveSeaLevel(double d); 00190 00192 template <typename T> bool hasVisualizer(makVrv::DtVisualizerSet* s) const 00193 { 00194 std::vector<T> visualizers; 00195 s->findVisualizersByDynamicCast(visualizers); 00196 00197 return (visualizers.size() != 0); 00198 } 00199 00201 virtual void setIconScale(float); 00202 template <typename T> void setIconScale(makVrv::DtVisualizerSet* s, float scale) 00203 { 00204 std::vector<T> visualizers; 00205 s->findVisualizersByDynamicCast(visualizers); 00206 typename std::vector<T>::iterator i = visualizers.begin(); 00207 typename std::vector<T>::iterator e = visualizers.end(); 00208 for(;i != e; ++i) 00209 { 00210 if (*i) 00211 { 00212 (*i)->setIconScale(scale); 00213 } 00214 } 00215 } 00216 00218 virtual void setEntityExtents(const DtVector& volume, const DtVector& offset); 00219 00221 virtual bool hasBoundingVolumes() const; 00222 00224 virtual void setEntityExtentsVisible(bool, int modelSet = -1); 00225 template <typename T> void setEntityExtentsVisible(makVrv::DtVisualizerSet* s, bool b, int modelSet = -1) 00226 { 00227 std::vector<T> visualizers; 00228 s->findVisualizersByDynamicCast(visualizers); 00229 typename std::vector<T>::iterator i = visualizers.begin(); 00230 typename std::vector<T>::iterator e = visualizers.end(); 00231 for(;i != e; ++i) 00232 { 00233 if (*i) 00234 { 00235 if ((modelSet == -1) || (modelSet == ((MyStateVisualizer*)(*i))->modelSet())) 00236 { 00237 (*i)->setVisible(b); 00238 } 00239 } 00240 } 00241 } 00242 00243 template <typename T> void setScale(makVrv::DtVisualizerSet* s, float scale) 00244 { 00245 std::vector<T> visualizers; 00246 s->findVisualizersByDynamicCast(visualizers); 00247 typename std::vector<T>::iterator i = visualizers.begin(); 00248 typename std::vector<T>::iterator e = visualizers.end(); 00249 for(;i != e; ++i) 00250 { 00251 if (*i) 00252 { 00253 (*i)->setScale(scale); 00254 } 00255 } 00256 } 00257 00258 template <typename T> void setForceColor(makVrv::DtVisualizerSet* s, makVrv::DtForceManager::RGBAColor color) 00259 { 00260 std::vector<T> visualizers; 00261 s->findVisualizersByDynamicCast(visualizers); 00262 typename std::vector<T>::iterator i = visualizers.begin(); 00263 typename std::vector<T>::iterator e = visualizers.end(); 00264 for(;i != e; ++i) 00265 { 00266 if (*i) 00267 { 00268 (*i)->setForceColor(color.R, color.G, color.B, color.A); 00269 } 00270 } 00271 } 00272 00273 template <typename T> void setColor(makVrv::DtVisualizerSet* s, makVrv::DtForceManager::RGBAColor color) 00274 { 00275 std::vector<T> visualizers; 00276 s->findVisualizersByDynamicCast(visualizers); 00277 typename std::vector<T>::iterator i = visualizers.begin(); 00278 typename std::vector<T>::iterator e = visualizers.end(); 00279 for(;i != e; ++i) 00280 { 00281 if (*i) 00282 { 00283 (*i)->setColor(color.R, color.G, color.B, color.A); 00284 } 00285 } 00286 } 00287 00289 virtual void setDisplayName( const std::string& displayName ); 00290 00291 virtual void setSymbolDecorationsVisible(bool); 00292 00293 virtual bool isAggregate() const 00294 { 00295 return myIsAggregate; 00296 } 00297 00299 protected: 00301 DtEntityType myEntityType; 00302 makVrv::DtUnicode myElementDefinition; 00303 00304 makVrv::DtBaseConnection* myConnection; 00305 00308 DtExtAggregateStateListener myListener; 00309 ModelSetMap myModelSetMap; 00310 00311 std::string myOverlay; 00312 bool myIsAggregate; 00313 }; 00314 } 00315