![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /***************************************************************************** 00002 * Copyright (c) 2011 MAK Technologies, Inc. 00003 * All rights reserved. 00004 *****************************************************************************/ 00005 00009 00010 #pragma once 00011 00012 #include <vrfGuiCore/vrfGuiCore.h> 00013 #include <vrvCore/DtStateVisualizer.h> 00014 #include <vrvUtil/DtUnicode.h> 00015 #include <vrfGuiCore/DtAttachableUpdaterWithLevelOrientationAgent.hpp> 00016 #include <vrvUtil/DtUnitConverterCollection.h> 00017 00018 namespace makVrv 00019 { 00020 class DtOverlayEllipseArcModelAgent; 00021 class DtWidgetLabelAgent; 00022 class DtProjectedWidgetModelAgent; 00023 class DtVisualizerDefinition; 00024 class DtAttachableUpdaterAgent; 00025 class DtOverlaySegmentedLineModelAgent; 00026 class DtLineModelUpdaterAgent; 00027 } 00028 00029 namespace makVrf 00030 { 00031 class DtEntityStateListenerExtensions; 00032 class DtAttachableUpdaterWithLevelOrientationAgent; 00033 00036 class DT_DLL_VRFGUICORE DtRangeRingVisualizer : public makVrv::DtStateVisualizer 00037 { 00038 protected: 00039 struct RingStruct 00040 { 00041 //This struct has separate instances of scene objects and updater agents for 00045 makVrv::DtOverlayEllipseArcModelAgent* myRangeRing; 00046 makVrv::DtSceneObjectAgent* myRingSceneObjectAgent; 00047 makVrv::DtSceneObjectAgent* myLineSceneObjectAgent; 00048 DtAttachableUpdaterWithLevelOrientationAgent* myRingUpdaterAgent; 00049 DtAttachableUpdaterWithLevelOrientationAgent* myLineUpdaterAgent; 00050 makVrv::DtOverlaySegmentedLineModelAgent* myVerticalLine; 00051 00052 //Label components 00053 makVrv::DtSceneObjectAgent* myLabelSceneObjectAgent; 00054 DtAttachableUpdaterWithLevelOrientationAgent* myLabelUpdaterAgent; 00055 makVrv::DtProjectedWidgetModelAgent* myLabelProjectedWidgetModelAgent; 00056 makVrv::DtWidgetLabelAgent* myLabel; 00057 }; 00058 00059 public: 00060 00062 DtRangeRingVisualizer( makVrv::DtBaseConnection& connection, 00063 makVrv::DtStateListener& listener, int modelSet ); 00064 00066 virtual ~DtRangeRingVisualizer(); 00067 00068 //connect method called in the creator class 00069 virtual void connect(); 00070 00071 //connect method called in the destructor 00072 virtual void disconnect(); 00073 00074 //initialize method called in the creator class 00075 virtual void initialize_settings(); 00076 00078 virtual void setVisualizerDefinition( const makVrv::DtVisualizerDefinition& visDef ); 00079 00080 virtual void setModelDefinitionForAgents(); 00081 00083 virtual const makVrv::DtStateVisualizer::TypeInfo& typeInfo() const; 00084 00086 static const makVrv::DtStateVisualizer::TypeInfo& theTypeInfo(); 00087 00089 static const makVrv::DtVisualizerSchema& theDtRangeRingSchema(); 00090 00091 00092 00093 protected: 00094 virtual void createModelAgents(); 00095 virtual void destroyModelAgents(); 00096 00097 //Creates a new set of ring visualizers, populates a struct and adds it to myRangeRings 00098 virtual void createRing(); 00099 virtual void destroyOuterRing(); 00100 virtual void tryToDraw(); 00101 00102 virtual void updateRangeRingsCount(); 00103 //override of parent method - destroys all subordinate visualizers if turned off 00104 virtual bool setVisible(bool visible, int context); 00106 virtual void setRangeRingsScale(float); 00108 virtual void setRangeRingsFill(bool); 00109 virtual void setRangeRingsGeometry(); 00110 virtual void setRangeRingsColors(); 00111 virtual void setRangeRingsLabels(); 00112 virtual void slot_entityRangeRingsEnabled(const std::string& markingText, int setting); 00113 virtual void slot_displayUnitChanged(makVrv::DtUnitConverterCollection::DisplayUnitType, int, int); 00114 00115 protected: 00116 std::vector<RingStruct> myRangeRings; 00117 DtEntityStateListenerExtensions* myExtensions; 00118 std::string myFontFile; 00119 float myFontSizeUnscaled; 00120 float myScale; 00121 bool myFill; 00122 bool myEntityRangeRingsEnabled; 00123 }; 00124 //The creator class is normally templated in visualizers, but I want to split out the 00126 00127 class DtRangeRingVisualizerCreator: public makVrv::DtStateVisualizerCreator 00128 { 00129 public: 00130 00132 DtRangeRingVisualizerCreator(); 00133 00135 virtual ~DtRangeRingVisualizerCreator(); 00136 00137 virtual DtRangeRingVisualizerCreator* clone() const; 00138 00140 virtual makVrv::DtStateVisualizer* create(makVrv::DtBaseConnection& simulation, makVrv::DtStateListener& listener, int modelSet) const; 00141 00143 virtual const makVrv::DtStateVisualizer::TypeInfo& visualizerTypeInfo() const; 00144 00145 virtual const std::string& tag(); 00146 }; 00147 00148 }