![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /***************************************************************************** 00002 * Copyright (c) 2012 MAK Technologies, Inc. 00003 * All rights reserved. 00004 *****************************************************************************/ 00005 00009 00010 #pragma once 00011 00012 #include <vrvCore/vrvCore.h> 00013 00014 #include <vrvCore/DtUniqueID.h> 00015 #include <vrvCore/DtSquawkIndicator.h> 00016 #include <vrvCore/DtCommunicationLine.h> 00017 #include <vrvCore/DtRadioCommunicationsSettingsManager.h> 00018 00019 #include <vrvUtil/DtSignalConnectionManager.h> 00020 00021 #include <boost/unordered_map.hpp> 00022 00023 #include <map> 00024 00025 namespace makVrv 00026 { 00027 00031 class DT_DLL_VRVCORE DtRadioCommsVisualizationManager 00032 { 00033 public: 00034 00036 static DtRadioCommsVisualizationManager& instance( DtDe& de ); 00037 00040 00044 virtual void findOrCreateAndSelectCommLine( int modelSet, 00045 int visualType, DtCommunicationLine::AttachablePoint source, 00046 DtCommunicationLine::AttachablePoint dest ); 00047 00050 virtual void findOrCreateAndSelectSquawkIndicator( int modelSet, 00051 int visualType, DtSquawkIndicator::AttachablePoint transmitLoc ); 00052 00054 void setAnimationRate( float rate ); 00055 00057 void setLifetime( float lifetime ); 00058 00060 virtual void setColor( float red, float green, 00061 float blue, float alpha = 1.0 ); 00062 00064 virtual void setSenderOffset( const DtVector& offset ); 00065 00068 virtual void setReceiverOffset( const DtVector& offset ); 00069 00071 00074 00076 virtual void deleteCommLines(); 00077 00079 virtual void deleteSquawkIndicators(); 00080 00082 virtual void deleteCommLinesByModelSet( int modelSet ); 00083 00085 virtual void deleteSquawkIndicatorsByModelSet( int modelSet ); 00086 00088 00089 protected: 00090 00092 DtRadioCommsVisualizationManager( DtDe& de ); 00093 00095 virtual ~DtRadioCommsVisualizationManager(); 00096 00101 virtual void useCurrentSettings(); 00102 00105 virtual void slot_displaySettingsChanged(); 00106 00109 virtual void slot_squawkIndicatorAnimationRateChanged( float rate ); 00110 00113 virtual void slot_commLineAnimationRateChanged( float rate ); 00114 00117 virtual void slot_squawkIndicatorLifetimeChanged( float lifetime ); 00118 00121 virtual void slot_commLineLifetimeChanged( float lifetime ); 00122 00125 virtual void slot_commLineRenderModeChanged( 00126 makArchives::DtRadioCommunicationsSettingsRecord::CommLineMode renderMode ); 00127 00130 virtual void slot_greatCircleExaggerationAmountChanged( float amount ); 00131 00134 virtual void slot_preTick(); 00135 00136 protected: 00137 00141 struct CommLineInfo { 00142 00143 CommLineInfo( DtCommunicationLine* line ) 00144 : myCommunicationLine( line ) 00145 , myCreationTime( 0 ) 00146 {} 00147 00148 DtCommunicationLine* myCommunicationLine; 00149 00150 double myCreationTime; 00151 00152 }; 00153 00157 struct SquawkIndicatorInfo { 00158 00159 SquawkIndicatorInfo( DtSquawkIndicator* indicator ) 00160 : mySquawkIndicator( indicator ) 00161 , myCreationTime( 0 ) 00162 {} 00163 00164 DtSquawkIndicator* mySquawkIndicator; 00165 00166 double myCreationTime; 00167 00168 }; 00169 00171 enum SelectionType { 00172 CommunicationLine, 00173 SquawkIndicator, 00174 None 00175 }; 00176 00177 protected: 00178 00179 DtSignalConnectionManager myConnections; 00180 00182 typedef boost::unordered_map<DtUniqueID,SquawkIndicatorInfo> SquawkIndicatorsById; 00183 00185 typedef std::map<DtSquawkIndicator::AttachablePoint,SquawkIndicatorInfo> SquawkIndicatorsByLocation; 00186 00188 typedef boost::unordered_map<int,SquawkIndicatorsByLocation> ModelSetSquawkIndicatorsMap; 00189 00190 ModelSetSquawkIndicatorsMap myModelSetSquawkIndicatorsMap; 00191 SquawkIndicatorsById mySquawkIndicatorsMap; 00192 00194 typedef boost::unordered_map<DtUniqueID,CommLineInfo> CommLinesById; 00195 00197 typedef std::pair<DtCommunicationLine::AttachablePoint,DtCommunicationLine::AttachablePoint> CommLineEndpointPair; 00198 00200 typedef std::map<CommLineEndpointPair,CommLineInfo> CommLinesByEndpoints; 00201 00203 typedef boost::unordered_map<int,CommLinesByEndpoints> ModelSetCommLinesMap; 00204 00205 ModelSetCommLinesMap myModelSetCommLinesMap; 00206 CommLinesById myCommLinesMap; 00207 00209 typedef boost::unordered_map<DtUniqueID,float> LifetimesMap; 00210 00211 LifetimesMap myLifetimesMap; 00212 00213 float mySquawkIndicatorAnimationRate; 00214 float myCommLineAnimationRate; 00215 00216 float mySquawkIndicatorLifetime; 00217 float myCommLineLifetime; 00218 00219 bool myCurvedEarthModeFlag; 00220 00221 float myGreatCircleExaggerationAmount; 00222 00223 bool mySquawkIndicatorsEnabledFlag; 00224 bool myCommLinesEnabledFlag; 00225 00226 DtBaseRadioVisualization* mySelection; 00227 SelectionType mySelectionType; 00228 00229 DtDe& myDe; 00230 00231 }; 00232 00233 }