VR-Forces 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) 2023 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
14 #include <vrvCore/DtDe.h>
15 
17 
19 
20 #include <osgEarthAerodromes/AerodromeCatalog>
21 #include <osgEarthAerodromes/AerodromeFactory>
22 
23 #include <unordered_map>
24 
25 #include <OpenThreads/Mutex>
26 
27 namespace makVrv
28 {
29  class DtRunwayDesignatorNode;
30  class DtRunwayMarkingNode;
31  class DtTextureAtlasIndexParser;
32  class DtRunwaySignaler;
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
std::vector< std::string > rwy1
Definition: DtAerodromeRenderer.h:64
bool hasCenterline
Definition: DtAerodromeRenderer.h:53
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Definition: DtTextureAtlasIndexParser.h:33
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.
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.
Definition: DtRunwaySignaler.h:24
Contains DLL export macros.
Signaler for when a certain aerodrome component type is created/destroyed.
Definition: DtAerodromeComponentTypeSignaler.h:21
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
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 Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)