VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTaxiwaySignManager.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 #include <vrvCore/DtDe.h>
13 #include <vrvCore/DtUniqueID.h>
14 
15 #include <vrvOsg/vrvOsg.h>
16 
20 
21 #include <matrix/vlVector.h>
22 #include <osg/Group>
23 #include <boost/unordered_map.hpp>
24 
25 namespace makVrv
26 {
27  class DtOsgArticulatedModel;
28  class DtTaxiwaySignParser;
29  class DtTextureAtlasIndexParser;
30  struct DtRunwayData;
31  class DtSceneObject;
32  class DtTaxiwaySignSignaler;
33 
37  {
38  std::string apt_icao;
39  int size;
40  std::string text;
41  double heading;
43  };
44 
46  // via DtTaxiwaySignSignaler
47  class DT_DLL_VRVOSG DtTaxiwaySignNode : public osg::Group
48  {
49  public:
50  DtTaxiwaySignNode(DtDe& de, DtTaxiwaySignData& signData, DtTaxiwaySignSignaler& taxiwaySignSignaler);
51 
52  virtual ~DtTaxiwaySignNode();
53 
54  public:
58  };
59 
63  {
64  public:
66  static DtTaxiwaySignSignaler& instance(DtDe& anIG);
67 
69  virtual ~DtTaxiwaySignSignaler();
70 
72  boost::signal<void ( DtTaxiwaySignData& )> signal_TaxiwaySignCreated;
73 
75  boost::signal<void ( DtTaxiwaySignData& )> signal_TaxiwaySignDeleted;
76 
79  boost::signal<void ( DtRunwayData& )> signal_RunwayCreated;
80 
83  boost::signal<void ( DtRunwayData& )> signal_RunwayDestroyed;
84 
85  protected:
86 
88 
89  };
90 
92  {
93  public:
94 
95  typedef std::vector<DtTaxiwaySignLetter> TaxiwaySignSide;
96 
97  typedef boost::unordered_map<DtUniqueID, DtOsgArticulatedModel* >
99 
100  typedef boost::unordered_map<DtUniqueID, std::vector<DtOsgArticulatedModel*> >
102 
103  typedef boost::unordered_map<DtUniqueID, DtSceneObject* >
105 
107  {
109  SIDED_DOUBLE
110  };
111 
113  {
115  PLACEMENT_RIGHT
116  };
117 
119  static DtTaxiwaySignManager& instance(DtDe& anIG);
120 
122  virtual ~DtTaxiwaySignManager();
123 
125  virtual void slot_TaxiwaySignCreated(DtTaxiwaySignData& signData);
126 
128  virtual void slot_TaxiwaySignDestroyed(DtTaxiwaySignData& signData);
129 
132  virtual void slot_RunwayCreated(DtRunwayData& runwayData);
133 
136  virtual void slot_RunwayDestroyed(DtRunwayData& runwayData);
137 
139  virtual std::size_t hashPos(DtVector& pos);
140 
142  virtual std::size_t hashRunwayData(DtRunwayData& data);
143 
146  virtual void setTaxiwayDesignator(DtOsgArticulatedModel* taxiwaySign,
147  const std::string& atlasFileName, const std::string& text);
148 
151  virtual void setModelDefinitionForSize(unsigned int size, const std::string& modelDef);
152 
155  virtual void clearModelDefinitionForSize(unsigned int size);
156 
158  // default is SignTaxiwaySign
159  virtual void setDefaultModelDefinition(const std::string& modelDef);
160 
165  virtual void setSignMaxSegments(unsigned int maxSegments);
166 
168  virtual void setSignCharactersPerSegment(unsigned int charsPerSegment);
169 
172  virtual void setTaxiwaySignUVOffsets(
173  DtOsgArticulatedModel* taxiwaySign, TaxiwaySignSide& sign,
174  unsigned int numChars);
175 
179  virtual bool setMaxSignLimits(unsigned int& numSegments, unsigned int& numChars);
180 
183  virtual void updateTaxiwaySignManager(const float budget);
184 
187  virtual void createTaxiwaySign(DtTaxiwaySignData& signData);
188 
191  virtual void createRunwaySigns(DtRunwayData& runwayData,
192  const RunwaySignType signType, const RunwaySignPlacement signPlacement);
193 
194  virtual void createAndPlaceHalfwayRunwayDistanceSign(
195  const DtRunwayData &runwayData, const double signWidthOffset,
196  const RunwaySignPlacement signPlacement, DtUniqueID runwayID);
197 
200  virtual void extractRunwayStartAndForward(const DtRunwayData &runwayData,
201  DtVector &centerStartPoint, DtVector &forwardVector,
202  const RunwaySignPlacement signPlacement);
203 
205  virtual void generateSignLocationsAndStrings(std::vector<DtVector>& signLocations,
206  std::vector<std::string>& signLabels, const double signSpacing,
207  const double signOffset, RunwaySignType signType,
208  const RunwaySignPlacement signPlacement, const DtRunwayData& runwayData);
209 
212  virtual DtVector generateRightVectorAtPos(const DtVector& currPos,
213  const double headingDeg);
214 
216  virtual void createAndPlaceRunwayDistanceSign(const DtVector& signLoc,
217  const std::string& label, const RunwaySignPlacement signPlacement,
218  const double heading, const unsigned int signSize, DtUniqueID runwayID);
219 
222  virtual std::string generateSignLabel(unsigned int signNum);
223 
225  virtual DtVector calcRunwayHalfwaySignPos(const double signOffset,
226  const RunwaySignPlacement signPlacement, const DtRunwayData& runwayData);
227 
230  double offsetForDistanceSignSize(unsigned int size);
231 
233  DtVector geodeticToCig(const DtVector& pos) const;
234 
235  public:
236 
237  boost::signal<void ( DtTaxiwaySignData& )> signal_TaxiwaySignDeleted;
238  boost::signal<void ( DtTaxiwaySignData& )> signal_TaxiwaySignCreated;
239 
240  protected:
241 
243 
248  // For creating DtOsgArticulated models on the main thread
251 
253  // Each runway has a vector of signs that are generated around it for
254  // end of runway distance markers
255  // They are created when the runway is created and deleted when the runway
256  // is deleted
258  // The signs are DtOsgArticulatedModels, they are put under a DtSceneObject
259  // so that they work when instancing is off
260  // The DtSceneObject doesn't have the transform, the articulated model does
262 
263  std::map<unsigned int, std::string> myTaxiwaySignModelDefinitions;
267 
268  std::vector<DtTaxiwaySignData> myTaxiSignCreationVector;
269  std::vector<DtRunwayData> myRunwayCreationVector;
270 
271 };
272 }
Definition: DtTaxiwaySignManager.h:114
Definition: DtTaxiwaySignManager.h:91
std::string text
Definition: DtTaxiwaySignManager.h:40
boost::unordered_map< DtUniqueID, DtSceneObject * > SceneObjectMap
Definition: DtTaxiwaySignManager.h:104
Virtual base class.
Definition: DtVirtualBaseClass.h:22
DtTextureAtlasIndexParser * myTaxiwaySignTextureAtlasParser
Definition: DtTaxiwaySignManager.h:247
boost::signal< void(DtTaxiwaySignData &)> signal_TaxiwaySignCreated
Definition: DtTaxiwaySignManager.h:238
Contains makVrv::DtTaxiwaySignLetter class.
int size
Definition: DtTaxiwaySignManager.h:39
std::vector< DtTaxiwaySignLetter > TaxiwaySignSide
Definition: DtTaxiwaySignManager.h:95
std::map< unsigned int, std::string > myTaxiwaySignModelDefinitions
Definition: DtTaxiwaySignManager.h:263
boost::signal< void(DtRunwayData &)> signal_RunwayDestroyed
signal when the DtRunwayNode is deleted Need this for distance remaining signs
Definition: DtTaxiwaySignManager.h:83
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
DtDe & myDe
Definition: DtTaxiwaySignManager.h:55
std::string myDefaultTaxiwaySignModelDefinition
Definition: DtTaxiwaySignManager.h:264
A class which contains the signals used by the DtTaxiwaySignManager classes.
Definition: DtTaxiwaySignManager.h:62
std::string apt_icao
Definition: DtTaxiwaySignManager.h:38
boost::unordered_map< DtUniqueID, std::vector< DtOsgArticulatedModel * > > RunwaySignMap
Definition: DtTaxiwaySignManager.h:101
voidpf void uLong size
Definition: ioapi.h:39
unsigned int myTaxiwaySignModelMaxSegments
Definition: DtTaxiwaySignManager.h:265
Definition: DtTextureAtlasIndexParser.h:23
RunwaySignPlacement
Definition: DtTaxiwaySignManager.h:112
DtDe & myDe
Definition: DtTaxiwaySignManager.h:244
Contains makVrv::DtDe class.
unsigned int myTaxiwaySignModelLettersPerSegment
Definition: DtTaxiwaySignManager.h:266
An articulated model manipulator for controlling an articulated model.
Definition: DtOsgArticulatedModel.h:56
DtLockedBufferedQueue< DtRunwayData > myRunwayDataLockedQueue
Definition: DtTaxiwaySignManager.h:250
Contains makVrv::DtLockedBufferedQueue class.
Connect DtAerodromeRenderer with the DtTaxiwaySignManager.
Definition: DtTaxiwaySignManager.h:47
SceneObjectMap mySceneObjs
Definition: DtTaxiwaySignManager.h:261
Definition: DtTaxiwaySignParser.h:18
boost::signal< void(DtTaxiwaySignData &)> signal_TaxiwaySignDeleted
Definition: DtTaxiwaySignManager.h:237
DtTaxiwaySignParser * mySignParser
Definition: DtTaxiwaySignManager.h:246
DtLockedBufferedQueue< DtTaxiwaySignData > mySignDataLockedQueue
Definition: DtTaxiwaySignManager.h:249
A locked buffered queue which allows multiple writers and a single reader.
Definition: DtLockedBufferedQueue.h:27
Contains makVrv::DtVirtualBaseClass class.
boost::signal< void(DtTaxiwaySignData &)> signal_TaxiwaySignCreated
signal when the DtTaxiwaySignNode is created
Definition: DtTaxiwaySignManager.h:72
boost::unordered_map< DtUniqueID, DtOsgArticulatedModel * > TaxiwaySignsMap
Definition: DtTaxiwaySignManager.h:98
DtSignalConnectionManager myConnections
Definition: DtTaxiwaySignManager.h:245
Definition: DtTaxiwaySignManager.h:108
DtTaxiwaySignSignaler & myTaxiwaySignSignaler
Definition: DtTaxiwaySignManager.h:57
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
boost::signal< void(DtTaxiwaySignData &)> signal_TaxiwaySignDeleted
signal when the DtTaxiwaySignNode is deleted
Definition: DtTaxiwaySignManager.h:75
DtTaxiwaySignData mySignData
Definition: DtTaxiwaySignManager.h:56
RunwaySignMap myRunwaySigns
Definition: DtTaxiwaySignManager.h:257
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
RunwaySignType
Definition: DtTaxiwaySignManager.h:106
std::vector< DtRunwayData > myRunwayCreationVector
Definition: DtTaxiwaySignManager.h:269
DtVector location
Definition: DtTaxiwaySignManager.h:42
Base class to provide boost signal/slot management.
Contains makVrv::DtUniqueID type.
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::vector< DtTaxiwaySignData > myTaxiSignCreationVector
Definition: DtTaxiwaySignManager.h:268
boost::signal< void(DtRunwayData &)> signal_RunwayCreated
signal when the DtRunwayNode is created Need this for distance remaining signs
Definition: DtTaxiwaySignManager.h:79
The elements that make up a taxiway sign.
Definition: DtTaxiwaySignManager.h:36
Definition: DtRunwayMarkingManager.h:40
TaxiwaySignsMap myTaxiwaySigns
Definition: DtTaxiwaySignManager.h:252
double heading
Definition: DtTaxiwaySignManager.h:41

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)