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 
13 #include <vrfmsgs/ifComputeRoute.h>
21 #include <tbb/spin_mutex.h>
22 
23 #include <list>
24 
26 class DtIfComputeRoute;
28 class DtSimulationAddress;
29 class DtSimMessage;
31 class DtIfOsgEarthCacheInformationRequest;
33 
34 
38 {
39 public:
40 
43  {
46  double myAltitude;
47  };
48 
51  {
57 
58  bool operator==(const RunwayInformation& rhs) const
59  {
60  return (
61  (this->myICAO == rhs.myICAO)
62  && (this->myRunwayFName == rhs.myRunwayFName)
63  && (this->myRunwayRName == rhs.myRunwayRName)
64  && (this->myFirstPoint == rhs.myFirstPoint)
65  && (this->mySecondPoint == rhs.mySecondPoint)
66  );
67  }
68 
69  bool operator!=(const RunwayInformation& rhs) const
70  {
71  return !(*this == rhs);
72  }
73  };
74 
76 
78 
80 
82  void visitAirportFeature(const MAKVRinTerra::DtFeature& feature);
83 
85  void visitBoundaryFeature(const MAKVRinTerra::DtFeature& feature);
86 
88  void visitRunwayFeature(const MAKVRinTerra::DtFeature& feature);
89 
92 
95 
98 
99  inline const std::map<std::string, AerodromeInformation*>& aerodromes() const { return myAerodromes; }
100  inline std::map<std::string, AerodromeInformation*>& aerodromes() { return myAerodromes; }
101 
102  const std::list<RunwayInformation*>* runwaysInformation(const std::string& ICAO) const;
103 
104  std::list<RunwayInformation*>* runwaysInformation(const std::string& ICAO);
105 
108 
109 private:
110 
112  std::map<std::string, AerodromeInformation*> myAerodromes;
113 
115  std::map<std::string, std::list<RunwayInformation*>*> myRunways;
116 
118  DtSimulationAddress myFromAddress;
119 
122 
125 
128 
130 };
131 
133 {
134 protected:
135  struct PendingIntersection;
136  class PendingDynamicTerrainInformation;
137 
138 public:
140 
142 
143  virtual ~DtSimTerrainRequestManager();
144 
145  virtual void init();
146 
147  virtual void tick();
148 
149  virtual void process(const DtIfComputeRoute& msg, const DtSimulationAddress& from);
150 
151  virtual void process(const DtIfComputeAerodrome& msg, const DtSimulationAddress& from);
152 
154  virtual void setIntersectionRecheckPeriod(double);
156  {
157  return myIntersectionRecheckPeriod;
158  }
159 
161  virtual void setVectorFeatureLookup(const DtString&);
163  {
164  return myVectorFeatureLookup;
165  }
166 
168  virtual void terrainClosed();
169 
170 protected:
171  static void intersectionRequestCallback(DtSimMessage*, void* usr);
172  virtual void processIntersectionRequest(DtIfRequestIntersectionInformation*);
173 
175  virtual bool processPendingIntersection(PendingIntersection&);
176 
178  static void osgEarthCacheRequestCallback(DtSimMessage*, void* usr);
179  virtual void processOsgEarthCacheRequest(DtIfOsgEarthCacheRequest*);
180 
182  static void osgEarthCacheCancelRequestCallback(DtSimMessage*, void* usr);
183  virtual void processOsgEarthCacheCancelRequest(DtIfOsgEarthCacheCancelRequest*);
184 
186  static void cacheProgressCallback(int reqeustId, int current, bool completed, double elapsedTime, void*);
187  virtual void processCacheProgress(int reqeustId, int current, bool completed, double elapsedTime);
188 
189 protected:
191 
192  typedef boost::shared_ptr<DtAsyncJobMapEntry> EntryPtr;
193 
194  struct Record
195  {
196  Record(const EntryPtr& entry, const DtSimulationAddress& addr, const DtIfComputeRoute& msg)
197  : entry(entry), address(addr), message(msg) { }
198 
200  DtSimulationAddress address;
202  };
203 
204  bool processRecord(const Record&);
205 
206  typedef std::list<Record> Records;
208 
210  {
211  AerodromeRecord(const EntryPtr& entry, const DtSimulationAddress& addr, const DtIfComputeAerodrome& msg)
212  : entry(entry), address(addr), message(msg) { }
213 
215  DtSimulationAddress address;
217  };
218 
219  double dotProductAerodromeRunwayWithWind(const AerodromeResult::RunwayInformation& runway);
220 
224  , const AerodromeResult::RunwayInformation& candidate
225  , double& bestDotProduct
226  , double& longestDistance
227  );
228 
231  , const AerodromeResult::RunwayInformation& longest
232  , double bestDotProduct
233  , double longestDistance
234  , const std::list<AerodromeResult::RunwayInformation*>* runwaysInfo
235  );
236 
237  bool processAerodromeRecord(const AerodromeRecord&);
238 
239  typedef std::list<AerodromeRecord> AerodromeRecords;
241 
245  {
246  std::vector<bool> awaiting;
250  };
251 
252  typedef std::vector<PendingIntersection> PendingIntersectionRequest;
253 
255 
258 
260  typedef std::map<int, DtIfOsgEarthCacheProgress> OsgEarthProgressReports;
262 };
Interface content for requesting intersection information. Note that all point requests must be suppl...
Definition: ifRequestIntersectionInformation.h:20
DtSimulationAddress address
Definition: simTerrainRequestManager.h:215
DtVector myFirstPoint
Definition: simTerrainRequestManager.h:55
std::map< std::string, AerodromeInformation * > & aerodromes()
Definition: simTerrainRequestManager.h:100
Definition: simTerrainRequestManager.h:132
Definition: simTerrainRequestManager.h:194
void setComputeFailureInformation(DtIfComputeAerodromeResponse::ComputeFailureInformation i)
Definition: simTerrainRequestManager.h:106
void visitBoundaryFeature(const MAKVRinTerra::DtFeature &feature)
visit function for each boundary feature filtered.
EntryPtr entry
Definition: simTerrainRequestManager.h:199
To collect information from runway feature.
Definition: simTerrainRequestManager.h:50
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:68
const DtString & vectorFeatureLookup() const
Definition: simTerrainRequestManager.h:162
std::vector< bool > awaiting
Definition: simTerrainRequestManager.h:246
Definition: aerodromeLoader.h:64
Definition: ifComputeAerodrome.h:19
void findPreferredRunways(AerodromeResult::RunwayInformation &preferred, AerodromeResult::RunwayInformation &longest, const AerodromeResult::RunwayInformation &candidate, double &bestDotProduct, double &longestDistance)
DtIfComputeAerodrome message
Definition: simTerrainRequestManager.h:216
PendingIntersectionRequest myPendingIntersectionRequests
Definition: simTerrainRequestManager.h:254
OsgEarthProgressReports myOsgEarthProgressReports
Definition: simTerrainRequestManager.h:261
void visitAirportFeature(const MAKVRinTerra::DtFeature &feature)
visit function for each airport feature filtered.
DtIfComputeAerodromeResponse::ComputeFailureInformation failureInformation() const
Definition: simTerrainRequestManager.h:107
std::map< int, DtIfOsgEarthCacheProgress > OsgEarthProgressReports
Definition: simTerrainRequestManager.h:260
void visitRunwayFeature(const MAKVRinTerra::DtFeature &feature)
visit function for each runway feature filtered.
boost::shared_ptr< DtAsyncJobMapEntry > EntryPtr
Definition: simTerrainRequestManager.h:192
std::map< std::string, std::list< RunwayInformation * > * > myRunways
Hash list of RunwayInformation by ICAO code.
Definition: simTerrainRequestManager.h:115
std::vector< PendingIntersection > PendingIntersectionRequest
Definition: simTerrainRequestManager.h:252
double intersectionRecheckPeriod() const
Definition: simTerrainRequestManager.h:155
If there are intersections pending this is the intersection that is pending, including the original r...
Definition: simTerrainRequestManager.h:244
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.
DtString findBestRunway(AerodromeResult::RunwayInformation &best, const AerodromeResult::RunwayInformation &longest, double bestDotProduct, double longestDistance, const std::list< AerodromeResult::RunwayInformation * > *runwaysInfo)
double myLastElevationRead
to keep track of latest elevation read to apply to feature point location.
Definition: simTerrainRequestManager.h:121
DtString myVectorFeatureLookup
Definition: simTerrainRequestManager.h:257
DtSimulationAddress address
Definition: simTerrainRequestManager.h:200
std::map< std::string, AerodromeInformation * > myAerodromes
Hash list of AerodromeInformation.
Definition: simTerrainRequestManager.h:112
DtString myICAO
Definition: simTerrainRequestManager.h:44
DtString myRunwayFName
Definition: simTerrainRequestManager.h:53
Definition: ifIntersectionInformationResponse.h:105
ComputeFailureInformation
Definition: ifComputeAerodrome.h:98
class DtIfOsgEarthCacheCancelRequest:
Definition: ifOsgEarthCacheCancelRequest.h:18
double myAltitude
Definition: simTerrainRequestManager.h:46
DtVector myLocation
Definition: simTerrainRequestManager.h:45
double nextCheckTime
Definition: simTerrainRequestManager.h:249
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Records myComputeRouteJobs
Definition: simTerrainRequestManager.h:207
DtIfIntersectionInformationResponse response
Definition: simTerrainRequestManager.h:248
Definition: simTerrainRequestManager.h:209
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:240
Base class for result of job.
Definition: asyncJobServer.h:43
DtVector mySecondPoint
Definition: simTerrainRequestManager.h:56
This structure is used by the aynchronous job which query airport features to provide DtSimTerrainReq...
Definition: simTerrainRequestManager.h:37
const std::map< std::string, AerodromeInformation * > & aerodromes() const
Definition: simTerrainRequestManager.h:99
std::list< Record > Records
Definition: simTerrainRequestManager.h:206
DtSimulationAddress myFromAddress
Remember simulation address who requested the compute aerodrome.
Definition: simTerrainRequestManager.h:118
AerodromeInformation * myAerodromeInformation
to keep track attribute value read on the current aerodrome feature visited.
Definition: simTerrainRequestManager.h:124
std::list< AerodromeRecord > AerodromeRecords
Definition: simTerrainRequestManager.h:239
Definition: ifComputeRoute.h:19
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:95
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtIfRequestIntersectionInformation request
Definition: simTerrainRequestManager.h:247
EntryPtr entry
Definition: simTerrainRequestManager.h:214
DtString myICAO
Definition: simTerrainRequestManager.h:52
bool operator!=(const RunwayInformation &rhs) const
Definition: simTerrainRequestManager.h:69
RunwayInformation * myRunwayInformation
to keep track attribute value read on the current runway feature visited.
Definition: simTerrainRequestManager.h:127
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:37
DtSimulationServices * mySimulationServices
Definition: simTerrainRequestManager.h:190
To collect information from aerodrome feature.
Definition: simTerrainRequestManager.h:42
tbb::spin_mutex myOsgEarthCacheInfoProgress
Definition: simTerrainRequestManager.h:259
DtIfComputeRoute message
Definition: simTerrainRequestManager.h:201
bool operator==(const RunwayInformation &rhs) const
Definition: simTerrainRequestManager.h:58
double myIntersectionRecheckPeriod
Definition: simTerrainRequestManager.h:256
AerodromeRecord(const EntryPtr &entry, const DtSimulationAddress &addr, const DtIfComputeAerodrome &msg)
Definition: simTerrainRequestManager.h:211
boost::variant< std::string, long long, bool, double > Attribute
boost::variant type for accessing attributes.
Definition: feature.h:48
DtString myRunwayRName
Definition: simTerrainRequestManager.h:54
Record(const EntryPtr &entry, const DtSimulationAddress &addr, const DtIfComputeRoute &msg)
Definition: simTerrainRequestManager.h:196
DtIfComputeAerodromeResponse::ComputeFailureInformation myFailureInformation
Definition: simTerrainRequestManager.h:129

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)