VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
environmentalLocationStateComponent.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 
9 #include <legionStandardOM/sets/readEnvironmentProcessRepository.hpp>
10 #include <legionStandardOM/sets/writeEnvironmentProcessRepository.hpp>
11 #include <tbb/mutex.h>
12 
13 class Coordinate_System;
14 
15 namespace makVrf
16 {
17  class DtStateDataManager;
19  {
21  : myFrozen(false)
22  {};
23 
25  : myFrozen(orig.myFrozen)
26  {
27  }
28 
30  {
31  myFrozen = rhs.myFrozen;
32 
33  return *this;
34  }
35 
36  DEFINE_ACCESSOR_MUTATOR(bool, frozen, Frozen)
37 
38  protected:
39  bool myFrozen;
40  };
41 
45  {
46  public:
48 
50  : DtLocationStateComponent(storage)
51  , myCenterPositionColumn(0xFFFFFFFF)
52  , myOrientationColumn(0xFFFFFFFF)
53  {
54  }
55 
56  protected:
60  };
61 
64  {
65  public:
68 
70  const DtEnvironmentalLocationStateComponentData& frameState() const { return myData; };
72 
73  const DtUUID& hostGlobalId() const;
74  void setHostGlobalId( const DtUUID& id);
75 
76  const DtVector location() const;
77  void setLocation(const DtVector&);
78 
79  const bool locationChanged() const;
80 
81  const double heading() const;
82  const double pitch() const;
83  const double roll() const;
84 
85  const DtVector& worldPosition() const;
86  const DtVector& relativePosition() const;
87  const DtVector& parentPosition() const;
88  const DtVector& localPosition() const;
89  const DtDcm& worldOrientationMatrix() const;
90  const bool localPositionIsValid() const;
91  const bool frozen() const;
92  void setFrozen(const bool&);
93 
94  const DtDcm& parentOrientationMatrix() const;
95  void setLocalOrientationMatrix(const DtDcm&);
96 
97  const DtDcm& localOrientationMatrix() const;
98 
99  void setLocalPosition(const DtVector&);
100  void setWorldPosition(const DtVector&);
101  void setParentPosition(const DtVector&);
102  void setWorldOrientationMatrix(const DtDcm&);
103 
104  const DtTaitBryan orientation() const;
105  void setOrientation(const DtTaitBryan&);
106 
107  const DtTaitBryan& worldOrientation() const;
108  const DtTaitBryan& topographicOrientation() const;
109  const DtTaitBryan& parentOrientation() const;
110  const DtTaitBryan& localOrientation() const;
111 
112  void setLocalOrientation(const DtTaitBryan&);
113  void setLocalOrientationWrtDatabase(const DtTaitBryan&);
114  const DtTaitBryan& localOrientationWrtDatabase() const;
115  void setWorldOrientation(const DtTaitBryan&);
116  void setParentOrientation(const DtTaitBryan&);
117 
118  void setCoordinateSystem(const Coordinate_System* cs);
119  void setKinematicState(const DtRwVrfKinematicState&);
120  const DtRwVrfKinematicState& kinematicState() const;
121  virtual void refreshKinematicState(const DtEnvironmentalLocationStateComponent&);
122 
123  const bool spatiallyFrozen() const;
124 
126  virtual void makeWritable();
127 
129  virtual void makeReadOnly();
130  void slot_hostDestroyed();
131 
132  protected:
133  LOM::WriteEnvironmentProcessRepository myWriteEnvironmentProcessRepository;
137  boost::signals2::scoped_connection myHostDeletedConnection;
138  };
139 
142  {
143  public:
146 
148  const DtEnvironmentalLocationStateComponentData& frameState() const { return myData; };
149 
150  const DtUUID& hostGlobalId() const;
151 
152  const bool localPositionIsValid() const;
153  const DtVector location() const;
154 
155  const DtVector& worldPosition() const;
156  const DtVector& relativePosition() const;
157  const DtVector& parentPosition() const;
158 
159  const DtDcm& parentOrientationMatrix() const;
160 
161  const DtVector& localPosition() const;
162 
163  const DtDcm& worldOrientationMatrix() const;
164  const DtDcm& localOrientationMatrix() const;
165  const DtTaitBryan& localOrientationWrtDatabase() const;
166 
167  const double heading() const;
168  const double pitch() const;
169  const double roll() const;
170 
171  const DtTaitBryan orientation() const;
172  const DtTaitBryan& worldOrientation() const;
173  const DtTaitBryan& topographicOrientation() const;
174  const DtTaitBryan& parentOrientation() const;
175  const DtTaitBryan& localOrientation() const;
176  const bool frozen() const;
177 
178  const bool locationChanged() const;
179 
180  void setCoordinateSystem(const Coordinate_System* cs);
181  void refreshKinematicState() const;
182  const DtRwVrfKinematicState& kinematicState() const;
183 
184  const bool spatiallyFrozen() const;
185 
186  protected:
189  {
190  myData = data;
191  }
192 
193  void setLocationChanged(bool);
194  virtual void needsKinematicStateRefresh();
195 
196  protected:
197  void handleDataUpdated(const std::vector<UInt32>& attributesUpdated);
198 
199  protected:
200  const LOM::ReadEnvironmentProcessRepository myReadEnvironmentProcessRepository;
203  unsigned int myCallbackHandle;
204  mutable tbb::mutex myKinematicStateMutex;
207 
209  };
210 
214  {
215  public:
217 
218  bool isDoubleBuffered() { return true; };
219  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
220  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
221  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
222 
224  virtual void setCoordinateSystem(const Coordinate_System*);
225 
227  virtual bool forceAdvance();
228 
229  void updateDataStorage();
230 
232  {
233  myCurrentFrameState.updateStateData(sd);
234  myNextFrameState.updateStateData(sd);
235  }
236 
237  virtual void initializeFromParameters(const DtVrfObjectParameters* params);
238 
239  virtual void aboutToBeDeleted() override
240  {
242  myCurrentFrameState.aboutToBeDeleted();
243  myNextFrameState.aboutToBeDeleted();
244  }
245 
246  protected:
250  };
251 
255 }
256 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:63
tbb::mutex myKinematicStateMutex
Definition: environmentalLocationStateComponent.h:204
unsigned int UInt32
Definition: stateDataTypes.h:18
virtual void aboutToBeDeleted() override
Definition: environmentalLocationStateComponent.h:239
UInt32 myOrientationColumn
Definition: environmentalLocationStateComponent.h:59
DtStateData * myStateData
Definition: environmentalLocationStateComponent.h:134
The DtLocationStateComponent interface contains the interface that all DtLocationStateComponents can ...
Definition: locationStateComponent.h:25
bool myLocationChanged
Definition: environmentalLocationStateComponent.h:201
bool isDoubleBuffered()
Definition: environmentalLocationStateComponent.h:218
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: environmentalLocationStateComponent.h:231
const DtEnvironmentalLocationStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: environmentalLocationStateComponent.h:148
Definition: stateComponent.h:257
DtStateDataManager * myStateDataManager
Definition: environmentalLocationStateComponent.h:202
DtRwVrfKinematicState * myKinematicState
Definition: environmentalLocationStateComponent.h:136
DtEnvironmentalLocationStateComponentNextFrame myNextFrameState
Definition: environmentalLocationStateComponent.h:248
DtEnvironmentalLocationStateComponentData()
Definition: environmentalLocationStateComponent.h:20
virtual const DtFrameStateInterface * nextFrameState() const
Definition: environmentalLocationStateComponent.h:221
DtRwVrfKinematicState * myKinematicState
Definition: environmentalLocationStateComponent.h:206
DtEnvironmentalLocationStateComponentData & operator=(const DtEnvironmentalLocationStateComponentData &rhs)
Definition: environmentalLocationStateComponent.h:29
const DtEnvironmentalLocationStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: environmentalLocationStateComponent.h:70
DtEnvironmentalLocationStateComponentData(const DtEnvironmentalLocationStateComponentData &orig)
Definition: environmentalLocationStateComponent.h:24
boost::signals2::scoped_connection myHostDeletedConnection
Definition: environmentalLocationStateComponent.h:137
DtEnvironmentalLocationStateComponentData & frameState()
Definition: environmentalLocationStateComponent.h:71
bool myNeedsKinematicStateRefresh
Definition: environmentalLocationStateComponent.h:205
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: environmentalLocationStateComponent.h:213
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
unsigned int myCallbackHandle
Definition: environmentalLocationStateComponent.h:203
3) Define the current frame class. This will be used for read access.
Definition: environmentalLocationStateComponent.h:141
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:370
virtual DtFrameStateInterface * nextFrameState()
Definition: environmentalLocationStateComponent.h:220
DtVector myParentLocation
Definition: environmentalLocationStateComponent.h:249
void advanceFrame(const DtEnvironmentalLocationStateComponentData &data)
Definition: environmentalLocationStateComponent.h:188
virtual void aboutToBeDeleted()
bool myFrozen
Definition: environmentalLocationStateComponent.h:39
Definition: environmentalLocationStateComponent.h:18
DtEnvironmentalLocationStateComponentCurrentFrame myCurrentFrameState
Definition: environmentalLocationStateComponent.h:247
const DtFrameStateInterface * currentFrameState() const
Definition: environmentalLocationStateComponent.h:219
DtStateComponentCreator< DtEnvironmentalLocationStateComponentImplementation > DtEnvironmentalLocationStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: environmentalLocationStateComponent.h:254
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
const LOM::ReadEnvironmentProcessRepository myReadEnvironmentProcessRepository
Definition: environmentalLocationStateComponent.h:200
DtEnvironmentalLocationStateComponentData myData
Definition: environmentalLocationStateComponent.h:57
LOM::WriteEnvironmentProcessRepository myWriteEnvironmentProcessRepository
Definition: environmentalLocationStateComponent.h:133
Definition: rwVrfKinematicState.h:25
#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
DtStateDataManager * myStateDataManager
Definition: environmentalLocationStateComponent.h:135
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: environmentalLocationStateComponent.h:44
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
2) Define the next frame class. This will be used for write access.
Definition: environmentalLocationStateComponent.h:63
UInt32 myCenterPositionColumn
Definition: environmentalLocationStateComponent.h:58
DtStateData * myStateData
Definition: environmentalLocationStateComponent.h:208
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)