![]() |
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 <vrvUtil/DtBaseSettingsManager.h> 00015 00016 #include <vrvCore/DtSettingsBackup.h> 00017 #include <vrvCore/DtUniqueID.h> 00018 #include <vrvCore/DtElementEntry.h> 00019 #include <makArchives/DtIntervisibilitySettingsRecord.h> 00020 00021 #include <boost/signals.hpp> 00022 #include <boost/unordered_map.hpp> 00023 00024 class DtVector; 00025 00026 namespace makVrv 00027 { 00028 00029 class DtDe; 00030 class DtIntervisibilityElement; 00031 class DtIntervisibilityEventProcessor; 00032 00035 class DT_DLL_VRVCORE DtIntervisibilitySettingsManager 00036 : public DtBaseSettingsManager<makArchives::DtIntervisibilitySettingsRecord> 00037 { 00038 public: 00039 00041 static DtIntervisibilitySettingsManager& instance( DtDe& de ); 00042 00044 virtual ~DtIntervisibilitySettingsManager(); 00045 00048 00050 void setIntervisibilityEnabled( bool enabled ); 00052 bool intervisibilityEnabled() const; 00053 00055 void setLeftClickMakesObjectsPermanent( bool enabled ); 00057 bool leftClickMakesObjectsPermanent() const; 00058 00060 void setOriginIntervisibilityElevation( double height ); 00062 double originIntervisibilityElevation() const; 00063 00065 void setEndPointIntervisibilityElevation( double height ); 00067 double endPointIntervisibilityElevation() const; 00068 00070 void setFanModeSamplingRate( double radAngle ); 00072 double fanModeSamplingRate() const; 00073 00076 void setEntityFanUpdateRate( double interval ); 00079 double entityFanUpdateRate() const; 00080 00082 void setHatLinesEnabled( bool hatEnabled ); 00084 bool hatLinesEnabled() const; 00085 00087 void setHatLinesOnSelectionOnly( bool selOnly ); 00089 bool hatLinesOnSelectionOnly() const; 00090 00092 void setVisibleColor( float r, float g, float b, float a ); 00094 void visibleColor( float& r, float& g, float& b, float& a ) const; 00095 00097 void setBlockedColor( float r, float g, float b, float a ); 00099 void blockedColor( float& r, float& g, float& b, float& a ) const; 00100 00102 void setCircleColor( float r, float g, float b, float a ); 00104 void circleColor( float& r, float& g, float& b, float& a ) const; 00105 00107 void setRangeInfoLabelsEnabled( bool enabled ); 00109 bool rangeInfoLabelsEnabled() const; 00110 00112 void setRangeInfoLabelBackgroundColor( float r, float g, float b ); 00114 void rangeInfoLabelBackgroundColor( float& r, float& g, float& b ); 00115 00117 void setRangeInfoLabelBackgroundOpacity( float opacity ); 00119 float rangeInfoLabelBackgroundOpacity() const; 00120 00122 void setRangeInfoAltChangeFieldEnabled( bool enabled ); 00124 bool rangeInfoAltChangeFieldEnabled() const; 00125 00127 void setRangeInfoLocationFieldEnabled( bool enabled ); 00129 bool rangeInfoLocationFieldEnabled() const; 00130 00132 void setRangeInfoHeadingFieldEnabled( bool enabled ); 00134 bool rangeInfoHeadingFieldEnabled() const; 00135 00137 void setRangeInfoRangeFieldEnabled( bool enabled ); 00139 bool rangeInfoRangeFieldEnabled() const; 00140 00142 00145 00146 boost::signal<void (bool)> signal_intervisibilityEnabledSet; 00147 boost::signal<void (bool)> signal_leftClickMakesObjectsPermanentSet; 00148 boost::signal<void (double)> signal_originIntervisibilityElevationSet; 00149 boost::signal<void (double)> signal_endPointIntervisibilityElevationSet; 00150 boost::signal<void (double)> signal_fanModeSamplingRateSet; 00151 boost::signal<void (double)> signal_entityFanUpdateRateSet; 00152 boost::signal<void (bool)> signal_hatLinesEnabledSet; 00153 boost::signal<void (bool)> signal_hatLinesOnSelectionOnlySet; 00154 boost::signal<void (float r, float g, float b, float a)> signal_visibleColorSet; 00155 boost::signal<void (float r, float g, float b, float a)> signal_blockedColorSet; 00156 boost::signal<void (float r, float g, float b, float a)> signal_circleColorSet; 00157 boost::signal<void (bool)> signal_rangeInfoLabelsEnabledSet; 00158 boost::signal<void (float r, float g, float b, float a)> signal_rangeInfoBackgroundColorSet; 00159 boost::signal<void (bool)> signal_rangeInfoAltChangeFieldEnabledChanged; 00160 boost::signal<void (bool)> signal_rangeInfoLocationFieldEnabledChanged; 00161 boost::signal<void (bool)> signal_rangeInfoHeadingFieldEnabledChanged; 00162 boost::signal<void (bool)> signal_rangeInfoRangeFieldEnabledChanged; 00163 00165 00168 00170 virtual void setFromRecord( const makArchives::DtIntervisibilitySettingsRecord& rec ); 00171 00173 virtual void getRecord( makArchives::DtIntervisibilitySettingsRecord& rec ) const; 00174 00176 00179 00181 virtual bool isAttachableObjectType( DtElementEntry::ObjectType t ) const; 00182 00184 virtual bool isAttachableObjectType( DtUniqueID elementId ) const; 00185 00187 00188 protected: 00189 00191 template <typename ManagerClass> 00192 friend ManagerClass& defaultManagerInstanceFunction( DtDe&, bool ); 00193 00195 template <typename ManagerClass> 00196 friend void defaultManagerRegisterInstanceFunction( DtDe&, ManagerClass* ); 00197 00199 DtIntervisibilitySettingsManager( DtDe& de ); 00200 00201 protected: 00202 00203 bool myIntervisibilityEnabled; 00204 bool myLeftClickMakesObjectsPermanent; 00205 00206 bool myHatLinesEnabled; 00207 bool myHatLinesOnSelectionOnly; 00208 00209 double myOriginIntervisibilityElevation; 00210 double myEndPointIntervisibilityElevation; 00211 double myFanModeSamplingRate; 00212 double myEntityFanUpdateRate; 00213 00214 float myVisibleColor[4]; 00215 float myBlockedColor[4]; 00216 float myCircleColor[4]; 00217 00218 bool myRangeInfoLabelsEnabled; 00219 float myRangeInfoBackgroundColor[4]; 00220 bool myRangeInfoAltChangeFieldEnabled; 00221 bool myRangeInfoLocationFieldEnabled; 00222 bool myRangeInfoHeadingFieldEnabled; 00223 bool myRangeInfoRangeFieldEnabled; 00224 00225 }; 00226 00227 } 00228