VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtAerodromeRenderer.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2019 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDe.h>
13 
14 #include <vrvOsg/vrvOsg.h>
15 
17 
18 #include <osgEarthAerodromes/AerodromeCatalog>
19 #include <osgEarthAerodromes/AerodromeFactory>
20 
21 #include <unordered_map>
22 
23 #include <OpenThreads/Mutex>
24 
25 namespace makVrv
26 {
27  class DtRunwayDesignatorNode;
28  class DtRunwayMarkingNode;
29  class DtTextureAtlasIndexParser;
30  class DtTaxiwaySignSignaler;
31  class DtRunwaySignaler;
32  class DtLightIndicatorSignaler;
33 
35  {
36  public:
38  {
40  : myWidth(0.0f)
41  , myLength(0.0f)
42  , centerlineStartOffset_ft(0.0f)
43  , hasCenterline(false) // important! (see memory leak defect 58836)
44  , myFowardVector(osg::Vec3(1, 0, 0))
45  , myThreshold(osg::Vec3(0, 0, 0))
46  , useableThreshold(osg::Vec3(0, 0, 0))
47  {
48  }
49 
50  float myWidth;
51  float myLength;
54 
55  osg::Vec3 myFowardVector;
56  osg::Vec3 myThreshold;
57  osg::Vec3 useableThreshold;
58  };
59 
60  typedef std::unordered_map<std::string, RunwayPolygonData> RunwayPolygonMap;
61 
63  {
64  std::vector<std::string> rwy1;
65  std::vector<std::string> rwy2;
66 
69  };
70 
71  typedef std::unordered_map<std::string, DtAerodromeData> DtAerodromeDataMap;
72  public:
75 
77  virtual ~DtAerodromeRenderer();
78  private:
80  DtAerodromeRenderer& operator=(const DtAerodromeRenderer& rhs) = delete;
82  DtAerodromeRenderer(const DtAerodromeRenderer& rhs) = delete;
83  public:
85  virtual void apply(osgEarth::Aerodrome::AerodromeNode& node);
87 
88  virtual void apply(osgEarth::Aerodrome::RunwayNode& node);
89 
90  virtual void apply(osgEarth::Aerodrome::RunwayThresholdNode& node);
91 
92  virtual void apply(osgEarth::Aerodrome::TaxiwaySignNode& node);
93 
94  virtual void apply(osgEarth::Aerodrome::LightIndicatorNode& node);
95 
96  virtual void apply(osgEarth::Aerodrome::RunwayThresholdGroup& group);
98 
100  virtual void parseTaxiwaySignNode(osgEarth::Aerodrome::TaxiwaySignNode& node);
102 
103  virtual void parseRunwayNode(osgEarth::Aerodrome::AerodromeFeatureNode& node);
104 
105  virtual void parseRunwayThresholdNode(osgEarth::Aerodrome::AerodromeFeatureNode& node);
106 
107  virtual void parseLightIndicatorNode(osgEarth::Aerodrome::AerodromeFeatureNode& node);
109 
110 
112  virtual void addRunwayDesignator(const std::string& icao, const std::string& designator, const std::string& tag,
114  const osg::Vec3& threshold, float offset, float centerOffset = 0.0f);
115 
116  virtual void addRunwayMarking(const std::string& icao, const std::string& designator, const std::string& tag,
117  const osg::Vec3& threshold, float offset, float length, float width, float lateralSpacing);
118 
119  virtual void addRunwayThresholdBar(const std::string& icao, const std::string& designator, const osg::Vec3& threshold);
120 
121  virtual void addRunwayEdgeMarking(const std::string& icao, const std::string& designator, const osg::Vec3& threshold);
122 
123  virtual void addCenterlineMarking(const std::string& icao, const std::string& designator1, const std::string& designator);
124 
125  virtual void addDesignator(const std::string& icao, const osg::Vec3Array& verts, const osg::Vec2Array& texCoords);
126 
127  virtual void addMarking(const std::string& icao, const osg::Vec3Array& verts, const osg::Vec2Array& texCoords);
129 
131  virtual void printFeatureAttributes(osgEarth::Aerodrome::AerodromeFeatureNode& node);
132 
133  protected:
136 
140 
142  void initializeAerodromeData(const std::string& icao, makVrv::DtRunwayMarkingNode* markingNode);
143 
145  DtAerodromeData* findAerodromeData(const std::string& icao);
146 
148  virtual void removeAerodromeFromMap(const std::string& icao);
149 
151  virtual void addGeode(osgEarth::Aerodrome::AerodromeNode& node, osg::Geode* geode, const std::string& name);
152  protected:
153 
155 
158 
160 
161  RunwayPolygonData* getRunwayPolygonData(const std::string& icao, const std::string& designator);
162 
164 
166 
168 
170  };
171 
172 
173 }
osg::Vec3 myThreshold
Definition: DtAerodromeRenderer.h:56
osg::Vec3 useableThreshold
Definition: DtAerodromeRenderer.h:57
A class which contains the signals used by the DtLightIndicatorManager classes.
Definition: DtLightIndicatorManager.h:56
std::vector< std::string > rwy1
Definition: DtAerodromeRenderer.h:64
bool hasCenterline
Definition: DtAerodromeRenderer.h:53
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
A class which contains the signals used by the DtTaxiwaySignManager classes.
Definition: DtTaxiwaySignManager.h:66
Definition: DtTextureAtlasIndexParser.h:23
std::unordered_map< std::string, DtAerodromeData > DtAerodromeDataMap
Definition: DtAerodromeRenderer.h:71
Contains makVrv::DtDe class.
DtRunwaySignaler & myRunwaySignaler
Definition: DtAerodromeRenderer.h:167
DtAerodromeDataMap myDtAerodromeData
Definition: DtAerodromeRenderer.h:156
DtDe & myDe
Definition: DtAerodromeRenderer.h:154
std::vector< std::string > rwy2
Definition: DtAerodromeRenderer.h:65
DtRunwayMarkingNode * myRunwayMarkingNode
Definition: DtAerodromeRenderer.h:68
std::unordered_map< std::string, RunwayPolygonData > RunwayPolygonMap
Definition: DtAerodromeRenderer.h:60
osg::Vec3 myFowardVector
Definition: DtAerodromeRenderer.h:55
Definition: DtAerodromeRenderer.h:34
float myWidth
Definition: DtAerodromeRenderer.h:50
DtSignalConnectionManager myConnections
Definition: DtAerodromeRenderer.h:165
RunwayPolygonData()
Definition: DtAerodromeRenderer.h:39
DtTextureAtlasIndexParser * myTextureAtlasIndexParser
Definition: DtAerodromeRenderer.h:159
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Definition: DtAerodromeRenderer.h:37
Definition: DtRunwayMarkingNode.h:23
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
float myLength
Definition: DtAerodromeRenderer.h:51
Definition: DtAerodromeRenderer.h:62
float centerlineStartOffset_ft
Definition: DtAerodromeRenderer.h:52
DtTaxiwaySignSignaler & myTaxiwaySignSignaler
Definition: DtAerodromeRenderer.h:163
Base class to provide boost signal/slot management.
Definition: DtRunwayMarkingManager.h:125
Contains DLL export macros.
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:70
voidpf uLong offset
Definition: ioapi.h:42
RunwayPolygonMap myRunwayPolygonMap
Definition: DtAerodromeRenderer.h:67
DtLightIndicatorSignaler & myLightIndicatorSignaler
Definition: DtAerodromeRenderer.h:169
OpenThreads::Mutex myAerodromeDataMapMutex
Definition: DtAerodromeRenderer.h:157

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)