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>
13 #include <vrfutil/rwNavGenConfig.h>
15 #include <vrfutil/rwUUID.h>
16 #include <vrfutil/rwTemplatedMap.h>
17 #include <vlutil/vlFilename.h>
19 #include <vrvCore/DtUniqueID.h>
21 #include <vrvUtil/DtUnicode.h>
22 #include <vlutil/vlPerformanceStats.h>
24 
25 namespace makVrv
26 {
27  class DtDe;
28 }
29 
30 class QProcess;
31 class DtSimMessage;
32 
33 #define DtDebugPortExtendedDataKey "DtDebugPortExtendedDataKey"
34 
35 namespace makVrf
36 {
37  class DtEnvironmentalFacadeCollection;
38 
40  {
41  public:
42  enum Status
43  {
44  Unknown = -1,
48  ScheduledForGeneration
49  };
50 
51  typedef std::map<std::string, DtNavSectorIndices> DtNavSectorIndicesByBackEnd;
52 
54  {
63  makVrv::DtSignalConnectionManager* connections = nullptr;
66  bool hasRuntimeConfig = false;
67  };
68 
69  typedef std::map<makVrv::DtUniqueID, NavigationArea> NavigationAreas;
70 
72  {
73  std::map<int, int> debugPorts;
74  std::list<std::string> profiles;
75  std::string status;
76  };
77 
78  typedef std::map<DtUUID, SimObjectNavigationArea> SimObjectNavigationAreas;
79 
80  public:
83 
85  virtual ~DtNavigationAreasManager() override;
86 
88  static DtNavigationAreasManager& instance(makVrv::DtDe& de);
89 
91  static void registerInstance(makVrv::DtDe&, DtNavigationAreasManager*);
92 
95  virtual bool addNavigationArea(const DtFilename&, makVrv::DtUniqueID* resID = 0);
96 
98  virtual int profilesToGenerate(makVrv::DtUniqueID) const;
99 
101  virtual DtEnvironmentalFacadeCollection* createNavigationArea(const NavigationArea&) const;
102 
104  virtual void selectNavigationAreas(const std::set<makVrv::DtUniqueID>&, bool selectOnMap = true);
105  const std::set<makVrv::DtUniqueID>& selectedNavigationAreas() const;
106 
108  virtual Status status(makVrv::DtUniqueID);
109 
111  virtual void reset();
112 
114  virtual void delayedReset();
115 
117  virtual const DtNavSectorIndicesByBackEnd& sectorsBeingRegenerated(makVrv::DtUniqueID) const;
118 
120  virtual const DtNavSectorIndicesByBackEnd& sectorsQueuedForRegeneration(makVrv::DtUniqueID) const;
121 
124  virtual void revertNavigationArea(makVrv::DtUniqueID);
125 
127  virtual bool isModified(makVrv::DtUniqueID) const;
128 
133  virtual Status navDataGenerated(const NavigationArea&) const;
134 
136  virtual void generateNavigationArea(makVrv::DtUniqueID);
137 
139  virtual void regenerateAllUngeneratedAreas();
140 
142  virtual void saveConfigurations();
143 
145  virtual makVrv::DtUniqueID generatingNavigationArea() const;
146 
148  virtual void generateAllNavigationAreas();
149 
151  virtual bool generatingAnyNavigationArea();
152 
154  virtual void removeCurrentFromGeneration();
155 
157  virtual void removeAllFromGeneration();
158 
160  virtual void removeNavigationAreaForGeneration(makVrv::DtUniqueID);
161 
163  virtual bool scheduledForGeneration(makVrv::DtUniqueID) const;
164 
166  virtual bool isNavigationArea(makVrv::DtUniqueID) const;
167 
169  virtual makVrv::DtUniqueID navigationAreaForConfigurationFile(const DtFilename&) const;
170 
172  virtual void setShowNavigationAreas(bool);
173  virtual bool showNavigationAreas() const;
174 
176  virtual void setShowProgressOnGenerationStart(bool b);
177  virtual bool showProgressOnGenerationStart() const;
178 
181  virtual void removeNavigationArea(makVrv::DtUniqueID, bool ask = false, bool removeFromTerrain = true);
182 
184  virtual void setGenerationCheckDelta(double);
185  double generationCheckDelta() const;
186 
188  virtual std::map<DtString, DtFilename> profilesAndOutputDirectoriesFor(makVrv::DtUniqueID id) const;
189 
190  const NavigationAreas& navigationAreas() const { return myNavigationAreas; };
191 
193  virtual void setMaximumNavigationAreaCellSize(double length, double width);
194  virtual void getMaximumNavigationAreaCellSize(double& length, double& width);
195 
197  virtual bool needsRegeneration() const;
198 
201  virtual bool startGenerationProcess(makVrv::DtUniqueID, makVrv::DtUnicode& error);
202 
204  virtual std::vector<DtVector> convertRuntimeExtentToLocations(const DtRwNavRuntimeConfig&,
205  bool& valid) const;
206 
208  virtual DtFilename navDataRuntimeDirectory(const NavigationArea&) const;
209  virtual DtFilename navDataRuntimeDirectory(makVrv::DtUniqueID) const;
210 
213  virtual bool checkValidExtent(const std::vector<DtVector>&) const;
214 
216  virtual DtVector convertToLocalNavigationArea(const DtVector& geocentric) const;
217 
218  bool generationHadErrors() const
219  {
220  return myGenerationHadErrors;
221  }
222 
223  SimObjectNavigationAreas& simObjectNavAreas() { return mySimObjectNavAreas; };
224 
225  //
226  boost::signals2::signal<void (bool)> signal_showNavigationAreasChanged;
227  boost::signals2::signal<void ()> signal_areasCleared;
228  boost::signals2::signal<void (makVrv::DtUniqueID, NavigationArea, bool)> signal_navigationAreaAdded;
229  boost::signals2::signal<void (makVrv::DtUniqueID)> signal_navigationAreaRemoved;
230  boost::signals2::signal<void (makVrv::DtUniqueID, NavigationArea)> signal_navigationAreaUpdated;
231  boost::signals2::signal<void (makVrv::DtUniqueID, makVrv::DtUnicode)> signal_generationError;
232  boost::signals2::signal<void (makVrv::DtUniqueID, makVrv::DtUnicode)> signal_startingGeneration;
233  boost::signals2::signal<void ()> signal_generationComplete;
234  boost::signals2::signal<void (makVrv::DtUniqueID)> signal_generationRequested;
235  boost::signals2::signal<void (makVrv::DtUniqueID, const DtFilename&)> signal_profileGenerated;
236  boost::signals2::signal<void ()> signal_navigationAreaGenerationProcessStarted;
237  boost::signals2::signal<void (QProcess*)> signal_generatorProcessStarted;
238  boost::signals2::signal<void ()> signal_generatorProcessCompleted;
239  boost::signals2::signal<void (makVrv::DtUniqueID, int)> signal_removedFromGeneration;
240 
241  protected:
242  virtual void resetNavAreaColors();
243  virtual void initExistingNavigationAreas();
244  virtual void slot_navigationAreasCleared(bool removeFromTerrain = true);
245  virtual void showNavigationArea(const NavigationArea&);
246  virtual void initialize();
247 
248  virtual void navigationAreaUpdated(DtSimObjectReference);
249  virtual void navigationAreaAdded(DtSimObjectReference);
250 
251  virtual void tick();
252 
254  virtual void navAreaDebugPortsReceived(DtSimMessage*);
255  virtual void simObjectNavareaDebugPortsReceived(DtSimMessage*);
256 
257  virtual void detachIfAttachedToNavigationArea(makVrv::DtUniqueID);
258 
259  virtual void slot_onCurrentSelectionChanged(const makVrv::DtSelectionManager::IdSet& selected,
260  const makVrv::DtSelectionManager::IdSet& deselected);
261 
264  virtual void setTerrainClearing(bool);
265 
266  protected:
270 
271  boost::signals2::connection myDelayedResetConnection;
272  boost::signals2::connection myNavigationAreasManagerTickConnection;
273 
275 
276  std::set<makVrv::DtUniqueID> mySelectedNavigationAreas;
277 
278  typedef std::vector<makVrv::DtUniqueID> NavigationAreasToGenerate;
280 
282 
284 
285  std::vector<std::string> myProfilesToGenerate;
286  DtTimedSection myTimedSection;
290 
292 
294  };
295 }
boost::signals2::connection myDelayedResetConnection
Definition: navigationAreasManager.h:271
NavigationAreas myNavigationAreas
Definition: navigationAreasManager.h:274
DtEnvironmentalFacadeCollection * area
Definition: navigationAreasManager.h:59
class DtEnvironmentalFacadeCollection
Definition: environmentalFacadeCollection.h:76
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:288
DtNavSectorIndicesByBackEnd sectorsBeingRegenerated
Definition: navigationAreasManager.h:64
bool generationHadErrors() const
Definition: navigationAreasManager.h:218
Definition: navigationAreasManager.h:53
makVrv::DtDe & myDe
Definition: navigationAreasManager.h:267
DtRwNavGenConfig configuration
Definition: navigationAreasManager.h:55
std::map< makVrv::DtUniqueID, NavigationArea > NavigationAreas
Definition: navigationAreasManager.h:69
Definition: navigationAreasManager.h:46
boost::signals2::signal< void(makVrv::DtUniqueID, NavigationArea)> signal_navigationAreaUpdated
Definition: navigationAreasManager.h:230
DtRwNavRuntimeConfig originalRuntimeConfiguration
Definition: navigationAreasManager.h:58
Contains makVrv:DtSelectionManager class.
Status status
Definition: navigationAreasManager.h:60
const NavigationAreas & navigationAreas() const
Definition: navigationAreasManager.h:190
Contains the DtUUID class declaration.
std::map< DtUUID, SimObjectNavigationArea > SimObjectNavigationAreas
Definition: navigationAreasManager.h:78
bool myTerrainClearing
Definition: navigationAreasManager.h:293
boost::signals2::signal< void(makVrv::DtUniqueID, int)> signal_removedFromGeneration
Definition: navigationAreasManager.h:239
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
std::string status
Definition: navigationAreasManager.h:75
std::list< std::string > profiles
Definition: navigationAreasManager.h:74
boost::signals2::signal< void(makVrv::DtUniqueID, NavigationArea, bool)> signal_navigationAreaAdded
Definition: navigationAreasManager.h:228
boost::signals2::signal< void()> signal_generationComplete
Definition: navigationAreasManager.h:233
std::vector< std::string > myProfilesToGenerate
Definition: navigationAreasManager.h:285
Status
Definition: navigationAreasManager.h:42
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:289
Definition: navigationAreasManager.h:71
makVrv::DtUniqueID myGeneratingNavigationArea
Definition: navigationAreasManager.h:283
File: simMsg.h.
Definition: simMessage.h:35
boost::signals2::signal< void(makVrv::DtUniqueID, const DtFilename &)> signal_profileGenerated
Definition: navigationAreasManager.h:235
boost::signals2::signal< void(makVrv::DtUniqueID)> signal_generationRequested
Definition: navigationAreasManager.h:234
Definition: rwNavGenConfig.h:26
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
makVrv::DtSignalConnectionManager myConnectionManager
Definition: navigationAreasManager.h:268
Definition: navigationAreasManager.h:39
boost::signals2::signal< void(QProcess *)> signal_generatorProcessStarted
Definition: navigationAreasManager.h:237
SimObjectNavigationAreas mySimObjectNavAreas
Definition: navigationAreasManager.h:291
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Definition: asyncJobServer.h:39
Definition: navigationAreasManager.h:47
boost::signals2::signal< void()> signal_generatorProcessCompleted
Definition: navigationAreasManager.h:238
Definition: navigationAreasManager.h:45
boost::signals2::signal< void(makVrv::DtUniqueID, makVrv::DtUnicode)> signal_generationError
Definition: navigationAreasManager.h:231
Base class to provide boost signal/slot management.
boost::signals2::signal< void(makVrv::DtUniqueID)> signal_navigationAreaRemoved
Definition: navigationAreasManager.h:229
makVrv::DtSignalConnectionManager myInitializeConnectionManager
Definition: navigationAreasManager.h:269
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:62
boost::signals2::signal< void()> signal_areasCleared
Definition: navigationAreasManager.h:227
double myTimeSinceLastCheck
Definition: navigationAreasManager.h:287
DtTimedSection myTimedSection
Definition: navigationAreasManager.h:286
SimObjectNavigationAreas & simObjectNavAreas()
Definition: navigationAreasManager.h:223
Contains makVrv::DtUniqueID type.
std::map< std::string, DtNavSectorIndices > DtNavSectorIndicesByBackEnd
Definition: navigationAreasManager.h:51
boost::signals2::connection myNavigationAreasManagerTickConnection
Definition: navigationAreasManager.h:272
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:76
boost::signals2::signal< void()> signal_navigationAreaGenerationProcessStarted
Definition: navigationAreasManager.h:236
std::set< makVrv::DtUniqueID > mySelectedNavigationAreas
Definition: navigationAreasManager.h:276
DtRwNavRuntimeConfig runtimeConfiguration
Definition: navigationAreasManager.h:57
QProcess * myNavigationGenerationProcess
Definition: navigationAreasManager.h:281
std::string runtimeConfigurationFilename
Definition: navigationAreasManager.h:61
DtNavSectorIndicesByBackEnd sectorsQueuedForRegeneration
Definition: navigationAreasManager.h:65
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
std::map< int, int > debugPorts
Definition: navigationAreasManager.h:73
boost::signals2::signal< void(makVrv::DtUniqueID, makVrv::DtUnicode)> signal_startingGeneration
Definition: navigationAreasManager.h:232
DtRwNavGenConfig originalConfiguration
Definition: navigationAreasManager.h:56
std::vector< makVrv::DtUniqueID > NavigationAreasToGenerate
Definition: navigationAreasManager.h:278
NavigationAreasToGenerate myNavigationAreasToGenerate
Definition: navigationAreasManager.h:279

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)