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

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)