VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVrlinkConnection.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2025 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDriver.h>
14 
15 #include <vl/entityPublisher.h>
16 
17 #include <unordered_map>
18 #include <boost/function.hpp>
19 
21 class DtExerciseConnInitializer;
22 class DtExerciseConn;
23 class DtStealthControlPdu;
24 
25 #ifndef DT_PROTOCOL_NAMESPACE
26 #error Namespace Protocol Macro DT_PROTOCOL_NAMESPACE not defined.
27 #endif
28 
29 #if DtHLA
30 #include <vl/geodeticRegion.h>
31 #endif
32 
33 namespace makVrv
34 {
35  class DtVrlinkDriver;
36 
37  namespace DT_PROTOCOL_NAMESPACE
38  {
40 
44  {
45  public:
46 
49  const DtCoordinateSystem& coordSystem,
50  const DtEntityAppearanceMapperFactoryCreator& appFactoryCreator,
51  DtSharedSettingsManager& settingsManager,
52  DtVrlinkDriver& driver);
53 
55  virtual ~DtVrlinkConnection();
56 
58  virtual void setExerciseConnInit(const DtVrlApplicationInitializer& exConnInitializer);
59 
64  virtual bool connect();
65 
67  virtual bool connected() const;
68 
73  virtual bool disconnect();
74 
76  virtual void tick(double dt);
77 
79  virtual double simTime() const;
80 
82  virtual void setSimTime(double simTime);
83 
85  virtual double clockTime() const;
86 
88  virtual DtTimeStampType timeStampType() const;
89 
90 
92  virtual void setViewControlChanged( bool enabled );
93 
96  virtual void setUseTopoForFlatEarthVectorConversion( bool enabled );
97 
100  virtual void setConnectionFrameTime( double frameTime );
101 
104  virtual double connectionFrameTime() const;
105 
107  virtual void observerUpdated(const std::string& name,
108  double x, double y, double z,
109  double psi, double theta, double phi);
110 
113  virtual void observerUpdated(const std::string& observerName,
114  double x, double y, double z,
115  double psi, double theta, double phi,
116  double dx, double dy, double dz,
117  double dpsi, double dtheta, double dphi);
118 
120  virtual void stopPublishingObserver(const std::string& observerName);
121 
123  virtual void startPublishingObserver(const std::string& observerName);
124 
126  virtual void queueDriverFunction(boost::function<void()> func);
127 
131  virtual void queueConnectionFunction(boost::function<void()> func);
132 
135  virtual DtVrlinkDriver& vrlinkDriver();
136  virtual const DtVrlinkDriver& vrlinkDriver() const;
137 
139  inline DtExerciseConn* exerciseConn()
140  {
141  return myExerciseConnection;
142  }
143 
145  virtual const std::string& tag()
146  {
147 #ifdef DtDIS
148  const static std::string str("DIS");
149 #elif DtHLA_4
150  const static std::string str("HLA4");
151 #elif DtHLA_1516_EVOLVED
152  const static std::string str("HLA1516e");
153 #elif DtHLA_1516
154  const static std::string str("HLA1516");
155 #elif DtHLA
156  const static std::string str("HLA13");
157 #else
158  const static std::string str("");
159 #endif
160  return str;
161  }
162 
163 
164 #if DtHLA
165  inline const DtDDMRegionSet& regions() const
166  {
167  return myRegions;
168  }
169 
170  virtual void addDdmRegionForObserver(const std::string& observerName);
171 
172  virtual void removeDdmRegionForObserver(const std::string& observerName);
173 
175  virtual void setDdmRegionSize(int sizeInMeters);
176 
177  virtual void setRegionUpdateThreshold(int percentage);
178 
179  virtual void setUseAltitudeThreshold(bool yesNo);
180 
181  virtual void setAltitudeThreshold(int meters);
182 
183  virtual void updateDdmRegion(const std::string& observerName,
184  const DtVector& observerLocation);
185 
186  virtual void setRegionOutOfBounds(DtDDMRegionSP region);
187 
188  boost::signalslib::signal<void (DtDDMRegionSP)> signal_regionAdded;
189  boost::signalslib::signal<void (DtDDMRegionSP)> signal_regionToBeRemoved;
190 
191 #endif
192 
193 #if DtDIS
194  //Check to see if entity is published by this simulation.
195  bool entityIsPublished(const DtEntityIdentifier& id) const;
196 
198  virtual bool timeoutProcessing() const;
199 
201  virtual void setTimeoutProcessing(bool enabled);
202 
204  virtual double timeoutInterval() const;
205 
207  virtual void setTimeoutInterval(double interval);
208 #endif
209 
212  void setSupportsDelayedVisualizerCreation(bool);
213  bool supportsDelayedVisualizerCreation() const;
214 
219  boost::signalslib::signal<void()> signal_exerciseConnectionCreated;
220  protected:
221 
223  void addObserverPublisher(const std::string& observerName);
224 
225  protected:
226 
227  typedef std::unordered_map<std::string, DtEntityPublisher*>
229 
230  //Exercise Connection settings.
231  DtExerciseConnInitializer* myExConnInitializer;
232 
234 
235  //Active connection
236  DtExerciseConn* myExerciseConnection;
237 
238 #if DtHLA
239  bool initializeDdm();
240 
241  DtDDMRegionSet myRegions;
242 
243  struct RegionInfo
244  {
245  DtGeodeticRegionSP region;
248  };
249 
250  typedef std::unordered_map<std::string, RegionInfo> ObserverRegions;
256 #endif
257 
258 #if DtDIS
261 #endif
262 
263 
264  //Publishers for observers
270 
273  };
274  }
275 }
Creator for DtEntityAppearanceMapperFactory class.
Definition: DtEntityAppearanceMapperFactory.h:83
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
#define DT_PROTOCOL_NAMESPACE
Contains defines and includes header files for protocols.
Definition: vrfProtocol.h:13
#define DL_DLL_IGCONVRLINK
Definition: dllExport.h:26
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv:DtDriver class.
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)