VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtEnvironmentalVertexVisualizer.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)