VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simTerrainRequestManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
12 
14 
16 #include <vrfmsgs/ifComputeRoute.h>
22 
24 
25 #include <tbb/spin_mutex.h>
26 
27 #include <list>
28 
29 
31 class DtIfComputeRoute;
33 class DtSimulationAddress;
34 class DtSimMessage;
36 class DtIfOsgEarthCacheInformationRequest;
38 
39 
43 {
44 public:
45 
48  {
50  DtVector myLocation;
51  double myAltitude;
52  };
53 
56  {
60  DtVector myFirstPoint;
61  DtVector mySecondPoint;
62 
63  bool operator==(const RunwayInformation& rhs) const
64  {
65  return (
66  (this->myICAO == rhs.myICAO)
67  && (this->myRunwayFName == rhs.myRunwayFName)
68  && (this->myRunwayRName == rhs.myRunwayRName)
69  && (this->myFirstPoint == rhs.myFirstPoint)
70  && (this->mySecondPoint == rhs.mySecondPoint)
71  );
72  }
73 
74  bool operator!=(const RunwayInformation& rhs) const
75  {
76  return !(*this == rhs);
77  }
78  };
79 
81 
82  virtual ~AerodromeResult() override;
83 
85 
87  void visitAirportFeature(const MAKVRinTerra::DtFeature& feature);
88 
90  void visitBoundaryFeature(const MAKVRinTerra::DtFeature& feature);
91 
93  void visitRunwayFeature(const MAKVRinTerra::DtFeature& feature);
94 
97 
100 
103 
104  inline const std::map<std::string, AerodromeInformation*>& aerodromes() const { return myAerodromes; }
105  inline std::map<std::string, AerodromeInformation*>& aerodromes() { return myAerodromes; }
106 
107  const std::list<RunwayInformation*>* runwaysInformation(const std::string& ICAO) const;
108 
109  std::list<RunwayInformation*>* runwaysInformation(const std::string& ICAO);
110 
113 
114 private:
115 
117  std::map<std::string, AerodromeInformation*> myAerodromes;
118 
120  std::map<std::string, std::list<RunwayInformation*>*> myRunways;
121 
123  DtSimulationAddress myFromAddress;
124 
127 
130 
133 
135 };
136 
138 {
139 protected:
140  struct PendingIntersection;
141  class PendingDynamicTerrainInformation;
142 
143 public:
145 
147 
148  virtual ~DtSimTerrainRequestManager();
149 
150  virtual void init();
151 
152  virtual void tick();
153 
154  virtual void process(const DtIfComputeRoute& msg, const DtSimulationAddress& from);
155 
156  virtual void process(const DtIfComputeAerodrome& msg, const DtSimulationAddress& from);
157 
159  virtual void setIntersectionRecheckPeriod(double);
161  {
162  return myIntersectionRecheckPeriod;
163  }
164 
166  virtual void setVectorFeatureLookup(const DtString&);
168  {
169  return myVectorFeatureLookup;
170  }
171 
173  virtual void terrainClosed();
174 
175 protected:
176  static void intersectionRequestCallback(DtSimMessage*, void* usr);
177  virtual void processIntersectionRequest(DtIfRequestIntersectionInformation*);
178 
180  virtual bool processPendingIntersection(PendingIntersection&);
181 
183  static void osgEarthCacheRequestCallback(DtSimMessage*, void* usr);
184  virtual void processOsgEarthCacheRequest(DtIfOsgEarthCacheRequest*);
185 
187  static void osgEarthCacheCancelRequestCallback(DtSimMessage*, void* usr);
188  virtual void processOsgEarthCacheCancelRequest(DtIfOsgEarthCacheCancelRequest*);
189 
191  static void cacheProgressCallback(int reqeustId, int current, bool completed, double elapsedTime, void*);
192  virtual void processCacheProgress(int reqeustId, int current, bool completed, double elapsedTime);
193 
194 protected:
196 
197  typedef std::shared_ptr<DtAsyncJobMapEntry> EntryPtr;
198 
199  struct Record
200  {
201  Record(const EntryPtr& entry, const DtSimulationAddress& addr, const DtIfComputeRoute& msg)
202  : entry(entry), address(addr), message(msg) { }
203 
205  DtSimulationAddress address;
207  };
208 
209  bool processRecord(const Record&);
210 
211  typedef std::list<Record> Records;
213 
215  {
216  AerodromeRecord(const EntryPtr& entry, const DtSimulationAddress& addr, const DtIfComputeAerodrome& msg)
217  : entry(entry), address(addr), message(msg) { }
218 
220  DtSimulationAddress address;
222  };
223 
224  double dotProductAerodromeRunwayWithWind(const AerodromeResult::RunwayInformation& runway);
225 
226  void findPreferredRunways(
229  , const AerodromeResult::RunwayInformation& candidate
230  , double& bestDotProduct
231  , double& longestDistance
232  );
233 
234  DtString findBestRunway(
236  , const AerodromeResult::RunwayInformation& longest
237  , double bestDotProduct
238  , double longestDistance
239  , const std::list<AerodromeResult::RunwayInformation*>* runwaysInfo
240  );
241 
242  bool processAerodromeRecord(const AerodromeRecord&);
243 
244  typedef std::list<AerodromeRecord> AerodromeRecords;
246 
250  {
251  std::vector<bool> awaiting;
255  };
256 
257  typedef std::vector<PendingIntersection> PendingIntersectionRequest;
258 
260 
263 
265  typedef std::map<int, DtIfOsgEarthCacheProgress> OsgEarthProgressReports;
267 };
Interface content for requesting intersection information. Note that all point requests must be suppl...
Definition: ifRequestIntersectionInformation.h:20
DtSimulationAddress address
Definition: simTerrainRequestManager.h:220
DtVector myFirstPoint
Definition: simTerrainRequestManager.h:60
std::map< std::string, AerodromeInformation * > & aerodromes()
Definition: simTerrainRequestManager.h:105
Definition: simTerrainRequestManager.h:137
Definition: simTerrainRequestManager.h:199
void setComputeFailureInformation(DtIfComputeAerodromeResponse::ComputeFailureInformation i)
Definition: simTerrainRequestManager.h:111
void visitBoundaryFeature(const MAKVRinTerra::DtFeature &feature)
visit function for each boundary feature filtered.
EntryPtr entry
Definition: simTerrainRequestManager.h:204
To collect information from runway feature.
Definition: simTerrainRequestManager.h:55
class DtIfOsgEarthCacheRequest:
Definition: ifOsgEarthCacheRequest.h:18
Key used to lookup attributes. The DtFeature interface is a dictionary that maps Key objects to attri...
Definition: feature.h:67
const DtString & vectorFeatureLookup() const
Definition: simTerrainRequestManager.h:167
std::vector< bool > awaiting
Definition: simTerrainRequestManager.h:251
Definition: aerodromeLoader.h:63
Definition: ifComputeAerodrome.h:19
DtIfComputeAerodrome message
Definition: simTerrainRequestManager.h:221
PendingIntersectionRequest myPendingIntersectionRequests
Definition: simTerrainRequestManager.h:259
OsgEarthProgressReports myOsgEarthProgressReports
Definition: simTerrainRequestManager.h:266
void visitAirportFeature(const MAKVRinTerra::DtFeature &feature)
visit function for each airport feature filtered.
DtIfComputeAerodromeResponse::ComputeFailureInformation failureInformation() const
Definition: simTerrainRequestManager.h:112
std::map< int, DtIfOsgEarthCacheProgress > OsgEarthProgressReports
Definition: simTerrainRequestManager.h:265
void visitRunwayFeature(const MAKVRinTerra::DtFeature &feature)
visit function for each runway feature filtered.
std::map< std::string, std::list< RunwayInformation * > * > myRunways
Hash list of RunwayInformation by ICAO code.
Definition: simTerrainRequestManager.h:120
std::vector< PendingIntersection > PendingIntersectionRequest
Definition: simTerrainRequestManager.h:257
double intersectionRecheckPeriod() const
Definition: simTerrainRequestManager.h:160
If there are intersections pending this is the intersection that is pending, including the original r...
Definition: simTerrainRequestManager.h:249
void setupFrom(const MAKVRinTerra::DtAerodromeLoader::AerodromeData &aerodromeData)
void getRunwayAttributes(const MAKVRinTerra::DtFeature::Key &key, const MAKVRinTerra::DtFeature::Attribute &attr)
Look at runway area feature attribute to extract runway names.
double myLastElevationRead
to keep track of latest elevation read to apply to feature point location.
Definition: simTerrainRequestManager.h:126
DtString myVectorFeatureLookup
Definition: simTerrainRequestManager.h:262
DtSimulationAddress address
Definition: simTerrainRequestManager.h:205
std::map< std::string, AerodromeInformation * > myAerodromes
Hash list of AerodromeInformation.
Definition: simTerrainRequestManager.h:117
DtString myICAO
Definition: simTerrainRequestManager.h:49
DtString myRunwayFName
Definition: simTerrainRequestManager.h:58
Definition: ifIntersectionInformationResponse.h:105
ComputeFailureInformation
Definition: ifComputeAerodrome.h:98
class DtIfOsgEarthCacheCancelRequest:
Definition: ifOsgEarthCacheCancelRequest.h:18
double myAltitude
Definition: simTerrainRequestManager.h:51
DtVector myLocation
Definition: simTerrainRequestManager.h:50
double nextCheckTime
Definition: simTerrainRequestManager.h:254
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Records myComputeRouteJobs
Definition: simTerrainRequestManager.h:212
DtIfIntersectionInformationResponse response
Definition: simTerrainRequestManager.h:253
Definition: simTerrainRequestManager.h:214
const std::list< RunwayInformation * > * runwaysInformation(const std::string &ICAO) const
File: simMsg.h.
Definition: simMessage.h:35
void getBoundaryAttributes(const MAKVRinTerra::DtFeature::Key &key, const MAKVRinTerra::DtFeature::Attribute &attr)
Look at boundary areal feature attribute to extract elevation and ICAO code.
AerodromeRecords myComputeAerodromeJobs
Definition: simTerrainRequestManager.h:245
Base class for result of job.
Definition: asyncJobServer.h:43
DtVector mySecondPoint
Definition: simTerrainRequestManager.h:61
This structure is used by the aynchronous job which query airport features to provide DtSimTerrainReq...
Definition: simTerrainRequestManager.h:42
const std::map< std::string, AerodromeInformation * > & aerodromes() const
Definition: simTerrainRequestManager.h:104
std::list< Record > Records
Definition: simTerrainRequestManager.h:211
DtSimulationAddress myFromAddress
Remember simulation address who requested the compute aerodrome.
Definition: simTerrainRequestManager.h:123
AerodromeInformation * myAerodromeInformation
to keep track attribute value read on the current aerodrome feature visited.
Definition: simTerrainRequestManager.h:129
std::list< AerodromeRecord > AerodromeRecords
Definition: simTerrainRequestManager.h:244
Definition: ifComputeRoute.h:19
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtIfRequestIntersectionInformation request
Definition: simTerrainRequestManager.h:252
EntryPtr entry
Definition: simTerrainRequestManager.h:219
DtString myICAO
Definition: simTerrainRequestManager.h:57
bool operator!=(const RunwayInformation &rhs) const
Definition: simTerrainRequestManager.h:74
RunwayInformation * myRunwayInformation
to keep track attribute value read on the current runway feature visited.
Definition: simTerrainRequestManager.h:132
void getAirportFeatureAttributeNames(const MAKVRinTerra::DtFeature::Key &key, const MAKVRinTerra::DtFeature::Attribute &attr)
Look at airport point feature attribute to extract ICAO code.
Represents a GIS feature. Features consist of a DtFeatureGeometry (2.5D geometric vector data) and a ...
Definition: feature.h:36
DtSimulationServices * mySimulationServices
Definition: simTerrainRequestManager.h:195
To collect information from aerodrome feature.
Definition: simTerrainRequestManager.h:47
tbb::spin_mutex myOsgEarthCacheInfoProgress
Definition: simTerrainRequestManager.h:264
DtIfComputeRoute message
Definition: simTerrainRequestManager.h:206
bool operator==(const RunwayInformation &rhs) const
Definition: simTerrainRequestManager.h:63
virtual ~AerodromeResult() override
double myIntersectionRecheckPeriod
Definition: simTerrainRequestManager.h:261
AerodromeRecord(const EntryPtr &entry, const DtSimulationAddress &addr, const DtIfComputeAerodrome &msg)
Definition: simTerrainRequestManager.h:216
std::shared_ptr< DtAsyncJobMapEntry > EntryPtr
Definition: simTerrainRequestManager.h:197
boost::variant< std::string, long long, bool, double > Attribute
boost::variant type for accessing attributes.
Definition: feature.h:47
DtString myRunwayRName
Definition: simTerrainRequestManager.h:59
Record(const EntryPtr &entry, const DtSimulationAddress &addr, const DtIfComputeRoute &msg)
Definition: simTerrainRequestManager.h:201
DtIfComputeAerodromeResponse::ComputeFailureInformation myFailureInformation
Definition: simTerrainRequestManager.h:134

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)