VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
airTurbulenceStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include <vlutil/vlString.h>
11 
12 namespace makVrf
13 {
15  {
17  : myAirTurbulence(0)
18  {};
19 
21  {
22  myAirTurbulence = orig.myAirTurbulence;
23  }
24 
26  {
27  myAirTurbulence = orig.myAirTurbulence;
28 
29  return *this;
30  }
31 
32  DEFINE_ACCESSOR_MUTATOR(int, airTurbulence, AirTurbulence)
33 
34  protected:
35  int myAirTurbulence;
36  };
37 
41  {
42  public:
44 
46  : DtFrameStateInterface(storage)
47  {
48  }
49 
51  };
52 
55  {
56  public:
58 
60  const DtAirTurbulenceStateComponentData& frameState() const { return myData; };
62 
63  virtual const int& airTurbulence() const override;
64  virtual void setAirTurbulence(const int&) override;
65 
67  virtual void makeWritable() override {};
68 
70  virtual void makeReadOnly() override {};
71 
72  protected:
74  };
75 
78  {
79  public:
82 
84  const DtAirTurbulenceStateComponentData& frameState() const { return myData; };
85 
86  virtual const int& airTurbulence() const override;
87 
88  protected:
89  void completeSetup();
90  void updateVrfStateComponentParameters();
91 
92  void updateAirTurbulence();
93 
94  protected:
97  {
98  myData = data;
99  }
100 
101  protected:
102  boost::signals2::scoped_connection myVrfStateComponentChangedConnection;
103  boost::signals2::scoped_connection myCompleteSetupConnection;
104 
105  protected:
107  };
108 
112  {
113  public:
115 
116  bool isDoubleBuffered() { return true; };
117  virtual const DtFrameStateInterface* currentFrameState() const override { return &myCurrentFrameState; }
118  virtual DtFrameStateInterface* nextFrameState() override { return &myNextFrameState; };
119  virtual const DtFrameStateInterface* nextFrameState() const override { return &myNextFrameState; };
120 
121  virtual void updateDataStorage() override
122  {
123  if (myNextFrameState.isWritable())
124  {
125  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
126  }
127 
128  myCurrentFrameState.emitComponentUpdated();
129  }
130 
131  virtual void updateStateData(DtStateData* sd) override
132  {
133  myCurrentFrameState.updateStateData(sd);
134  myNextFrameState.updateStateData(sd);
135  }
136 
137  virtual void aboutToBeDeleted() override
138  {
140  myCurrentFrameState.aboutToBeDeleted();
141  myNextFrameState.aboutToBeDeleted();
142  }
143 
144  protected:
147  };
148 
152 }
DtAirTurbulenceStateComponentData & frameState()
Definition: airTurbulenceStateComponent.h:61
boost::signals2::scoped_connection myVrfStateComponentChangedConnection
Definition: airTurbulenceStateComponent.h:102
DtAirTurbulenceStateComponentData myData
Definition: airTurbulenceStateComponent.h:106
Definition: stateComponent.h:269
virtual void updateDataStorage() override
Implement to update data storage. Called from advanceFrame.
Definition: airTurbulenceStateComponent.h:121
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: airTurbulenceStateComponent.h:40
DtAirTurbulenceStateComponentData & operator=(const DtAirTurbulenceStateComponentData &orig)
Definition: airTurbulenceStateComponent.h:25
2) Define the next frame class. This will be used for write access.
Definition: airTurbulenceStateComponent.h:54
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: airTurbulenceStateComponent.h:117
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: airTurbulenceStateComponent.h:131
void advanceFrame(const DtAirTurbulenceStateComponentData &data)
Definition: airTurbulenceStateComponent.h:96
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
DtStateComponentCreator< DtAirTurbulenceStateComponentImplementation > DtAirTurbulenceStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: airTurbulenceStateComponent.h:151
3) Define the current frame class. This will be used for read access.
Definition: airTurbulenceStateComponent.h:77
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
virtual void makeWritable() override
Override to make component writable.
Definition: airTurbulenceStateComponent.h:67
boost::signals2::scoped_connection myCompleteSetupConnection
Definition: airTurbulenceStateComponent.h:103
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
const DtAirTurbulenceStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: airTurbulenceStateComponent.h:84
const DtAirTurbulenceStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: airTurbulenceStateComponent.h:60
virtual void aboutToBeDeleted()
virtual DtFrameStateInterface * nextFrameState() override
Definition: airTurbulenceStateComponent.h:118
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: airTurbulenceStateComponent.h:119
bool isDoubleBuffered()
Definition: airTurbulenceStateComponent.h:116
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
virtual void aboutToBeDeleted() override
Definition: airTurbulenceStateComponent.h:137
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
DtAirTurbulenceStateComponentData(const DtAirTurbulenceStateComponentData &orig)
Definition: airTurbulenceStateComponent.h:20
#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
Definition: airTurbulenceStateComponent.h:14
int myAirTurbulence
Definition: airTurbulenceStateComponent.h:35
Contains the DtStateComponent class declaration.
DtAirTurbulenceStateComponentCurrentFrame myCurrentFrameState
Definition: airTurbulenceStateComponent.h:145
Definition: vrfObjectManipulationHandlerBaseClass.h:68
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: airTurbulenceStateComponent.h:111
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
DtAirTurbulenceStateComponentData()
Definition: airTurbulenceStateComponent.h:16
DtAirTurbulenceStateComponentNextFrame myNextFrameState
Definition: airTurbulenceStateComponent.h:146

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)