VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtAerodromeRenderer.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2016 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDe.h>
13 #include <vrvOsg/vrvOsg.h>
14 
15 #include <osgEarthAerodrome/AerodromeCatalog>
16 #include <osgEarthAerodrome/AerodromeFactory>
17 
18 #include <boost/unordered_map.hpp>
19 
20 namespace makVrv
21 {
22  class DtRunwayDesignatorNode;
23  class DtRunwayMarkingNode;
24  class DtTextureAtlasIndexParser;
25  class DtTaxiwaySignSignaler;
26 
27  class DT_DLL_VRVOSG DtAerodromeRenderer : public osgEarth::Aerodrome::AerodromeRenderer
28  {
29  public:
30 
31  typedef struct RunwayPolygonData
32  {
33  float myWidth;
34  float myLength;
37 
38  osg::Vec3 myFowardVector;
39  osg::Vec3 myThreshold;
40  osg::Vec3 useableThreshold;
41  };
42 
43  typedef boost::unordered_map<std::string, RunwayPolygonData> RunwayPolygonMap;
44 
45  typedef struct DtAerodromeData
46  {
47  std::vector<std::string> rwy1;
48  std::vector<std::string> rwy2;
49 
52  };
53 
54  typedef boost::unordered_map<std::string, DtAerodromeData> DtAerodromeDataMap;
55 
56 
58 
59  virtual ~DtAerodromeRenderer();
60 
61  virtual void apply(osgEarth::Aerodrome::AerodromeNode& node);
62 
63  virtual void apply(osgEarth::Aerodrome::RunwayNode& node);
64 
65  virtual void apply(osgEarth::Aerodrome::RunwayThresholdNode& node);
66 
67  virtual void apply(osgEarth::Aerodrome::TaxiwaySignNode& node);
68 
69  virtual void apply(osgEarth::Aerodrome::LightIndicatorNode& node);
70 
71  virtual void apply(osgEarth::Aerodrome::RunwayThresholdGroup& group);
72 
73  virtual void parseTaxiwaySignNode(osgEarth::Aerodrome::TaxiwaySignNode &node);
74 
75  virtual void parseRunwayNode(osgEarth::Aerodrome::AerodromeFeatureNode& node);
76 
77  virtual void parseRunwayThresholdNode(osgEarth::Aerodrome::AerodromeFeatureNode& node);
78 
79  virtual void parseLightIndicatorNode(osgEarth::Aerodrome::AerodromeFeatureNode& node);
80 
81  virtual void printFeatureAttributes(osgEarth::Aerodrome::AerodromeFeatureNode& node);
82 
83  virtual void addRunwayDesignator(const std::string& icao, const std::string& designator, const std::string& tag,
84  const osg::Vec3& threshold, float offset, float centerOffset = 0.0f);
85 
86  virtual void addRunwayMarking(const std::string& icao, const std::string& designator, const std::string& tag,
87  const osg::Vec3& threshold, float offset, float length, float width, float lateralSpacing);
88 
89  virtual void addRunwayThresholdBar(const std::string& icao, const std::string& designator, const osg::Vec3& threshold);
90 
91  virtual void addRunwayEdgeMarking(const std::string& icao, const std::string& designator, const osg::Vec3& threshold);
92 
93  virtual void addCenterlineMarking(const std::string& icao, const std::string& designator1, const std::string& designator);
94 
95  virtual void addDesignator(const std::string& icao, const osg::Vec3Array& verts, const osg::Vec2Array& texCoords);
96 
97  virtual void addMarking(const std::string& icao, const osg::Vec3Array& verts, const osg::Vec2Array& texCoords);
98 
99  virtual void removeAerodromeFromMap(const std::string& icao);
100 
101  protected:
102 
104 
106 
108 
109  RunwayPolygonData* getRunwayPolygonData(const std::string& icao, const std::string& designator);
110 
112  };
113 
114  class DT_DLL_VRVOSG DtRunwayMarkingNode : public osg::Node
115  {
116  public:
117 
118  DtRunwayMarkingNode(DtDe& de, DtAerodromeRenderer& renderer, const std::string& icao);
119 
120  virtual ~DtRunwayMarkingNode();
121 
122  virtual osg::ref_ptr<osg::Geode> buildMarkingDrawable();
123  virtual osg::ref_ptr<osg::Geode> buildDesignatorDrawable();
124 
125  virtual void addMarking(const osg::Vec3Array& verts, const osg::Vec2Array& texCoords);
126  virtual void addDesignator(const osg::Vec3Array& verts, const osg::Vec2Array& texCoords);
127 
128  protected:
129 
131 
132  std::string icao;
134 
135  osg::ref_ptr<osg::Vec3Array> myMarkingVerts;
136  osg::ref_ptr<osg::Vec2Array> myMarkingTexCoords;
137 
138  osg::ref_ptr<osg::Vec3Array> myDesignatorVerts;
139  osg::ref_ptr<osg::Vec2Array> myDesignatorTexCoords;
140 
141  };
142 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)