VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtLightIndicatorManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvCore/DtDe.h>
12 #include <vrvCore/DtUniqueID.h>
13 #include <vrvOsg/vrvOsg.h>
17 #include <matrix/vlVector.h>
18 #include <osg/Group>
19 #include <unordered_map>
20 
21 namespace makVrv
22 {
23  class DtOsgArticulatedModel;
24  class DtSceneObject;
25  class DtLightIndicatorSignaler;
26  class DtCoordinateSystem;
27 
30  {
31  std::string apt_icao;
32  std::string runway_num;
33  double heading;
34  std::string light_type;
35  double glide_angle;
37  };
38 
40  // via DtLightIndicatorSignaler
41  class DT_DLL_VRVOSG DtLightIndicatorNode : public osg::Group
42  {
43  public:
44  DtLightIndicatorNode(DtDe& de, DtLightIndicatorData& signData, DtLightIndicatorSignaler& lightIndicatorSignaler);
45 
46  virtual ~DtLightIndicatorNode();
47 
48  public:
52  };
53 
57  {
58  public:
60  static DtLightIndicatorSignaler& instance(DtDe& anIG);
61 
63  virtual ~DtLightIndicatorSignaler();
64 
66  boost::signalslib::signal<void ( DtLightIndicatorData& )> signal_LightIndicatorCreated;
67 
69  boost::signalslib::signal<void ( DtLightIndicatorData& )> signal_LightIndicatorDeleted;
70 
71  protected:
72 
74 
75  };
76 
78  {
79  public:
80 
81  typedef std::unordered_map<DtUniqueID, DtOsgArticulatedModel* >
83 
84  typedef std::unordered_map<DtUniqueID, DtSceneObject* >
86 
88  static DtLightIndicatorManager& instance(DtDe& anIG);
89 
91  virtual ~DtLightIndicatorManager();
92 
94  virtual void slot_LightIndicatorCreated(DtLightIndicatorData& lightIndicatorData);
95 
97  virtual void slot_LightIndicatorDestroyed(DtLightIndicatorData& lightIndicatorData);
98 
100  virtual std::size_t hashPos(DtVector& pos);
101 
103  virtual void setModelDefinitionForType(std::string& light_type, const std::string& modelDef);
104 
107  virtual void clearModelDefinitionForType(std::string& light_type);
108 
110  // default is SignLightIndicator
111  virtual void setDefaultModelDefinition(const std::string& modelDef);
112 
115  virtual void updateLightIndicatorManager(const float budgetMs);
116 
119  virtual void createLightIndicator(DtLightIndicatorData& signData);
120 
122  DtVector geodeticToCig(const DtVector& pos) const;
123 
124  public:
125 
126  boost::signalslib::signal<void ( DtLightIndicatorData& )> signal_LightIndicatorDeleted;
127  boost::signalslib::signal<void ( DtLightIndicatorData& )> signal_LightIndicatorCreated;
128 
129  protected:
131  virtual void slot_coordinateSystemChanged();
132 
133  protected:
134 
136 
139  // For creating DtOsgArticulated models on the main thread
141 
143  // The signs are DtOsgArticulatedModels, they are put under a DtSceneObject
144  // so that they work when instancing is off
145  // The DtSceneObject doesn't have the transform, the articulated model does
147 
148  std::map<std::string, std::string> myLightIndicatorModelDefinitions;
150  std::vector<DtLightIndicatorData> myLightIndicatorCreateVector;
151 
154  DtCoordinateSystem* myCoordinateSystem = nullptr;
155  };
156 }
std::string light_type
Definition: DtLightIndicatorManager.h:34
DtLockedBufferedQueue< DtLightIndicatorData > myLightIndicatorDataLockedQueue
Definition: DtLightIndicatorManager.h:140
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A class which contains the signals used by the DtLightIndicatorManager classes.
Definition: DtLightIndicatorManager.h:56
SceneObjectMap mySceneObjs
Definition: DtLightIndicatorManager.h:146
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
The elements that make up a taxiway sign.
Definition: DtLightIndicatorManager.h:29
double heading
Definition: DtLightIndicatorManager.h:33
Contains makVrv::DtDe class.
std::string apt_icao
Definition: DtLightIndicatorManager.h:31
Contains makVrv::DtLockedBufferedQueue class.
DtDe & myDe
Definition: DtLightIndicatorManager.h:49
Definition: DtLightIndicatorManager.h:77
std::vector< DtLightIndicatorData > myLightIndicatorCreateVector
Definition: DtLightIndicatorManager.h:150
A locked buffered queue which allows multiple writers and a single reader. Internally the queue is st...
Definition: DtLockedBufferedQueue.h:24
Contains makVrv::DtVirtualBaseClass class.
DtVector location
Definition: DtLightIndicatorManager.h:36
double glide_angle
Definition: DtLightIndicatorManager.h:35
std::map< std::string, std::string > myLightIndicatorModelDefinitions
Definition: DtLightIndicatorManager.h:148
std::string myDefaultLightIndicatorModelDefinition
Definition: DtLightIndicatorManager.h:149
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::unordered_map< DtUniqueID, DtSceneObject * > SceneObjectMap
Definition: DtLightIndicatorManager.h:85
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
Base class to provide boost signal/slot management.
std::unordered_map< DtUniqueID, DtOsgArticulatedModel * > LightIndicatorsMap
Definition: DtLightIndicatorManager.h:82
Contains makVrv::DtUniqueID type.
Contains DLL export macros.
boost::signalslib::signal< void(DtLightIndicatorData &)> signal_LightIndicatorCreated
signal when the DtLightIndicatorNode is created
Definition: DtLightIndicatorManager.h:66
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
Connect DtAerodromeRenderer with the DtLightIndicatorManager.
Definition: DtLightIndicatorManager.h:41
boost::signalslib::signal< void(DtLightIndicatorData &)> signal_LightIndicatorDeleted
Definition: DtLightIndicatorManager.h:126
LightIndicatorsMap myLightIndicators
Definition: DtLightIndicatorManager.h:142
boost::signalslib::signal< void(DtLightIndicatorData &)> signal_LightIndicatorCreated
Definition: DtLightIndicatorManager.h:127
DtSignalConnectionManager myConnections
Definition: DtLightIndicatorManager.h:138
DtLightIndicatorSignaler & myLightIndicatorSignaler
Definition: DtLightIndicatorManager.h:51
boost::signalslib::signal< void(DtLightIndicatorData &)> signal_LightIndicatorDeleted
signal when the DtLightIndicatorNode is deleted
Definition: DtLightIndicatorManager.h:69
DtDe & myDe
Definition: DtLightIndicatorManager.h:137
DtLightIndicatorData mySignData
Definition: DtLightIndicatorManager.h:50
std::string runway_num
Definition: DtLightIndicatorManager.h:32

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)