VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
navigationAreasManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
7 
8 #pragma once
9 
10 #include <vrfGuiCore/vrfGuiCore.h>
12 #include <vrfutil/rwNavGenConfig.h>
14 #include <vrfutil/rwUUID.h>
15 #include <vrfutil/rwTemplatedMap.h>
16 #include <vlutil/vlFilename.h>
18 #include <vrvCore/DtStateView.h>
19 #include <vrvCore/DtUniqueID.h>
20 #include <vrvCore/DtEntityState.h>
22 #include <vrvUtil/DtUnicode.h>
23 #include <vlutil/vlPerformanceStats.h>
25 
26 namespace makVrv
27 {
28  class DtDe;
29 }
30 
31 class QProcess;
32 class DtSimMessage;
33 
34 #define DtDebugPortExtendedDataKey "DtDebugPortExtendedDataKey"
35 
36 namespace makVrf
37 {
38  class DtEnvironmentalFacadeCollection;
39 
41  {
42  public:
43  enum Status
44  {
45  Unknown = -1,
49  ScheduledForGeneration
50  };
51 
52  typedef std::map<std::string, DtNavSectorIndices> DtNavSectorIndicesByBackEnd;
53 
55  {
68  };
69 
70  typedef std::map<makVrv::DtUniqueID, NavigationArea> NavigationAreas;
71 
73  {
74  std::map<int, int> debugPorts;
75  std::list<std::string> profiles;
76  std::string status;
77  };
78 
79  typedef std::map<DtUUID, SimObjectNavigationArea> SimObjectNavigationAreas;
80 
81  public:
84 
86  virtual ~DtNavigationAreasManager();
87 
89  static DtNavigationAreasManager& instance(makVrv::DtDe& de);
90 
92  static void registerInstance(makVrv::DtDe&, DtNavigationAreasManager*);
93 
96  virtual bool addNavigationArea(const DtFilename&, makVrv::DtUniqueID* resID = 0);
97 
99  virtual int profilesToGenerate(makVrv::DtUniqueID) const;
100 
102  virtual DtEnvironmentalFacadeCollection* createNavigationArea(const NavigationArea&) const;
103 
105  virtual void selectNavigationAreas(const std::set<makVrv::DtUniqueID>&, bool selectOnMap = true);
106  const std::set<makVrv::DtUniqueID>& selectedNavigationAreas() const;
107 
109  virtual Status status(makVrv::DtUniqueID);
110 
112  virtual const DtNavSectorIndicesByBackEnd& sectorsBeingRegenerated(makVrv::DtUniqueID) const;
113 
115  virtual const DtNavSectorIndicesByBackEnd& sectorsQueuedForRegeneration(makVrv::DtUniqueID) const;
116 
119  virtual void revertNavigationArea(makVrv::DtUniqueID);
120 
122  virtual bool isModified(makVrv::DtUniqueID) const;
123 
128  virtual Status navDataGenerated(const NavigationArea&) const;
129 
131  virtual void generateNavigationArea(makVrv::DtUniqueID);
132 
134  virtual void regenerateAllUngeneratedAreas();
135 
137  virtual void saveConfigurations();
138 
140  virtual makVrv::DtUniqueID generatingNavigationArea() const;
141 
143  virtual void generateAllNavigationAreas();
144 
146  virtual bool generatingAnyNavigationArea();
147 
149  virtual void removeCurrentFromGeneration();
150 
152  virtual void removeAllFromGeneration();
153 
155  virtual void removeNavigationAreaForGeneration(makVrv::DtUniqueID);
156 
158  virtual bool scheduledForGeneration(makVrv::DtUniqueID) const;
159 
161  virtual bool isNavigationArea(makVrv::DtUniqueID) const;
162 
164  virtual makVrv::DtUniqueID navigationAreaForConfigurationFile(const DtFilename&) const;
165 
167  virtual void setShowNavigationAreas(bool);
168  virtual bool showNavigationAreas() const;
169 
171  virtual void setShowProgressOnGenerationStart(bool b);
172  virtual bool showProgressOnGenerationStart() const;
173 
176  virtual void removeNavigationArea(makVrv::DtUniqueID, bool ask = false);
177 
179  virtual void setGenerationCheckDelta(double);
180  double generationCheckDelta() const;
181 
183  virtual std::map<DtString, DtFilename> profilesAndOutputDirectoriesFor(makVrv::DtUniqueID id) const;
184 
185  const NavigationAreas& navigationAreas() const { return myNavigationAreas; };
186 
188  virtual void setMaximumNavigationAreaCellSize(double length, double width);
189  virtual void getMaximumNavigationAreaCellSize(double& length, double& width);
190 
192  virtual bool needsRegeneration() const;
193 
196  virtual bool startGenerationProcess(makVrv::DtUniqueID, makVrv::DtUnicode& error);
197 
199  virtual std::vector<DtVector> convertRuntimeExtentToLocations(const DtRwNavRuntimeConfig&,
200  bool& valid) const;
201 
203  virtual DtFilename navDataRuntimeDirectory(const NavigationArea&) const;
204  virtual DtFilename navDataRuntimeDirectory(makVrv::DtUniqueID) const;
205 
208  virtual bool checkValidExtent(const std::vector<DtVector>&) const;
209 
211  virtual DtVector convertToLocalNavigationArea(const DtVector& geocentric) const;
212 
213  bool generationHadErrors() const
214  {
215  return myGenerationHadErrors;
216  }
217 
218  SimObjectNavigationAreas& simObjectNavAreas() { return mySimObjectNavAreas; };
219 
220  //
221  boost::signals2::signal<void (bool)> signal_showNavigationAreasChanged;
222  boost::signals2::signal<void ()> signal_areasCleared;
223  boost::signals2::signal<void (makVrv::DtUniqueID, NavigationArea, bool)> signal_navigationAreaAdded;
224  boost::signals2::signal<void (makVrv::DtUniqueID)> signal_navigationAreaRemoved;
225  boost::signals2::signal<void (makVrv::DtUniqueID, NavigationArea)> signal_navigationAreaUpdated;
226  boost::signals2::signal<void (makVrv::DtUniqueID, makVrv::DtUnicode)> signal_generationError;
227  boost::signals2::signal<void (makVrv::DtUniqueID, makVrv::DtUnicode)> signal_startingGeneration;
228  boost::signals2::signal<void ()> signal_generationComplete;
229  boost::signals2::signal<void (makVrv::DtUniqueID)> signal_generationRequested;
230  boost::signals2::signal<void (makVrv::DtUniqueID, const DtFilename&)> signal_profileGenerated;
231  boost::signals2::signal<void ()> signal_navigationAreaGenerationProcessStarted;
232  boost::signals2::signal<void (QProcess*)> signal_generatorProcessStarted;
233  boost::signals2::signal<void ()> signal_generatorProcessCompleted;
234  boost::signals2::signal<void (makVrv::DtUniqueID, int)> signal_removedFromGeneration;
235 
236  protected:
237  virtual void resetNavAreaColors();
238  virtual void initExistingNavigationAreas();
239  virtual void slot_navigationAreasCleared();
240  virtual void showNavigationArea(const NavigationArea&);
241  virtual void initialize();
242 
243  virtual void navigationAreaUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
244  virtual void navigationAreaAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
245 
246  virtual void tick();
247 
249  virtual void navAreaDebugPortsReceived(DtSimMessage*);
250  virtual void simObjectNavareaDebugPortsReceived(DtSimMessage*);
251 
252  virtual void detachIfAttachedToNavigationArea(makVrv::DtUniqueID);
253 
254  virtual void slot_onCurrentSelectionChanged(const makVrv::DtSelectionManager::IdSet& selected,
255  const makVrv::DtSelectionManager::IdSet& deselected);
256 
259  virtual void setTerrainClearing(bool);
260 
261  protected:
265 
267 
268  std::set<makVrv::DtUniqueID> mySelectedNavigationAreas;
269 
270  typedef std::vector<makVrv::DtUniqueID> NavigationAreasToGenerate;
272 
274 
276 
277  std::vector<std::string> myProfilesToGenerate;
282 
284 
286  };
287 }
NavigationAreas myNavigationAreas
Definition: navigationAreasManager.h:266
DtEnvironmentalFacadeCollection * area
Definition: navigationAreasManager.h:60
class DtEnvironmentalFacadeCollection
Definition: environmentalFacadeCollection.h:77
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
double myGenerationCheckDelta
Definition: navigationAreasManager.h:280
DtNavSectorIndicesByBackEnd sectorsBeingRegenerated
Definition: navigationAreasManager.h:65
bool hasRuntimeConfig
Definition: navigationAreasManager.h:67
bool generationHadErrors() const
Definition: navigationAreasManager.h:213
Definition: navigationAreasManager.h:54
makVrv::DtDe & myDe
Definition: navigationAreasManager.h:262
DtRwNavGenConfig configuration
Definition: navigationAreasManager.h:56
std::map< makVrv::DtUniqueID, NavigationArea > NavigationAreas
Definition: navigationAreasManager.h:70
Definition: navigationAreasManager.h:47
boost::signals2::signal< void(makVrv::DtUniqueID, NavigationArea)> signal_navigationAreaUpdated
Definition: navigationAreasManager.h:225
DtRwNavRuntimeConfig originalRuntimeConfiguration
Definition: navigationAreasManager.h:59
Contains makVrv:DtSelectionManager class.
Contains makVrv::DtStateView class.
Status status
Definition: navigationAreasManager.h:61
const NavigationAreas & navigationAreas() const
Definition: navigationAreasManager.h:185
Contains the DtUUID class declaration.
std::map< DtUUID, SimObjectNavigationArea > SimObjectNavigationAreas
Definition: navigationAreasManager.h:79
bool myTerrainClearing
Definition: navigationAreasManager.h:285
boost::signals2::signal< void(makVrv::DtUniqueID, int)> signal_removedFromGeneration
Definition: navigationAreasManager.h:234
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
std::string status
Definition: navigationAreasManager.h:76
std::list< std::string > profiles
Definition: navigationAreasManager.h:75
boost::signals2::signal< void(makVrv::DtUniqueID, NavigationArea, bool)> signal_navigationAreaAdded
Definition: navigationAreasManager.h:223
boost::signals2::signal< void()> signal_generationComplete
Definition: navigationAreasManager.h:228
std::vector< std::string > myProfilesToGenerate
Definition: navigationAreasManager.h:277
Status
Definition: navigationAreasManager.h:43
Configuration data for a set of navigation data that is loaded by the sim engine and used at runtime...
Definition: rwNavRuntimeConfig.h:60
Contains makVrv::DtVirtualBaseClass class.
bool myGenerationHadErrors
Definition: navigationAreasManager.h:281
Definition: navigationAreasManager.h:72
makVrv::DtUniqueID myGeneratingNavigationArea
Definition: navigationAreasManager.h:275
File: simMsg.h.
Definition: simMessage.h:35
boost::signals2::signal< void(makVrv::DtUniqueID, const DtFilename &)> signal_profileGenerated
Definition: navigationAreasManager.h:230
boost::signals2::signal< void(makVrv::DtUniqueID)> signal_generationRequested
Definition: navigationAreasManager.h:229
Definition: rwNavGenConfig.h:26
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
makVrv::DtSignalConnectionManager myConnectionManager
Definition: navigationAreasManager.h:263
Definition: navigationAreasManager.h:40
Contains makVrv::DtVrlinkSimulatedEntityState class.
boost::signals2::signal< void(QProcess *)> signal_generatorProcessStarted
Definition: navigationAreasManager.h:232
SimObjectNavigationAreas mySimObjectNavAreas
Definition: navigationAreasManager.h:283
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Definition: asyncJobServer.h:39
Definition: navigationAreasManager.h:48
boost::signals2::signal< void()> signal_generatorProcessCompleted
Definition: navigationAreasManager.h:233
Definition: navigationAreasManager.h:46
boost::signals2::signal< void(makVrv::DtUniqueID, makVrv::DtUnicode)> signal_generationError
Definition: navigationAreasManager.h:226
Base class to provide boost signal/slot management.
boost::signals2::signal< void(makVrv::DtUniqueID)> signal_navigationAreaRemoved
Definition: navigationAreasManager.h:224
makVrv::DtSignalConnectionManager myInitializeConnectionManager
Definition: navigationAreasManager.h:264
DT_DLL_VRVCORE double length(const makVrv::DtCoordinateSystem &, const std::vector< DtVector > &vertices)
Returns the total distance of a segmented line defined by the provided vector of vertices. Coordinates are in local database coordinates. The coordinate system is used to convert between the local database coordinates and geocentric. All distance is in 2D – the Z value is ignored.
std::string originalRuntimeConfigurationFilename
Definition: navigationAreasManager.h:63
boost::signals2::signal< void()> signal_areasCleared
Definition: navigationAreasManager.h:222
double myTimeSinceLastCheck
Definition: navigationAreasManager.h:279
DtTimedSection myTimedSection
Definition: navigationAreasManager.h:278
SimObjectNavigationAreas & simObjectNavAreas()
Definition: navigationAreasManager.h:218
Contains makVrv::DtUniqueID type.
std::map< std::string, DtNavSectorIndices > DtNavSectorIndicesByBackEnd
Definition: navigationAreasManager.h:52
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
makVrv::DtSignalConnectionManager * connections
Definition: navigationAreasManager.h:64
boost::signals2::signal< void()> signal_navigationAreaGenerationProcessStarted
Definition: navigationAreasManager.h:231
std::set< makVrv::DtUniqueID > mySelectedNavigationAreas
Definition: navigationAreasManager.h:268
DtRwNavRuntimeConfig runtimeConfiguration
Definition: navigationAreasManager.h:58
QProcess * myNavigationGenerationProcess
Definition: navigationAreasManager.h:273
std::string runtimeConfigurationFilename
Definition: navigationAreasManager.h:62
DtNavSectorIndicesByBackEnd sectorsQueuedForRegeneration
Definition: navigationAreasManager.h:66
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
std::map< int, int > debugPorts
Definition: navigationAreasManager.h:74
boost::signals2::signal< void(makVrv::DtUniqueID, makVrv::DtUnicode)> signal_startingGeneration
Definition: navigationAreasManager.h:227
DtRwNavGenConfig originalConfiguration
Definition: navigationAreasManager.h:57
std::vector< makVrv::DtUniqueID > NavigationAreasToGenerate
Definition: navigationAreasManager.h:270
NavigationAreasToGenerate myNavigationAreasToGenerate
Definition: navigationAreasManager.h:271

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)