VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtEnvironmentRecord.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
14 
15 #include <vrfExtObjects/vrfWeatherStateEnums.h>
16 
17 #include <vector>
18 #include <string>
19 
20 namespace makArchives
21 {
26  {
27  public:
31  {
32  public:
34  DtColorRecord(float r=1.0f, float g=1.0f, float b=1.0f, float a=1.0f);
35 
37  DtColorRecord(const DtColorRecord& orig);
38 
40  DtColorRecord& operator =(DtColorRecord rhs);
41 
43  ~DtColorRecord();
44 
46  void swap(DtColorRecord& other);
47 
50  void setRed(float r);
51  float red() const;
53 
56  void setGreen(float g);
57  float green() const;
59 
62  void setBlue(float b);
63  float blue() const;
65 
68  void setAlpha(float a);
69  float alpha() const;
71 
72  protected:
73 
74  friend class boost::serialization::access;
75 
80  template<class Archive>
81  void serialize(Archive & ar, const unsigned int version)
82  {
83  ar & BOOST_SERIALIZATION_NVP(myRed);
84  ar & BOOST_SERIALIZATION_NVP(myGreen);
85  ar & BOOST_SERIALIZATION_NVP(myBlue);
86  ar & BOOST_SERIALIZATION_NVP(myAlpha);
87  }
88 
89  private:
90  static float clamp(float component);
91 
92  private:
93  float myRed;
94  float myGreen;
95  float myBlue;
96  float myAlpha;
97  };
98 
102  {
103  public:
105  DtThermoclineRecord(float depth=0.0f, float permeability=0.0);
106 
109 
111  DtThermoclineRecord& operator =(DtThermoclineRecord rhs);
112 
115 
117  void swap(DtThermoclineRecord& other);
118 
121  void setDepth(float meters);
122  float depth() const;
124 
127  void setPermeability(float normalizedValue);
128  float permeability() const;
130 
131  protected:
132 
133  friend class boost::serialization::access;
134 
139  template<class Archive>
140  void serialize(Archive & ar, const unsigned int version)
141  {
142  ar & BOOST_SERIALIZATION_NVP(myDepth);
143  ar & BOOST_SERIALIZATION_NVP(myPermeability);
144  }
145 
146  private:
147  float myDepth;
149  };
150 
151  typedef std::vector<DtCloudLayerRecord> CloudLayerRecordList;
152  typedef std::vector<DtThermoclineRecord> ThermoclineRecordList;
153  typedef std::map<std::string, std::string> OptionalParameterMap;
154 
157 
160 
163 
165  void swap(DtEnvironmentRecord& other);
166 
168  DtEnvironmentRecord& operator =(DtEnvironmentRecord rhs);
169 
172  void setEnvironmentName(const std::string& name);
173  const std::string& environmentName() const;
175 
178  void setAirTurbidity(float turbidity);
179  float airTurbidity() const;
181 
184  void setVisibleDistance(float distance);
185  float visibleDistance() const;
187 
190  void setPrecipitation(int type);
191  int precipitation() const;
193 
196  void setPrecipitationIntensity(float intensity);
197  float precipitationIntensity() const;
199 
203  CloudLayerRecordList& customCloudLayers();
204  const CloudLayerRecordList& customCloudLayers() const;
206 
209  void setCloudCoverType( DtVrfWeatherCloudState cloudCoverType );
210  DtVrfWeatherCloudState cloudCoverType() const;
212 
216  void setUseCustomCloudCover( bool enabled );
217  bool useCustomCloudCover() const;
219 
222  void setWindSpeed(float metersPerSecond);
223  float windSpeed() const;
225 
228  void setWindDirection(float radiansFromNorth);
229  float windDirection() const;
231 
234  void setAmbientAirTemperature(float celsius);
235  float ambientAirTemperature() const;
237 
240  void setSeaState(int douglasScale);
241  int seaState() const;
243 
246  void setSeaStateDirection(float radiansFromNorth);
247  float seaStateDirection() const;
249 
252  void setWindDrivenSeaStateEnabled(bool enabled);
253  bool windDrivenSeaStateEnabled() const;
255 
258  void setSwellState(int douglasScale);
259  int swellState() const;
261 
264  void setSwellStateDirection(float radiansFromNorth);
265  float swellStateDirection() const;
267 
270  void setWindFetch(float meters);
271  float windFetch() const;
273 
276  void setSeaChoppiness(float chop);
277  float seaChoppiness() const;
279 
282  void setUnderwaterVisibility(float meters);
283  float underwaterVisibility() const;
285 
288  void setSurfaceTransparency(float normalizedValue);
289  float surfaceTransparency() const;
291 
294  void setSurgeDepth(float meters);
295  float surgeDepth() const;
297 
300  void setDepthOffset(float meters);
301  float depthOffset() const;
303 
306  void setAmbientWaterTemperature(float celsius);
307  float ambientWaterTemperature() const;
309 
312  void setWaterCurrentSpeed(float metersPerSecond);
313  float waterCurrentSpeed() const;
315 
318  void setWaterCurrentDirection(float radiansFromNorth);
319  float waterCurrentDirection() const;
321 
324  void setTidalOffset(float meters);
325  float tidalOffset() const;
327 
330  void setTidalDirection(bool inOut);
331  bool tidalDirection() const;
333 
336  void setFogHeight(float meters);
337  float fogHeight() const;
339 
342  void setFogColor(const DtColorRecord& color);
343  const DtColorRecord& fogColor() const;
345 
348  void setThermoclineRecord(
349  unsigned int index, const DtThermoclineRecord& tRec);
350  DtThermoclineRecord thermoclineRecord(unsigned int index) const;
351  void setThermoclineDepth(unsigned int index, float depth);
352  float thermoclineDepth(unsigned int index) const;
353  void setThermoclinePermeability(unsigned int index, float permeability);
354  float thermoclinePermeability(unsigned int index) const;
356 
359  virtual const std::string*
360  findOptionalParameter(const std::string& name) const;
361 
363  virtual void setOptionalParameter(
364  const std::string& name, const std::string& value);
365 
368  virtual void setOptionalParameters(const OptionalParameterMap&);
369 
371  virtual void removeOptionalParameter(const std::string& name);
372 
374  const OptionalParameterMap& optionalParameters() const;
376 
377  protected:
378 
379  friend class boost::serialization::access;
380 
384  template<class Archive>
385  void serialize(Archive & ar, const unsigned int version)
386  {
387  ar & BOOST_SERIALIZATION_NVP(myAirTurbidity);
388  ar & BOOST_SERIALIZATION_NVP(myVisibilityDistance);
389  if (version < 4)
390  {
391  ar & BOOST_SERIALIZATION_NVP(myPrecipitationEnabledFlag);
392  ar & BOOST_SERIALIZATION_NVP(myPrecipitationType);
393  if (myPrecipitationEnabledFlag && myPrecipitationType == "Rain")
394  {
395  myPrecipitation = 1;
396  }
397  else if (myPrecipitationEnabledFlag && myPrecipitationType == "Snow")
398  {
399  myPrecipitation = 2;
400  }
401  else
402  {
403  myPrecipitationType = "None";
404  myPrecipitation = 0;
405  }
406  }
407  ar & BOOST_SERIALIZATION_NVP(myPrecipitationIntensity);
408  ar & BOOST_SERIALIZATION_NVP(myCloudLayers);
409  if(version >= 1)
410  {
411  ar & BOOST_SERIALIZATION_NVP(myWindSpeed);
412  ar & BOOST_SERIALIZATION_NVP(myWindDirection);
413  ar & BOOST_SERIALIZATION_NVP(myAmbientAirTemperature);
414  ar & BOOST_SERIALIZATION_NVP(mySeaState);
415  ar & BOOST_SERIALIZATION_NVP(mySeaChoppiness);
416  ar & BOOST_SERIALIZATION_NVP(myUnderwaterVisibility);
417  ar & BOOST_SERIALIZATION_NVP(myAmbientWaterTemperature);
418  ar & BOOST_SERIALIZATION_NVP(myWaterCurrentSpeed);
419  ar & BOOST_SERIALIZATION_NVP(myWaterCurrentDirection);
420  ar & BOOST_SERIALIZATION_NVP(myTidalOffset);
421  ar & BOOST_SERIALIZATION_NVP(myTidalDirection);
422  }
423  if (version >= 2)
424  {
425  ar & BOOST_SERIALIZATION_NVP(myEnvironmentName);
426  ar & BOOST_SERIALIZATION_NVP(myOptionalParameters);
427  }
428  if (version >= 3)
429  {
430  ar & BOOST_SERIALIZATION_NVP(mySeaStateDirection);
431  ar & BOOST_SERIALIZATION_NVP(myWindDrivenSeaStateEnabled);
432  ar & BOOST_SERIALIZATION_NVP(mySwellState);
433  ar & BOOST_SERIALIZATION_NVP(mySwellStateDirection);
434  ar & BOOST_SERIALIZATION_NVP(myWindFetch);
435  ar & BOOST_SERIALIZATION_NVP(mySurfaceTransparency);
436  ar & BOOST_SERIALIZATION_NVP(mySurgeDepth);
437  ar & BOOST_SERIALIZATION_NVP(myDepthOffset);
438  }
439  if (version >= 4)
440  {
441  ar & BOOST_SERIALIZATION_NVP(myFogHeight);
442  ar & BOOST_SERIALIZATION_NVP(myFogColor);
443  ar & BOOST_SERIALIZATION_NVP(myPrecipitation);
444  ar & BOOST_SERIALIZATION_NVP(myThermoclineRecordList);
445  }
446  if (version >= 5)
447  {
448  ar & BOOST_SERIALIZATION_NVP(myCloudCoverType);
449  ar & BOOST_SERIALIZATION_NVP(myUseCustomCloudCover);
450  }
451  }
452 
453  std::string myEnvironmentName;
454 
460  DtVrfWeatherCloudState myCloudCoverType;
461  float myWindSpeed;
464 
470  float myWindFetch;
476 
482 
483  float myFogHeight;
485 
488 
490 
491  // obsolete as of version 4
493  std::string myPrecipitationType;
494  };
495 
496 }
497 
499 BOOST_CLASS_VERSION(makArchives::DtEnvironmentRecord::DtThermoclineRecord, 0)
500 BOOST_CLASS_VERSION(makArchives::DtEnvironmentRecord, 5)

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)