![]() |
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 00018 #include <vrvCore/DtTacticalGraphicStateListener.h> 00019 #include <vrvCore/DtBaseConnection.h> 00020 #include <vrvCore/DtModelSetRealizationManager.h> 00021 #include <vrvCore/DtSharedModelSetSettings.h> 00022 #include <vrvCore/DtVisualizerSet.h> 00023 #include <vrvCore/DtEnvironmentalVisualizerSet.h> 00024 #include <vrvCore/DtEnvironmentalIndicatorVisualizer.h> 00025 #include <vrvCore/DtEnvironmentalVertexVisualizer.h> 00026 #include <vrvVrl/DtForceManager.h> 00027 00029 #include <vlpi/entityType.h> 00030 #include <matrix/geodCoord.h> 00031 00033 #include <string> 00034 #include <map> 00035 #include <vector> 00036 00037 #include <boost/foreach.hpp> 00038 00039 class DtEntityType; 00040 00041 namespace makVrv 00042 { 00043 class DtEnvironmentalVisualizerSet; 00044 class DtDe; 00045 class DtVisualDefinitionSet; 00046 } 00047 00048 namespace makVrf 00049 { 00050 class DT_DLL_VRFGUICORE DtEnvironmentalFacadeCollection : 00051 public DtVrfObjectFacadeInterface 00052 { 00053 public: 00054 DtEnvironmentalFacadeCollection(makVrv::DtDe&, int modelSet = -1); 00055 virtual ~DtEnvironmentalFacadeCollection(); 00056 00057 public: 00059 00061 virtual void setVisible( bool visible ); 00062 00063 virtual void setHidden(bool b); 00064 00065 makVrv::DtUniqueID uniqueID() const; 00066 00067 virtual void setUniqueID(makVrv::DtUniqueID id); 00068 00069 virtual void setIndicatorVisible(bool); 00070 00071 virtual void setSceneObjectId(makVrv::DtElementID id); 00072 00073 virtual void setDisplayName(const std::string& s); 00074 virtual std::string displayName() const; 00075 00076 virtual void setOverlayName(const std::string& s); 00077 virtual std::string overlayName() const; 00078 00080 virtual void setHatLineVisible( bool visible ); 00081 00082 virtual DtVector origin() const; 00083 00085 virtual void setPickable(bool b); 00086 00088 virtual void setSelected(bool b); 00089 00091 virtual void setWidgetEventsEnabled(bool b); 00092 00094 template <typename T> void setWidgetEventsEnabled(makVrv::DtEnvironmentalVisualizerSet* v, bool b) 00095 { 00096 std::vector<T> visualizers; 00097 v->findVisualizers(visualizers); 00098 typename std::vector<T>::iterator iter = visualizers.begin(); 00099 00100 while (iter != visualizers.end()) 00101 { 00102 (*iter)->setWidgetEventsEnabled(b); 00103 ++iter; 00104 } 00105 } 00106 00108 virtual void realizeFacades(); 00109 00111 virtual void unrealizeFacades(); 00112 00113 virtual void setProjected(bool); 00114 virtual bool projected() const; 00115 00116 virtual void updateGeometry(); 00117 00118 virtual void visualize(const makVrv::DtUnicode& type, 00119 const makVrv::DtSharedModelSetSettings::ModelSetVisualizedMap& sets); 00120 00122 virtual void setIndicatorModelDefinitions( 00123 const std::string& normalTheme, 00124 const std::string& activeTheme, 00125 const std::string& selectedTheme, 00126 const std::string& multiSelectedTheme); 00127 00129 virtual void setLockUpdates(bool); 00130 bool updatesLocked() const; 00131 00132 virtual void setAlwaysRecalculateGeometry(bool); 00133 bool alwaysRecalculateGeometry() const; 00134 00135 virtual void setLocationOffsetFromFirst(const DtGeodeticCoord& geod, int i); 00136 const DtGeodeticCoord& locationOffsetFromFirst(int i); 00137 00138 virtual void setShapeVertexVisible(bool); 00139 virtual void setSymbolDecorationsVisible(bool); 00140 virtual void setColor(int rgba); 00141 virtual void setColor(float r, float g, float b, float a); 00142 00143 virtual void setLineWidth(float); 00144 00145 virtual double lineWidth() const; 00146 00147 virtual void setForce(int); 00148 00149 template <typename T> void setForceColor(makVrv::DtVisualizerSet* s, makVrv::DtForceManager::RGBAColor color) 00150 { 00151 std::vector<T> visualizers; 00152 s->findVisualizersByDynamicCast(visualizers); 00153 typename std::vector<T>::iterator i = visualizers.begin(); 00154 typename std::vector<T>::iterator e = visualizers.end(); 00155 for(;i != e; ++i) 00156 { 00157 if (*i) 00158 { 00159 (*i)->setForceColor(color.R, color.G, color.B, color.A); 00160 } 00161 } 00162 } 00163 00164 virtual void setVertexSelected(makVrv::DtUniqueID id, bool sel); 00165 00166 makVrv::DtBaseConnection& baseConnection() const; 00167 00170 virtual void setElementDefinition(const makVrv::DtUnicode& definition); 00171 virtual void setElementDefinition(const DtEntityType&); 00172 DtEntityType environmentalType() const; 00173 00174 makVrv::DtUniqueID uniqueIDForModelSet(int i) const; 00175 int positionOfVertex(makVrv::DtUniqueID) const; 00176 DtVector position(int index) const; 00177 00179 virtual double altitudeForAltitudeType(int) const; 00180 00181 virtual void setOrigin(const DtVector&); 00182 virtual void setOrigin(const DtGeodeticCoord&); 00183 00184 virtual void setPoint(const DtVector&, int); 00185 virtual int addPoint(const DtVector&, int index = -1); 00186 virtual void setPoints(const std::vector<DtVector>&); 00187 const std::vector<DtVector>& points() const; 00188 virtual void removePoint(int); 00189 DtGeodeticCoord geodeticPosition(int) const; 00190 00191 virtual DtVector reviseLocation(int index, const DtVector& v); 00192 00193 void setAltitudeAboveTerrain(int, double); 00194 double altitudeAboveTerrain(int = -1) const; 00195 00196 void setAltitudeAboveSeaLevel(int, double); 00197 double altitudeAboveSeaLevel(int = -1) const; 00198 00199 int numVertices() const; 00200 00201 const makVrv::DtTacticalGraphicStateListener& listener() const 00202 { 00203 return myListener; 00204 } 00205 00208 virtual void selectPoint(int); 00209 virtual void clearSelectedPoint(); 00210 00211 int selectedPoint() const; 00212 00213 virtual void setIconScale(float); 00214 00216 virtual void setOrientation(const DtTaitBryan&); 00217 00219 virtual void setAltitudeAboveSeaLevel(double); 00220 virtual void setAltitudeAboveTerrain(double); 00221 00222 virtual DtVector localLocation(const DtGeodeticCoord& geodLocation) const; 00223 virtual DtVector localLocation() const; 00224 00226 virtual bool isCircle() const; 00227 00230 virtual bool isEllipse() const; 00231 00233 makVrv::DtTacticalGraphicStateListener& listener() 00234 { 00235 return myListener; 00236 } 00237 00238 protected: 00240 DtEntityType myEntityType; 00241 makVrv::DtUnicode myElementDefinition; 00242 00243 float myDefaultColor[4]; 00244 00245 makVrv::DtBaseConnection* myConnection; 00246 00249 makVrv::DtTacticalGraphicStateListener myListener; 00250 std::vector<double> myAltitudeAboveTerrain; 00251 std::vector<double> myAltitudeAboveSeaLevel; 00252 00253 typedef std::map<int, makVrv::DtEnvironmentalVisualizerSet*> ModelSetMap; 00254 ModelSetMap myModelSetMap; 00255 double myDefaultWidth; 00256 int mySelectedPoint; 00257 00258 std::vector<DtGeodeticCoord> myLocationOffsetFromFirst; 00259 bool myAlwaysRecalculateGeometry; 00260 00262 typedef std::vector<makVrv::DtUniqueID> UniqueIDs; 00263 std::map<int, UniqueIDs> myIds; 00264 00268 char myIsCircular; 00269 }; 00270 }