![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtEnvironmentalVertexVisualizer.h,v $ $Revision: 1.43 $ $SceneObject: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvCore/DtSceneObjectVisualizer.h> 00016 #include <vrvCore/DtShowHideContext.h> 00017 #include <vrvCore/DtEnvironmentalStateListener.h> 00018 #include <matrix/vlVector.h> 00019 #include <vector> 00020 00021 namespace makVrv 00022 { 00023 class DtUnicode; 00024 class DtEnvironmentalVisualizerSet; 00025 00034 class DT_DLL_VRVCORE DtEnvironmentalVertexVisualizer : 00035 public DtSceneObjectVisualizer 00036 { 00037 public: 00038 typedef std::vector<DtElementID> ElementIDList; 00039 typedef std::vector<DtVector> PointList; 00040 00041 enum SelectionState 00042 { 00043 NotSelected, 00044 Selected, 00045 MultiSelected 00046 }; 00047 00049 DtEnvironmentalVertexVisualizer( DtBaseConnection& conn, 00050 DtStateListener& listener, int modelSet); 00051 00053 virtual ~DtEnvironmentalVertexVisualizer(); 00054 00057 virtual void setVisualizerDefinition( const DtVisualizerDefinition& visDef ); 00058 00060 virtual void setOrigin(const DtVector& position); 00061 virtual void addControlPoint( const DtVector& position, 00062 const DtUniqueID& elementID ); 00063 virtual void insertControlPoint( int index, const DtVector& position ); 00064 virtual void removeControlPoint( int index ); 00065 virtual void moveControlPoint(int index, const DtVector& position ); 00066 virtual void setControlPoints( 00067 const DtEnvironmentalStateListener::ControlPointsList&, 00068 const std::vector<DtUniqueID>& vertexElementIDs ); 00069 00071 virtual void setControlPoints( 00072 const DtEnvironmentalStateListener::ControlPointsList& ); 00073 00074 virtual void setColor(float r,float g,float b,float a); 00075 00077 virtual void setInfoText(DtUniqueID id, const DtUnicode&); 00078 virtual void setInfoText(int, const DtUnicode&); 00079 00081 virtual void setSelected(DtUniqueID id, bool); 00082 virtual void setSelected(int, bool); 00083 00085 virtual bool selected(DtUniqueID id) const; 00086 virtual bool selected(int index) const; 00087 00089 virtual void setHeightAboveTerrainLineVisible(bool); 00090 virtual void setHeightAboveTerrainLineVisible(DtUniqueID, bool); 00091 virtual void setHeightAboveTerrainLineVisible(int, bool ); 00092 00094 virtual void setShowInfoOnSelect(bool); 00095 virtual void setShowInfoOnSelect(DtUniqueID, bool); 00096 virtual void setShowInfoOnSelect(int, bool); 00097 00099 virtual void setVertexHidden(DtUniqueID, bool); 00100 virtual void setVertexHidden(int, bool); 00101 00103 virtual SelectionState pointSelected(DtUniqueID id) const; 00104 virtual SelectionState pointSelected(int) const; 00105 00107 virtual void setIndicatorsEnabled(bool); 00108 00110 virtual void setWidgetEventsEnabled(bool); 00111 00113 virtual void setEnabled(bool enabled); 00114 00116 virtual void setIndicatorModelDefinitions( 00117 const std::string& normalTheme, 00118 const std::string& activeTheme, 00119 const std::string& selectedTheme, 00120 const std::string& multiSelectedTheme ); 00121 00122 int numVertices() const; 00123 00124 DtUniqueID uniqueIdOf(int iIndex) const; 00125 00126 int indexOf(DtUniqueID sceneID) const; 00127 00128 int indexOfElementID(DtUniqueID elementID ) const; 00129 00131 virtual void setHatLinesEnabled( bool ); 00132 00134 virtual void setHatLinesOnSelectionOnly( bool ); 00135 00136 virtual DtUniqueID uniqueID() const; 00137 virtual void setSelected(bool); 00138 virtual void setPickable(bool); 00139 00140 DtEnvironmentalStateListener& environmentalStateListener() 00141 { 00142 return *myEnvironmentalListener; 00143 } 00144 00145 inline const PointList& controlPoints() const 00146 { 00147 return myControlPoints; 00148 } 00149 00150 inline const ElementIDList& vertexElementIDs() const 00151 { 00152 return myVertexElementIDs; 00153 } 00154 00156 virtual const DtStateVisualizer::TypeInfo& typeInfo() const; 00157 00159 static const DtStateVisualizer::TypeInfo& theTypeInfo(); 00160 00161 protected: 00162 virtual void slot_listenerLocationSet(const DtVector&); 00163 virtual void slot_listenerControlPointLocationSet(int index, const DtVector&); 00164 00165 virtual void setControlPoints(); 00166 virtual void resetSpatial(); 00167 virtual void createModelAgents(); 00168 virtual void destroyModelAgents(); 00169 virtual bool setVertexVisible(bool, DtShowHideContext::ShowHideContext); 00170 virtual void setOriginAndOffset(DtEnvironmentalVisualizerSet*, const DtVector&, const DtVector&); 00171 virtual void setColor(DtEnvironmentalVisualizerSet*, float r, float g, float b, float a); 00172 virtual void setIndicatorsEnabled(DtEnvironmentalVisualizerSet*, bool); 00173 virtual void setInfoText(DtEnvironmentalVisualizerSet*, const DtUnicode&); 00174 virtual void setMultiSelected(DtEnvironmentalVisualizerSet*, bool); 00175 virtual void setHatLineVisible(DtEnvironmentalVisualizerSet*, bool); 00176 virtual void setShowInfoPopupOnSelect(DtEnvironmentalVisualizerSet*, bool); 00177 virtual void setWidgetEventsEnabled(DtEnvironmentalVisualizerSet*, bool); 00178 virtual void setGroundClamp(DtEnvironmentalVisualizerSet*, bool); 00179 virtual void setIndicatorModelDefinitions(DtEnvironmentalVisualizerSet*, 00180 const std::string& normalTheme, 00181 const std::string& activeTheme, 00182 const std::string& selectedTheme, 00183 const std::string& multiSelectedTheme ); 00184 virtual void updateHatLines(); 00185 virtual void updateHatLine( int index ); 00186 virtual void updateHatLine( DtUniqueID id ); 00187 00188 virtual DtEnvironmentalVisualizerSet* createAndInitializePointVisualizer(const DtUniqueID& vertexElementId, int index ); 00189 00190 virtual void slot_mouseDown( DtMouseState& mouseState, 00191 const DtUniqueID& id, const std::string& displayEngineName, 00192 const std::string& windowName, const std::string& channelName, 00193 DtStateVisualizer* v); 00194 00195 virtual bool pointIsDifferent( const DtVector& newPos, const DtVector& lastPos ) const; 00196 00197 virtual void slot_mouseUp( DtMouseState& mouseState, const DtUniqueID& id, 00198 const std::string& displayEngineName, const std::string& windowName, 00199 const std::string& channelName, DtStateVisualizer* v); 00200 00201 virtual void slot_mouseDblClick( DtMouseState& mouseState, 00202 const DtUniqueID& id, const std::string& displayEngineName, 00203 const std::string& windowName, const std::string& channelName, 00204 DtStateVisualizer* v); 00205 00208 virtual DtVector offsetAtPosition(const DtVector& origin) const; 00209 00211 virtual void setGroundClamp(bool); 00212 00213 protected: 00214 typedef std::vector<DtEnvironmentalVisualizerSet*> VertexList; 00215 typedef std::map<DtUniqueID, int> DtIndexMap; 00216 00217 VertexList myVertexList; 00218 std::vector<DtVector> myOffsets; 00219 std::vector<SelectionState> myVertexSelectedList; 00220 DtIndexMap myIndexMap; 00221 DtIndexMap myElementIDIndexMap; 00222 00223 PointList myControlPoints; 00224 ElementIDList myVertexElementIDs; 00225 00226 DtVector myOrigin; 00227 float myColor[4]; 00228 bool myHatLinesEnabled; 00229 bool myHatLinesOnSelectionOnly; 00230 bool myShowInfoOnSelect; 00231 bool myIndicatorsEnabled; 00232 bool myWidgetEventsEnabled; 00233 00234 DtUnicode myVertexVisualizerDefinitionName; 00235 00236 std::string myNormalWidgetTheme; 00237 std::string myActiveWidgetTheme; 00238 std::string mySelectedWidgetTheme; 00239 std::string myMultiSelectedWidgetTheme; 00240 00241 DtVector myPointOffset; 00242 bool myOriginIsSet; 00243 00244 // Same as myListener, but casted for convenience 00245 DtEnvironmentalStateListener* myEnvironmentalListener; 00246 00247 bool myGroundClamp; 00248 }; 00249 00250 typedef DtStateVisualizerCreatorTemplate<DtEnvironmentalVertexVisualizer> 00251 DtEnvironmentalVertexVisualizerCreator; 00252 }