VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCloudCoverManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 
14 #include <vrvCore/DtCloudLayer.h>
15 
16 #include <vrvUtil/signalslib.h>
18 
19 #include <map>
20 #include <unordered_map>
21 
22 namespace makArchives
23 {
24  class DtCloudLayerRecord;
25 }
26 
27 namespace makVrv
28 {
29  class DtDe;
30 
55  {
56  public:
57 
60  typedef std::vector<DtCloudLayerId> CloudLayerIdList;
61 
64  {
65  std::string cloudCoverName; // The name of the cloud cover
66  CloudLayerIdList cloudLayerIdList; // The cloud layer ids of all
67  // layers in the cloud cover
68  };
69 
71  typedef std::map<std::string, CloudCoverData> CloudCoverCloudLayerIdMap;
72 
73  public:
75  static DtCloudCoverManager& instance(DtDe& de);
76 
78  virtual ~DtCloudCoverManager();
79 
81 
84  const CloudCoverCloudLayerIdMap& cloudCoverMap() const;
85 
87  bool isValidCloudCover(const std::string& cloudCover) const;
88 
91  const CloudLayerIdList& cloudLayerList(const std::string& cloudCover) const;
92 
94  bool isValidCloudLayer(DtCloudLayerId layerId) const;
95 
99  virtual std::string cloudCoverForLayer(DtCloudLayerId layerId) const;
100 
103  virtual const DtCloudLayer& cloudLayer(DtCloudLayerId layerId) const;
104 
107  virtual DtCloudLayer& cloudLayer(DtCloudLayerId layerId);
108 
112  virtual bool getCloudLayerIdFromCloudCoverAndBaseMSL(
113  const std::string& cloudCover, float baseMSLAltitude, DtCloudLayerId& result) const;
114 
117  virtual bool cloudLayerEnabled(DtCloudLayerId layerId) const;
119 
121 
124  virtual void addCloudCover(const std::string& cloudCoverName);
125 
127  virtual void removeCloudCover(const std::string& cloudCoverName);
128 
130  virtual void renameCloudCover(const std::string& oldName, const std::string& newName);
131 
135  virtual DtCloudLayerId addCloudLayer(const std::string& cloudCoverName,
136  const DtCloudLayer& layer );
137 
141  virtual DtCloudLayerId addCloudLayerByRecord(const std::string& cloudCoverName,
142  const makArchives::DtCloudLayerRecord& layerRecord);
143 
146  virtual bool deleteCloudLayer(DtCloudLayerId layerToDelete);
147 
156  virtual bool changeCloudLayer(DtCloudLayerId layerId, const DtCloudLayer& newLayer);
157 
158  virtual bool updateCloudLayerUsingRecord(DtCloudLayerId layerId, const makArchives::DtCloudLayerRecord& record);
159 
162  virtual bool setCloudLayerPositionAndOrientation(DtCloudLayerId layerId, const DtVector& position,
163  float orientation = 0.);
164 
169  virtual bool setCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
171 
173 
176  boost::signalslib::signal<void(const std::string&)> signal_cloudCoverAdded;
177 
179  boost::signalslib::signal<void(const std::string&)> signal_cloudCoverToBeRemoved;
180 
182  boost::signalslib::signal<void(const std::string&)> signal_cloudCoverRemoved;
183 
186  boost::signalslib::signal<void(DtCloudLayerId, bool)> signal_cloudLayerEnabledChanged;
187 
189  boost::signalslib::signal<void(DtCloudLayerId, const DtVector&, float)> signal_cloudLayerPositionAndOrientationChanged;
190 
194  boost::signalslib::signal<void(DtCloudLayerId layerId, const DtCloudLayer& changedLayer)>
196 
200  boost::signalslib::signal<void(DtCloudLayerId layerId, const DtCloudLayer& oldLayer)>
202 
204  boost::signalslib::signal<void(DtCloudLayerId newLayer, const std::string& coverName)> signal_cloudLayerAdded;
205 
207  boost::signalslib::signal<void(DtCloudLayerId oldLayer)> signal_cloudLayerToBeRemoved;
208 
210  boost::signalslib::signal<void(DtCloudLayerId oldLayer)> signal_cloudLayerRemoved;
211 
213 
214  protected:
215 
218 
220  virtual void initialize();
221 
223  DtCloudLayerId allocateCloudLayerId();
224 
226  virtual void createExternalCloudCover();
227 
228  protected:
229 
231  struct LayerIdData
232  {
233  std::string cloudCover;
235  };
236 
238  typedef std::unordered_map<DtCloudLayerId, LayerIdData> CloudLayerIdMap;
241 
244  };
245 }
246 
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtDe & myDe
Definition: DtCloudCoverManager.h:243
DtCloudLayer cloudLayer
Definition: DtCloudCoverManager.h:234
boost::signalslib::signal< void(const std::string &)> signal_cloudCoverToBeRemoved
signal_cloudCoverToBeRemoved is raised just before a cloud cover is removed
Definition: DtCloudCoverManager.h:179
This is the data we&#39;ll keep in a map for each layer id.
Definition: DtCloudCoverManager.h:231
std::vector< DtCloudLayerId > CloudLayerIdList
A simple list of cloud layer ids. Each cloud layer added through the API is assigned a unique cloud l...
Definition: DtCloudCoverManager.h:60
boost::signalslib::signal< void(DtCloudLayerId newLayer, const std::string &coverName)> signal_cloudLayerAdded
signal_cloudLayerAdded is raised when a cloud layer is added to a cloud cover
Definition: DtCloudCoverManager.h:204
boost::signalslib::signal< void(DtCloudLayerId oldLayer)> signal_cloudLayerToBeRemoved
signal_cloudLayerToBeRemoved is raised when a cloud layer is about to be removed from a cloud cover ...
Definition: DtCloudCoverManager.h:207
CloudLayerIdMap myCloudLayerIdMap
Definition: DtCloudCoverManager.h:239
boost::signalslib::signal< void(DtCloudLayerId, bool)> signal_cloudLayerEnabledChanged
signal_cloudLayerEnabledChanged is raised when the enabled state of a cloud layer within its cloud co...
Definition: DtCloudCoverManager.h:186
std::string cloudCoverName
Definition: DtCloudCoverManager.h:65
Contains makVrv::DtVirtualBaseClass class.
Record of a single cloud layer&#39;s settings.
Definition: DtCloudLayerRecord.h:17
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Representation of a single cloud layer.
Definition: DtCloudLayer.h:34
CloudCoverCloudLayerIdMap myCloudCoverCloudLayerIdMap
Definition: DtCloudCoverManager.h:240
boost::signalslib::signal< void(DtCloudLayerId layerId, const DtCloudLayer &changedLayer)> signal_cloudLayerToBeModified
signal_cloudLayerToBeModified is raised when a cloud layer is about to be changed. The new layer state is provided, and the original can be looked up if needed from the layer id
Definition: DtCloudCoverManager.h:195
boost::signalslib::signal< void(DtCloudLayerId, const DtVector &, float)> signal_cloudLayerPositionAndOrientationChanged
signal_cloudLayerPositionChanged is raised when a cloud layer&#39;s position is modified ...
Definition: DtCloudCoverManager.h:189
Contains vrvCore::DtCloudLayerRecord declaration.
boost::signalslib::signal< void(DtCloudLayerId oldLayer)> signal_cloudLayerRemoved
signal_cloudLayerRemoved is raise when a cloud layer is removed from a cloud cover ...
Definition: DtCloudCoverManager.h:210
std::string cloudCover
Definition: DtCloudCoverManager.h:233
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
This is the data we track for each cloud cover.
Definition: DtCloudCoverManager.h:63
boost::signalslib::signal< void(DtCloudLayerId layerId, const DtCloudLayer &oldLayer)> signal_cloudLayerModified
signal_cloudLayerModified is raised when a cloud layer has changed. The old layer state is provided...
Definition: DtCloudCoverManager.h:201
std::map< std::string, CloudCoverData > CloudCoverCloudLayerIdMap
This map is updated as cloud layers are added or removed.
Definition: DtCloudCoverManager.h:71
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
Defines the manager class that manages the different cloud cover configurations being used by VR-Vant...
Definition: DtCloudCoverManager.h:54
std::unordered_map< DtCloudLayerId, LayerIdData > CloudLayerIdMap
This map is created when a data file is read and updated if cloud layers are added or removed...
Definition: DtCloudCoverManager.h:238
CloudLayerIdList cloudLayerIdList
Definition: DtCloudCoverManager.h:66
DtCloudLayerId myFreeCloudLayerId
Definition: DtCloudCoverManager.h:242
boost::signalslib::signal< void(const std::string &)> signal_cloudCoverAdded
BOOST SIGNALS used to let clients know what has transpired in this manager.
Definition: DtCloudCoverManager.h:176
boost::signalslib::signal< void(const std::string &)> signal_cloudCoverRemoved
signal_cloudCoverRemoved is raised immediately after a cloud cover is removed
Definition: DtCloudCoverManager.h:182
Contains DLL export macros.

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)