VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
troposphereStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
12 #include <vrfutil/rwWindLevels.h>
13 #include <tbb/spin_rw_mutex.h>
14 
15 namespace makVrf
16 {
17 
20  {
22  : myWindLevels()
23  , myPriority(0)
24  {};
25 
27  {
28  *this = orig;
29  };
30 
32  {
33  {
34  myWindLevels = orig.myWindLevels;
35  myPriority = orig.myPriority;
36  }
37  return *this;
38  };
39 
40  ACCESSOR_MUTATOR_MEMBER(DtRwWindLevels, windLevels, WindLevels);
41  ACCESSOR_MUTATOR_MEMBER(int, priority, Priority);
42  };
43 
47  {
48  public:
50 
52  : DtFrameStateInterface(storage)
53  {
54  }
55 
56 
58  UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(int, priority, Priority);
59 
62 
65  virtual const double visibility(double atAlt = 0.) const { throw DtUnimplementedMethod("visibility(atAltidude) is not implemented by this class."); };
66  virtual void setVisibility(const double&) { throw DtUnimplementedMethod("setVisibility(double) is not implemented by this class."); };
67  virtual void setVisibility(const double& atAlt, const double&) { throw DtUnimplementedMethod("setVisibility(const double& atAlt, const double& vis) is not implemented by this class."); };
68 
69  virtual const double windSpeed(double atAlt = 0.) const { throw DtUnimplementedMethod("windSpeed(atAltidude) is not implemented by this class."); };
70  virtual void setWindSpeed(const double&) { throw DtUnimplementedMethod("setWindSpeed(double) is not implemented by this class."); };
71  virtual void setWindSpeed(const double& atAlt, const double&) { throw DtUnimplementedMethod("setWindSpeed(const double& atAlt, const double& vis) is not implemented by this class."); };
72 
73  virtual const double windDirection(double atAlt = 0.) const { throw DtUnimplementedMethod("windDirection(atAltidude) is not implemented by this class."); };
74  virtual void setWindDirection(const double&) { throw DtUnimplementedMethod("setWindDirection(double) is not implemented by this class."); };
75  virtual void setWindDirection(const double& atAlt, const double&) { throw DtUnimplementedMethod("setWindDirection(const double& atAlt, const double& vis) is not implemented by this class."); };
76 
77  virtual const int obscurant(double atAlt = 0.) const { throw DtUnimplementedMethod("obscurant(atAltidude) is not implemented by this class."); };
78  virtual void setObscurant(double atAlt, const int&) { throw DtUnimplementedMethod("setObscurant(double, int) is not implemented by this class."); };
79 
80  virtual void addWindLevel(double altitude, double windSpeed, double windDirection,
81  double visibleDistance, int obscurant, int cloudType, double cloudDensity, double skyCoverage) {
82  throw DtUnimplementedMethod("addWindLevel is not implemented by this class.");
83  };
84  virtual void clearWindLevels() { throw DtUnimplementedMethod("clearWindLevels is not implemented by this class."); };
85 
87  virtual void removeWindLevel(double baseAltitude) { throw DtUnimplementedMethod("removeWindLevel is not implemented by this class."); };
88 
90  virtual bool windSpeedAndDirectionAtAltitude(double altMSL, double& windSpeed, double& windDirection) const { throw DtUnimplementedMethod("windSpeedAndDirectionAtAltitude is not implemented by this class."); };
91  virtual void setWindSpeedAndDirectionAtAltitude(const double& altMSL, const double& windSpeed, const double& windDirection) { throw DtUnimplementedMethod("setWindSpeedAndDirectionAtAltitude is not implemented by this class."); };
92 
94  virtual bool visibilityAndObscurantAtAltitude(double altMSL, double& distance, int& obs) const { throw DtUnimplementedMethod("visibilityAndObscurantAtAltitude is not implemented by this class."); };
95  virtual void setVisibilityAndObscurantAtAltitude(const double& altMSL, const double& distance, const int& obs) { throw DtUnimplementedMethod("setVisibilityAndObscurantAtAltitude is not implemented by this class."); };
97 
98  void setIsRemoteComponent(bool b) { myIsRemoteComponent = b; };
99 
100  protected:
101  bool myIsRemoteComponent = false;
102  };
103 
105  class DT_DLL_vrfStateData DtTroposphereStateComponentNextFrame : public DtStateComponentNextFrameTemplate< DtTroposphereStateComponent, DtTroposphereStateComponentData >
106  {
107  public:
110  {
111  };
112 
114 
115  virtual const DtRwWindLevels& windLevels() const override;
116  virtual void setWindLevels(const DtRwWindLevels&) override;
117 
118  virtual void setPriority(const int&) override;
119  virtual const int priority() const override;
120 
121  virtual const double windSpeed(double atAlt = 0.) const override;
122  virtual void setWindSpeed(const double&) override;
123  virtual void setWindSpeed(const double& atAlt, const double&) override;
124 
125  virtual const double windDirection(double atAlt = 0.) const override;
126  virtual void setWindDirection(const double&) override;
127  virtual void setWindDirection(const double& atAlt, const double&) override;
128 
129  virtual const int obscurant(double atAltitude) const override;
130  virtual void setObscurant(double baseAlt, const int&) override;
131  virtual const double visibility(double atAltitude) const override;
132  virtual void setVisibility(const double&) override;
133  virtual void setVisibility(const double&, const double&) override;
134 
135  std::shared_ptr<tbb::spin_rw_mutex::scoped_lock> readLock();
136  std::shared_ptr<tbb::spin_rw_mutex::scoped_lock> writeLock();
137 
140 
143  virtual void addWindLevel(double altitude, double windSpeed, double windDirection, double visibleDistance,
144  int obscurant, int cloudType, double cloudDensity, double skyCoverage) override;
145  virtual void clearWindLevels() override;
146 
148  virtual void removeWindLevel(double baseAltitude) override;
149 
151  virtual bool windSpeedAndDirectionAtAltitude(
152  double altMSL, double& windSpeed, double& windDirection) const override;
153  virtual void setWindSpeedAndDirectionAtAltitude(const double& altMSL, const double& windSpeed, const double& windDirection) override;
154 
156  virtual bool visibilityAndObscurantAtAltitude(double altMSL, double& distance, int& obs) const override;
157  virtual void setVisibilityAndObscurantAtAltitude(const double& altMSL, const double& distance, const int& obs) override;
158 
160  mutable tbb::spin_rw_mutex myMutex;
161  };
162 
164  class DT_DLL_vrfStateData DtTroposphereStateComponentCurrentFrame : public DtStateComponentCurrentFrameTemplate< DtTroposphereStateComponent, DtTroposphereStateComponentNextFrame, DtTroposphereStateComponentData>
165  {
166  public:
169  {
170  };
171 
172  CURRENTFRAME_ACCESSOR_BY_REF(DtRwWindLevels, windLevels, WindLevels);
173  CURRENTFRAME_ACCESSOR(int, priority, Priority);
174 
176  virtual const double windSpeed(double atAlt = 0.) const override;
177  virtual const double windDirection(double atAlt = 0.) const override;
178  virtual const double visibility(double atAltitude = 0.) const override;
179  virtual const int obscurant(double atAltitude) const override;
180 
182  virtual bool windSpeedAndDirectionAtAltitude(double altMSL, double& windSpeed, double& windDirection) const override;
183 
185  virtual bool visibilityAndObscurantAtAltitude(double altMSL, double& distance, int& obs) const override;
186  };
187 
191 
195 
196 }
virtual const int obscurant(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:77
virtual void setVisibility(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:67
3) Define the current frame class. This will be used for read access.
Definition: troposphereStateComponent.h:164
0) Define the State Component Data. This struct replaces the legion stuff
Definition: troposphereStateComponent.h:19
Definition: stateDataTypes.h:23
virtual void setWindDirection(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:75
DtTroposphereStateComponentNextFrame(DtStateData *sd)
Definition: troposphereStateComponent.h:108
virtual const double windSpeed(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:69
Definition: stateComponentImplementationTemplate.h:68
Definition: stateComponent.h:269
virtual void setVisibilityAndObscurantAtAltitude(const double &altMSL, const double &distance, const int &obs)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:95
virtual void removeWindLevel(double baseAltitude)
Must be exact match.
Definition: troposphereStateComponent.h:87
DtTroposphereStateComponentCurrentFrame(DtStateData *sd)
Definition: troposphereStateComponent.h:167
2) Define the next frame class. This will be used for write access.
Definition: troposphereStateComponent.h:105
#define CURRENTFRAME_ACCESSOR_BY_REF(MemberType, Accessor, MutatorAndMember)
Definition: stateComponentImplementationTemplate.h:64
#define CURRENTFRAME_ACCESSOR(MemberType, Accessor, MutatorAndMember)
Definition: stateComponentImplementationTemplate.h:61
virtual bool visibilityAndObscurantAtAltitude(double altMSL, double &distance, int &obs) const
Given the altitude, return the visibility and obscurant.
Definition: troposphereStateComponent.h:94
virtual void setWindSpeedAndDirectionAtAltitude(const double &altMSL, const double &windSpeed, const double &windDirection)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:91
virtual const double visibility(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:65
Definition: stateComponentImplementationTemplate.h:87
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
virtual ~DtTroposphereStateComponentNextFrame() override
Definition: troposphereStateComponent.h:113
virtual bool windSpeedAndDirectionAtAltitude(double altMSL, double &windSpeed, double &windDirection) const
Given the altitude, return the wind speed and direction.
Definition: troposphereStateComponent.h:90
virtual void clearWindLevels()
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:84
virtual void setWindSpeed(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:71
virtual void setVisibility(const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:66
virtual void setWindDirection(const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:74
virtual const double windDirection(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:73
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
DtTroposphereStateComponentData & operator=(const DtTroposphereStateComponentData &orig)
Definition: troposphereStateComponent.h:31
void setIsRemoteComponent(bool b)
Definition: troposphereStateComponent.h:98
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
#define ACCESSOR_MUTATOR_MEMBER(MemberType, Accessor, MutatorAndMember)
Definition: stateComponentImplementationTemplate.h:25
virtual void setWindSpeed(const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:70
virtual void addWindLevel(double altitude, double windSpeed, double windDirection, double visibleDistance, int obscurant, int cloudType, double cloudDensity, double skyCoverage)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:80
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
DtStateComponentCreator< DtTroposphereStateComponentImplementation > DtTroposphereStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: troposphereStateComponent.h:194
virtual void setObscurant(double atAlt, const int &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:78
DtTroposphereStateComponentData(const DtTroposphereStateComponentData &orig)
Definition: troposphereStateComponent.h:26
Contains the DtStateComponent class declaration.
Definition: rwWindLevels.h:17
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
Definition: stateComponentImplementationTemplate.h:135
1) Define the interface class that will be used to represent the next and current frames...
Definition: troposphereStateComponent.h:46
DtTroposphereStateComponentData()
Definition: troposphereStateComponent.h:21
tbb::spin_rw_mutex myMutex
Definition: troposphereStateComponent.h:160

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)