VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
remoteEnvironmentController.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
13 #include <vlutil/vlString.h>
14 #include <vrfutil/rwUUID.h>
15 #include <matrix/vlVector.h>
17 #include <boost/signals2.hpp>
18 
19 #include <map>
20 
23 
24 namespace makVrf
25 {
26  class DtExternalCurrentFrameState;
27  class DtStateData;
28  class DtTimeAndDateStateComponent;
29 }
30 
32 typedef DtRemoteEnvironmentController* (*DtRemoteEnvironmentControllerCreatorFcn)();
33 
43 
45 
49 {
50 public:
53 
56 
60  virtual void init(DtCommunicationManager* msgIf, DtVrfMessageInterface*, int sessionId);
61 
65  bool reflectingCurrentWeatherState();
66 
69  {
70  return myGlobalWeatherSR;
71  }
72 
74 
75  virtual void setAmbientAirTemperature(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
77  virtual double ambientAirTemperature(const DtVector& geocentricLocation);
79 
81 
82  virtual void setPrecipitationIntensity(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
84  virtual double precipitationIntensity(const DtVector& geocentricLocation);
86 
88 
89  virtual void setPrecipitationType(int, const DtUUID& weatherArea = DtUUID::nullUUID());
91  virtual int precipitationType(const DtVector& geocentricLocation);
93 
95 
96  virtual void setWindSpeed(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
98  virtual double windSpeed(const DtVector& geocentricLocation);
100 
102 
103  virtual void setWindDirection(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
105  virtual double windDirection(const DtVector& geocentricLocation);
107 
109 
110  virtual void setVisibilityAndObscurant(double visibility, int obscurant, const DtUUID& weatherArea = DtUUID::nullUUID());
113  virtual bool visibilityAndObscurant(const DtVector& geocentricLocation, double& visibility, int& obscurant);
115 
118 
119  virtual void setTimeOfDay(double secondsPastMidnight);
121  virtual double timeOfDay();
123 
126 
127  virtual void setDateAndTimeOfDay(double secondsPastUtc);
128  virtual void setDateAndTimeOfDay(int year, int month, int day, int hours, int minutes, int seconds);
129 
131  virtual double dateAndTimeOfDay();
132  virtual void dateAndTimeOfDay(int& year, int& month, int& day, int& hours, int& minutes, int& seconds);
134 
136  virtual void setUseDayNightIlluminationModel(bool value);
137 
139 
140  virtual void setTimeOfDayAdvancementSpeed(double speed);
142  virtual double timeOfDayAdvancementSpeed();
144 
146 
147  virtual void setLightningPresent(bool isPresent, const DtUUID& weatherArea = DtUUID::nullUUID());
148  virtual bool lightningPresent(const DtVector& geocentricLocation) const;
150 
152 
153  virtual void setUnderwaterVisibility(double underwaterVisibility, const DtUUID& weatherArea = DtUUID::nullUUID());
154  virtual double underwaterVisibility(const DtVector& geocentricLocation);
156 
158 
159  virtual void setSurfaceTransparency(double transparency, const DtUUID& weatherArea = DtUUID::nullUUID());
160  virtual double surfaceTransparency(const DtVector& geocentricLocation);
162 
164 
165  virtual void setWaterCurrentSpeed(double waterCurrentSpeed, const DtUUID& weatherArea = DtUUID::nullUUID());
166  virtual double waterCurrentSpeed(const DtVector& geocentricLocation);
168 
170 
171  virtual void setWaterCurrentDirection(double waterCurrentDirection, const DtUUID& weatherArea = DtUUID::nullUUID());
172  virtual double waterCurrentDirection(const DtVector& geocentricLocation);
174 
176 
177  virtual void setAmbientWaterTemperature(double waterTemperature, const DtUUID& weatherArea = DtUUID::nullUUID());
178  virtual double ambientWaterTemperature(const DtVector& geocentricLocation);
180 
182 
183  virtual void setTidalOffset(double tidalOffset, const DtUUID& weatherArea = DtUUID::nullUUID());
184  virtual double tidalOffset(const DtVector& geocentricLocation);
186 
188 
189  virtual void setSwellState(unsigned int state, const DtUUID& weatherArea = DtUUID::nullUUID());
190  virtual unsigned int swellState(const DtVector& geocentricLocation);
192 
194 
195  virtual void setSwellStateDirection(double direction, const DtUUID& weatherArea = DtUUID::nullUUID());
196  virtual double swellStateDirection(const DtVector& geocentricLocation);
198 
201  virtual void setSeaState(unsigned int douglasScale, const DtUUID& weatherArea = DtUUID::nullUUID());
202  virtual unsigned int seaState(const DtVector& geocentricLocation);
204 
207  virtual void setSeaStateDirection(double radiansFromNorth, const DtUUID& weatherArea = DtUUID::nullUUID());
208  virtual double seaStateDirection(const DtVector& geocentricLocation);
210 
213  virtual void setWindDrivenSeaStateEnabled(bool enabled, const DtUUID& weatherArea = DtUUID::nullUUID());
214  virtual bool windDrivenSeaStateEnabled(const DtVector& geocentricLocation);
216 
218 
219  virtual void setChoppiness(double choppiness, const DtUUID& weatherArea = DtUUID::nullUUID());
220  virtual double choppiness(const DtVector& geocentricLocation);
222 
224 
225  virtual void setSurgeDepth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
226  virtual double surgeDepth(const DtVector& geocentricLocation);
228 
231  virtual void setFogColor(const DtVector&, const DtUUID& weatherArea = DtUUID::nullUUID());
232  virtual DtVector fogColor(const DtVector& geocentricLocation);
233 
234  virtual void setFogHeight(double, const DtUUID& weatherArea = DtUUID::nullUUID());
235  virtual double fogHeight(const DtVector& geocentricLocation);
237 
240  virtual void setSnowAccumulation(double, const DtUUID& weatherArea = DtUUID::nullUUID());
241  virtual double snowAccumulation(const DtVector& geocentricLocation);
242 
243  virtual void setSnowMinimumAltitude(double, const DtUUID& weatherArea = DtUUID::nullUUID());
244  virtual double snowMinimumAltitude(const DtVector& geocentricLocation);
245 
246  virtual void setSnowRoadAccumulation(double, const DtUUID& weatherArea = DtUUID::nullUUID());
247  virtual double snowRoadAccumulation(const DtVector& geocentricLocation);
248 
250  virtual void setRainAccumulation(double, const DtUUID& weatherArea = DtUUID::nullUUID());
251  virtual double rainAccumulation(const DtVector& geocentricLocation);
252 
254 
257 
258  virtual void setThermoclineLayer1Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
259  virtual double thermoclineLayer1Depth(const DtVector& geocentricLocation);
260  virtual void setThermoclineLayer1Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
261  virtual double thermoclineLayer1Permeability(const DtVector& geocentricLocation);
262  virtual void setThermoclineLayer2Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
263  virtual double thermoclineLayer2Depth(const DtVector& geocentricLocation);
264  virtual void setThermoclineLayer2Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
265  virtual double thermoclineLayer2Permeability(const DtVector& geocentricLocation);
266  virtual void setThermoclineLayer3Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
267  virtual double thermoclineLayer3Depth(const DtVector& geocentricLocation);
268  virtual void setThermoclineLayer3Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
269  virtual double thermoclineLayer3Permeability(const DtVector& geocentricLocation);
270  virtual void setThermoclineLayer4Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
271  virtual double thermoclineLayer4Depth(const DtVector& geocentricLocation);
272  virtual void setThermoclineLayer4Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
273  virtual double thermoclineLayer4Permeability(const DtVector& geocentricLocation);
274  virtual void setThermoclineLayer5Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
275  virtual double thermoclineLayer5Depth(const DtVector& geocentricLocation);
276  virtual void setThermoclineLayer5Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
277  virtual double thermoclineLayer5Permeability(const DtVector& geocentricLocation);
279 
281  virtual double dT() const;
282 
284 
285  virtual void addGlobalEnvironmentCreatedCallback(
287  virtual void removeGlobalEnvironmentCreatedCallback(
289  virtual void invokeGlobalWeatherCreatedCallbacks();
291 
292  static DtRemoteEnvironmentControllerCreatorFcn setRemoteEnvironmentControllerCreatorFcn(DtRemoteEnvironmentControllerCreatorFcn);
293  static DtRemoteEnvironmentController* createRemoteEnvironmentController();
294  static DtRemoteEnvironmentControllerCreatorFcn remoteEnvironmentControllerCreatorFcn();
295 
296 protected:
297 
299  template<typename WeatherStateType>
300  const WeatherStateType* weatherStateFor(const DtVector& geocentricLocation) const;
301 
303  virtual bool inside(const DtVector&, const std::vector<DtVector>&) const;
304 
305  virtual void processEnvironmentProcessAdded(makVrf::DtStateData*);
306  virtual void processEnvironmentProcessRemoved(const makVrf::DtStateData*);
307 
308  virtual void updateGlobalEnvironment();
309 
310 protected:
313 
314  typedef std::map<DtUUID, const makVrf::DtExternalCurrentFrameState*> WeatherObjects;
316 
320 
323 
326  boost::signals2::scoped_connection myEnvironmentalAddedConnection;
327  boost::signals2::scoped_connection myEnvironmentalRemovedConnection;
328  boost::signals2::scoped_connection myGlobalEnvironmentUpdatedCallback;
329 };
const makVrf::DtExternalCurrentFrameState * globalEnvironment() const
The current global environment.
Definition: remoteEnvironmentController.h:68
UUID is a unique ID wrapper class.
Definition: uuid.h:59
static DtRemoteEnvironmentControllerCreatorFcn theRemoteEnvironmentControllerCreatorFcn
Definition: remoteEnvironmentController.h:325
#define DT_DLL_vrfcontrol
This file is used to determine how to build.
Definition: vrfcontrolDefines.h:28
boost::signals2::scoped_connection myEnvironmentalAddedConnection
Definition: remoteEnvironmentController.h:326
boost::signals2::scoped_connection myEnvironmentalRemovedConnection
Definition: remoteEnvironmentController.h:327
const makVrf::DtTimeAndDateStateComponent * myTimeAndDateStateComponent
Definition: remoteEnvironmentController.h:318
Contains the DtUUID class declaration.
double myLastTimeReceived
Definition: remoteEnvironmentController.h:321
DtCommunicationManager * myCommunicationManager
Definition: remoteEnvironmentController.h:311
DT_DLL_vrfutil bool inside(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Determine if the given localPoint is inside the polygon defined by the given localVertexList.
DtGlobalWeatherCreatedCallbackList myGlobalEnvironmentCreated
Definition: remoteEnvironmentController.h:324
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: timeAndDateStateComponent.h:79
static const DtUUID & nullUUID()
boost::signals2::scoped_connection myGlobalEnvironmentUpdatedCallback
Definition: remoteEnvironmentController.h:328
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
DtCallbackList< const makVrf::DtExternalCurrentFrameState * > DtGlobalWeatherCreatedCallbackList
DtRemoteEnvironmentController allows the user to interrogate the back-end which is simulating the env...
Definition: remoteEnvironmentController.h:44
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:54
DtRemoteEnvironmentController *(* DtRemoteEnvironmentControllerCreatorFcn)()
Definition: remoteEnvironmentController.h:32
Definition: stateData.h:301
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtVrfMessageInterface * myMessageInterface
Definition: remoteEnvironmentController.h:312
void(* DtCallbackFunctionType)(const makVrf::DtExternalCurrentFrameState *, void *)
The function signature of the callback function.
Definition: noArgumentCallbackList.h:94
DtRemoteEnvironmentController; remotely controls and reflects the weather state of VR-Forces...
Definition: remoteEnvironmentController.h:48
WeatherObjects myWeatherObjects
Definition: remoteEnvironmentController.h:315
std::map< DtUUID, const makVrf::DtExternalCurrentFrameState * > WeatherObjects
Definition: remoteEnvironmentController.h:314
const makVrf::DtExternalCurrentFrameState * myGlobalWeatherSR
Definition: remoteEnvironmentController.h:317
DtUUID myGlobalWeatherUUID
Definition: remoteEnvironmentController.h:319
int mySessionId
Definition: remoteEnvironmentController.h:322
Definition: vrfMessageInterface.h:40

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)