VR-Forces 5.0.2 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) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDriver.h>
13 #include <vrvVrl/DtConnection.h>
14 
15 #include <vl/entityPublisher.h>
16 
17 #include <boost/unordered_map.hpp>
18 #include <boost/function.hpp>
19 
21 class DtExerciseConn;
22 class DtStealthControlPdu;
23 
24 #ifndef DT_PROTOCOL_NAMESPACE
25 #error Namespace Protocol Macro DT_PROTOCOL_NAMESPACE not defined.
26 #endif
27 
28 #if DtHLA
29 #include <vl/geodeticRegion.h>
30 #endif
31 
32 namespace makVrv
33 {
34  class DtVrlinkDriver;
35 
36  namespace DT_PROTOCOL_NAMESPACE
37  {
39 
43  {
44  public:
45 
48  const DtCoordinateSystem& coordSystem,
49  const DtEntityAppearanceMapperFactoryCreator& appFactoryCreator,
50  DtSharedSettingsManager& settingsManager,
51  DtVrlinkDriver& driver);
52 
54  virtual ~DtVrlinkConnection();
55 
57  virtual void setExerciseConnInit(const DtExerciseConnInitializer& exConnInitializer);
58 
63  virtual bool connect();
64 
66  virtual bool connected() const;
67 
72  virtual bool disconnect();
73 
75  virtual void tick(double dt);
76 
78  virtual double simTime() const;
79 
81  virtual void setSimTime(double simTime);
82 
84  virtual double clockTime() const;
85 
87  virtual DtTimeStampType timeStampType() const;
88 
89 
91  virtual void setViewControlChanged( bool enabled );
92 
95  virtual void setUseTopoForFlatEarthVectorConversion( bool enabled );
96 
99  virtual void setConnectionFrameTime( double frameTime );
100 
103  virtual double connectionFrameTime() const;
104 
106  virtual void observerUpdated(const std::string& name,
107  double x, double y, double z,
108  double psi, double theta, double phi);
109 
110  virtual void observerUpdated(const std::string& observerName,
111  double x, double y, double z,
112  double psi, double theta, double phi,
113  double dx, double dy, double dz,
114  double dpsi, double dtheta, double dphi);
115 
117  virtual void stopPublishingObserver(const std::string& observerName);
118 
120  virtual void startPublishingObserver(const std::string& observerName);
121 
123  virtual void queueDriverFunction(boost::function<void()> func);
124 
128  virtual void queueConnectionFunction(boost::function<void()> func);
129 
132  virtual DtVrlinkDriver& vrlinkDriver();
133  virtual const DtVrlinkDriver& vrlinkDriver() const;
134 
136  inline DtExerciseConn* exerciseConn()
137  {
138  return myExerciseConnection;
139  }
140 
142  virtual const std::string& tag()
143  {
144 #ifdef DtDIS
145  const static std::string str("DIS");
146 #elif DtHLA_1516_EVOLVED
147  const static std::string str("HLA1516e");
148 #elif DtHLA_1516
149  const static std::string str("HLA1516");
150 #elif DtHLA
151  const static std::string str("HLA13");
152 #else
153  const static std::string str("");
154 #endif
155  return str;
156  }
157 
158 
159 #if DtHLA
160  inline const DtDDMRegionSet& regions() const
161  {
162  return myRegions;
163  }
164 
165  virtual void addDdmRegionForObserver(const std::string& observerName);
166 
167  virtual void removeDdmRegionForObserver(const std::string& observerName);
168 
170  virtual void setDdmRegionSize(int sizeInMeters);
171 
172  virtual void setRegionUpdateThreshold(int percentage);
173 
174  virtual void setUseAltitudeThreshold(bool yesNo);
175 
176  virtual void setAltitudeThreshold(int meters);
177 
178  virtual void updateDdmRegion(const std::string& observerName,
179  const DtVector& observerLocation);
180 
181  virtual void setRegionOutOfBounds(DtDDMRegionSP region);
182 
183  boost::signalslib::signal<void (DtDDMRegionSP)> signal_regionAdded;
184  boost::signalslib::signal<void (DtDDMRegionSP)> signal_regionToBeRemoved;
185 
186 #endif
187 
188 #if DtDIS
189  //Check to see if entity is published by this simulation.
190  bool entityIsPublished(const DtEntityIdentifier& id) const;
191 
193  virtual bool timeoutProcessing() const;
194 
196  virtual void setTimeoutProcessing(bool enabled);
197 
199  virtual double timeoutInterval() const;
200 
202  virtual void setTimeoutInterval(double interval);
203 #endif
204 
207  void setSupportsDelayedVisualizerCreation(bool);
208  bool supportsDelayedVisualizerCreation() const;
209 
214  boost::signalslib::signal<void()> signal_exerciseConnectionCreated;
215 
217  boost::signalslib::signal<void ()> signal_preTick;
218 
220  boost::signalslib::signal<void ()> signal_postTick;
221 
222  protected:
223 
225  void addObserverPublisher(const std::string& observerName);
226 
227  protected:
228 
229  typedef boost::unordered_map<std::string, DtEntityPublisher*>
231 
232  //Exercise Connection settings.
234 
236 
237  //Active connection
238  DtExerciseConn* myExerciseConnection;
239 
240 #if DtHLA
241  bool initializeDdm();
242 
243  DtDDMRegionSet myRegions;
244 
245  struct RegionInfo
246  {
247  DtGeodeticRegionSP region;
250  };
251 
252  typedef boost::unordered_map<std::string, RegionInfo> ObserverRegions;
258 #endif
259 
260 #if DtDIS
263 #endif
264 
265 
266  //Publishers for observers
272 
275  };
276  }
277 }
Creator for DtEntityAppearanceMapperFactory class.
Definition: DtEntityAppearanceMapperFactory.h:82
The base class for protocol specific VRLink Simulations.
Definition: DtConnection.h:43
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
#define DL_DLL_IGCONVRLINK
Definition: dllExport.h:26
#define DT_PROTOCOL_NAMESPACE
Contains DLL export macros.
Definition: vrfDis.h:17
Contains makVrv::DtConnection class.
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 Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)