VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
environmentalStateManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 #include <vlutil/vlString.h>
18 #include <matrix/vlVector.h>
19 #include <vrfutil/rwUUID.h>
22 
23 #include <set>
24 
25 class DtSimManager;
26 class DtVrfObject;
27 class DtObjectType;
32 class DtChord;
33 class DtSimMessage;
34 
42 {
43 private:
45 
48  orig);
51 
52 public:
53 
56 
58  virtual ~DtEnvironmentalStateManager();
59 
60  virtual bool init();
61 
62  virtual void tick();
63 
64  virtual DtSimManager* simManager();
65 
68  virtual bool globalEnvironmentSimulatedLocally() const;
69 
74  virtual bool startEnvironmentSimulationLocally();
75 
77  virtual DtSharedVrfObjectReference weatherObjectFor(const DtUUID& = DtUUID::nullUUID(),
78  bool* isGlobal = 0) const;
79 
82  virtual DtSharedVrfObjectReference weatherObjectFor(const DtVector& localPosition,
83  bool* isGlobal = 0) const;
84 
87  virtual std::vector<DtSharedVrfObjectReference> weatherObjectsFor(const DtChord& localChord) const;
88 
90  virtual DtSharedVrfObjectReference weatherObjectFor(const DtChord& localChord,
91  bool* isGlobal = 0) const;
92 
94  virtual DtSharedVrfObjectReference cloudLayerFor(const DtUUID&) const;
95 
97  virtual DtSharedVrfObjectReference cloudLayerFor(const DtVector& localPosition) const;
98 
100  virtual DtSharedVrfObjectReference cloudLayerFor(const DtChord& localChord) const;
101 
103  virtual std::vector<DtSharedVrfObjectReference> cloudLayersFor(const DtChord& localChord) const;
104 
106  virtual std::vector<DtSharedVrfObjectReference> cloudLayers() const;
108  virtual void setCloudType(CloudLayerCloudType, const DtUUID& cloudLayer);
109  virtual CloudLayerCloudType cloudType(const DtUUID& cloudLayer) const;
110  virtual CloudLayerCloudType cloudType(const DtVector& cloudLayer) const;
111 
112  virtual void setCloudAltitude(double, const DtUUID& cloudLayer);
113  virtual double cloudAltitude(const DtUUID& cloudLayer) const;
114  virtual double cloudAltitude(const DtVector& cloudLayer) const;
115 
116  virtual void setCloudThickness(double, const DtUUID& cloudLayer);
117  virtual double cloudThickness(const DtUUID& cloudLayer) const;
118  virtual double cloudThickness(const DtVector& cloudLayer) const;
119 
120  virtual void setCornerRadius(double, const DtUUID& cloudLayer);
121  virtual double cornerRadius(const DtUUID& cloudLayer) const;
122  virtual double cornerRadius(const DtVector& cloudLayer) const;
123 
124  virtual void setCloudDensity(double, const DtUUID& cloudLayer);
125  virtual double cloudDensity(const DtUUID& cloudLayer) const;
126  virtual double cloudDensity(const DtVector& cloudLayer) const;
127 
128  virtual void setCloudBox(const DtVector& center, double width, double length, const DtUUID& cloudLayer);
129  virtual void cloudBox(const DtUUID& cloudLayer, DtVector& center, double& width, double& length) const;
130  virtual void cloudBox(const DtVector& cloudLayer, DtVector& center, double& width, double& length) const;
131 
134  virtual void setCloudLayerState(const DtChangeCloudLayerCommand& command);
135 
137 
140 
141  virtual void setAirTurbidity(double factor, const DtUUID& weatherArea = DtUUID::nullUUID());
142  virtual double airTurbidity(const DtUUID& weatherArea) const;
143  virtual double airTurbidity(const DtVector&) const;
145 
147 
148  virtual void setAmbientAirTemperature(double temp, const DtUUID& weatherArea = DtUUID::nullUUID());
149  virtual double ambientAirTemperature(const DtUUID& weatherArea) const;
150  virtual double ambientAirTemperature(const DtVector&) const;
152 
154 
155  virtual void setCloudState(DtVrfWeatherCloudState current, const DtUUID& weatherArea = DtUUID::nullUUID());
156  virtual DtVrfWeatherCloudState cloudState(const DtUUID& weatherArea) const;
157  virtual DtVrfWeatherCloudState cloudState(const DtVector&) const;
159 
161 
162  virtual void setPrecipitationIntensity(double factor, const DtUUID& weatherArea = DtUUID::nullUUID());
163  virtual double precipitationIntensity(const DtUUID& weatherArea) const;
164  virtual double precipitationIntensity(const DtVector&) const;
166 
169 
170  virtual double precipitationIntensity(const DtChord&) const;
172 
174 
175  virtual void setPrecipitationType(DtVrfWeatherPrecipitationType current, const DtUUID& weatherArea = DtUUID::nullUUID());
176  virtual DtVrfWeatherPrecipitationType precipitationType(const DtUUID& weatherArea) const;
177  virtual DtVrfWeatherPrecipitationType precipitationType(const DtVector&) const;
179 
181 
182  virtual void setWindSpeed(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
183  virtual double windSpeed(const DtUUID& weatherArea) const;
184  virtual double windSpeed(const DtVector&) const;
186 
188 
189  virtual void setWindDirection(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
190  virtual double windDirection(const DtUUID& weatherArea) const;
191  virtual double windDirection(const DtVector&) const;
193 
195 
196  virtual void setVisibility(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
197  virtual double visibility(const DtUUID& weatherArea) const;
198  virtual double visibility(const DtVector&) const;
199 
202  virtual double visibility(const DtChord&) const;
204 
207  virtual double illumination(const DtVector& localPosition) const;
208 
212  virtual double expectedIllumination(const DtVector& localPosition, double dateAndTime) const;
213 
216  virtual void setWeatherState(const DtChangeWeatherCommand& command);
217 
220  virtual void setUseDayNightIlluminationModel(const DtChangeTimeOfDayCommand& command);
221  virtual void setDateAndTimeOfDay(double secondsPastMidnight);
222  virtual void setDateAndTimeOfDay(const DtChangeTimeOfDayCommand& command);
223  virtual double timeOfDay() const;
224  virtual double dateAndTimeOfDay() const;
225 
227  virtual void setTimeOfDayAdvancementSpeed(double speed);
228  virtual void setTimeOfDayAdvancementSpeed(const DtChangeTimeOfDayCommand& command);
229  virtual double timeOfDayAdvancementSpeed() const;
230 
232 
233  virtual void setPriority(int p, const DtUUID& weatherArea = DtUUID::nullUUID());
234  virtual int priority(const DtUUID& weatherArea) const;
235  virtual int priority(const DtVector&) const;
237 
239 
240  virtual void setUnderwaterVisibility(double underwaterVisibility, const DtUUID& weatherArea = DtUUID::nullUUID());
241  virtual double underwaterVisibility(const DtUUID& weatherArea) const;
242  virtual double underwaterVisibility(const DtVector&) const;
244 
246 
247  virtual void setSurfaceTransparency(double transparency, const DtUUID& weatherArea = DtUUID::nullUUID());
248  virtual double surfaceTransparency(const DtUUID& weatherArea) const;
249  virtual double surfaceTransparency(const DtVector&) const;
251 
253 
254  virtual void setWaterCurrentSpeed(double waterCurrentSpeed, const DtUUID& weatherArea = DtUUID::nullUUID());
255  virtual double waterCurrentSpeed(const DtUUID& weatherArea) const;
256  virtual double waterCurrentSpeed(const DtVector&) const;
258 
260 
261  virtual void setWaterCurrentDirection(double waterCurrentDirection, const DtUUID& weatherArea = DtUUID::nullUUID());
262  virtual double waterCurrentDirection(const DtUUID& weatherArea) const;
263  virtual double waterCurrentDirection(const DtVector&) const;
265 
267 
268  virtual void setAmbientWaterTemperature(double waterTemperature, const DtUUID& weatherArea = DtUUID::nullUUID());
269  virtual double ambientWaterTemperature(const DtUUID& weatherArea) const;
270  virtual double ambientWaterTemperature(const DtVector&) const;
272 
274 
275  virtual void setTidalOffset(double tidalOffset, const DtUUID& weatherArea = DtUUID::nullUUID());
276  virtual double tidalOffset(const DtUUID& weatherArea) const;
277  virtual double tidalOffset(const DtVector&) const;
279 
283  virtual void setUseDayNightIlluminationModel(bool);
284  virtual bool useDayNightIlluminationModel() const;
286 
289 
290  virtual void setTidalDirection(bool tidalDirection, const DtUUID& weatherArea = DtUUID::nullUUID());
291  virtual bool tidalDirection(const DtUUID& weatherArea) const;
292  virtual bool tidalDirection(const DtVector&) const;
294 
296 
297  virtual void setSwellState(unsigned int state, const DtUUID& weatherArea = DtUUID::nullUUID());
298  virtual unsigned int swellState(const DtUUID& weatherArea) const;
299  virtual unsigned int swellState(const DtVector&) const;
301 
303 
304  virtual void setSwellStateDirection(double direction, const DtUUID& weatherArea = DtUUID::nullUUID());
305  virtual double swellStateDirection(const DtUUID& weatherArea) const;
306  virtual double swellStateDirection(const DtVector&) const;
308 
310 
311  virtual void setSeaState(unsigned int state, const DtUUID& weatherArea = DtUUID::nullUUID());
312  virtual unsigned int seaState(const DtUUID& weatherArea) const;
313  virtual unsigned int seaState(const DtVector&) const;
315 
317 
318  virtual void setSeaStateDirection(double direction, const DtUUID& weatherArea = DtUUID::nullUUID());
319  virtual double seaStateDirection(const DtUUID& weatherArea) const;
320  virtual double seaStateDirection(const DtVector&) const;
322 
324 
325  virtual void setWindDrivenSeaStateEnabled(bool b, const DtUUID& weatherArea = DtUUID::nullUUID());
326  virtual bool windDrivenSeaStateEnabled(const DtUUID& weatherArea) const;
327  virtual bool windDrivenSeaStateEnabled(const DtVector&) const;
329 
331 
332  virtual void setChoppiness(double choppiness, const DtUUID& weatherArea = DtUUID::nullUUID());
333  virtual double choppiness(const DtUUID& weatherArea) const;
334  virtual double choppiness(const DtVector&) const;
336 
338 
339  virtual void setSurgeDepth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
340  virtual double surgeDepth(const DtUUID& weatherArea) const;
341  virtual double surgeDepth(const DtVector&) const;
343 
345 
346  virtual void setFogHeight(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
347  virtual double fogHeight(const DtUUID& weatherArea) const;
348  virtual double fogHeight(const DtVector&) const;
350 
352 
353  virtual void setFogColor(const DtVector& color, const DtUUID& weatherArea = DtUUID::nullUUID());
354  virtual DtVector fogColor(const DtUUID& weatherArea) const;
355  virtual DtVector fogColor(const DtVector&) const;
357 
360  virtual DtObjectType globalEnvironmentObjectType() const;
361 
364 
365  virtual void setThermoclineLayer1Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
366  virtual double thermoclineLayer1Depth(const DtUUID& weatherArea) const;
367  virtual double thermoclineLayer1Depth(const DtVector&) const;
368  virtual void setThermoclineLayer1Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
369  virtual double thermoclineLayer1Permeability(const DtUUID& weatherArea) const;
370  virtual double thermoclineLayer1Permeability(const DtVector&) const;
371  virtual void setThermoclineLayer2Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
372  virtual double thermoclineLayer2Depth(const DtUUID& weatherArea) const;
373  virtual double thermoclineLayer2Depth(const DtVector&) const;
374  virtual void setThermoclineLayer2Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
375  virtual double thermoclineLayer2Permeability(const DtUUID& weatherArea) const;
376  virtual double thermoclineLayer2Permeability(const DtVector&) const;
377  virtual void setThermoclineLayer3Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
378  virtual double thermoclineLayer3Depth(const DtUUID& weatherArea) const;
379  virtual double thermoclineLayer3Depth(const DtVector&) const;
380  virtual void setThermoclineLayer3Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
381  virtual double thermoclineLayer3Permeability(const DtUUID& weatherArea) const;
382  virtual double thermoclineLayer3Permeability(const DtVector&) const;
383  virtual void setThermoclineLayer4Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
384  virtual double thermoclineLayer4Depth(const DtUUID& weatherArea) const;
385  virtual double thermoclineLayer4Depth(const DtVector&) const;
386  virtual void setThermoclineLayer4Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
387  virtual double thermoclineLayer4Permeability(const DtUUID& weatherArea) const;
388  virtual double thermoclineLayer4Permeability(const DtVector&) const;
389  virtual void setThermoclineLayer5Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
390  virtual double thermoclineLayer5Depth(const DtUUID& weatherArea) const;
391  virtual double thermoclineLayer5Depth(const DtVector&) const;
392  virtual void setThermoclineLayer5Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
393  virtual double thermoclineLayer5Permeability(const DtUUID& weatherArea) const;
394  virtual double thermoclineLayer5Permeability(const DtVector&) const;
396 
400  virtual void createGlobalEnvironmentObject();
401 
402 protected:
403  static void objectAddedCallback(DtVrfObject* object, void* usr);
404  virtual void processObjectAdded(DtVrfObject* object);
405 
406  static void objectRemovedCallback(DtVrfObject* object, void* usr);
407  virtual void processObjectRemoved(DtVrfObject* object);
408 
410  virtual DtEnvironmentalStateSetter* createLocalEnvironmentalStateSetter();
412  virtual DtEnvironmentalStateSetter* createRemoteEnvironmentalStateSetter();
413 
414  static void changeWeatherPrioritiesCallback(DtSimMessage* msg, void* usr);
415  virtual void processChangeWeatherPriorities(DtSimMessage* msg);
416 
417  static void physicalWorldParametersChangedCallback(void* usr);
418  virtual void initializeIlluminationObjectsList();
419 
420  virtual const DtIlluminationObjectParameters& findBestMatch(const DtObjectType& objtype) const;
421 
422 protected:
424 
428 
431 
433 
437 
439 
440  std::map<DtObjectType, DtIlluminationObjectParameters> myIlluminationObjectTypes;
441 };
442 
443 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)