VR-Forces 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  UNDEFINED_MUTATOR(int, ObjectAttachMode)
57 
58  protected:
60  UInt32 myCenterPositionColumn;
61  UInt32 myOrientationColumn;
62  };
63 
66  {
67  public:
70 
72  const DtEnvironmentalLocationStateComponentData& frameState() const { return myData; };
74 
75  virtual const DtUUID& hostGlobalId() const override;
76  virtual void setHostGlobalId( const DtUUID& id) override;
77 
78  virtual const int objectAttachMode() const override;
79  virtual void setObjectAttachMode(const int&) override;
80 
81  virtual const DtVector location() const override;
82  virtual void setLocation(const DtVector&) override;
83 
84  virtual const bool locationChanged() const override;
85 
86  virtual const double heading() const override;
87  virtual const double pitch() const override;
88  virtual const double roll() const override;
89 
90  virtual const DtVector& worldPosition() const override;
91  virtual const DtVector& relativePosition() const override;
92  virtual const DtVector& parentPosition() const override;
93  virtual const DtVector& localPosition() const override;
94  virtual const DtDcm& worldOrientationMatrix() const override;
95  virtual const bool localPositionIsValid() const override;
96  virtual const bool frozen() const override;
97  virtual void setFrozen(const bool&) override;
98 
99  virtual const DtDcm& parentOrientationMatrix() const override;
100  virtual void setLocalOrientationMatrix(const DtDcm&) override;
101 
102  virtual const DtDcm& localOrientationMatrix() const override;
103 
104  virtual void setLocalPosition(const DtVector&) override;
105  virtual void setWorldPosition(const DtVector&) override;
106  virtual void setParentPosition(const DtVector&) override;
107  virtual void setWorldOrientationMatrix(const DtDcm&) override;
108 
109  virtual const DtTaitBryan orientation() const override;
110  virtual void setOrientation(const DtTaitBryan&) override;
111 
112  virtual const DtTaitBryan& worldOrientation() const override;
113  virtual const DtTaitBryan& topographicOrientation() const override;
114  virtual const DtTaitBryan& parentOrientation() const override;
115  virtual const DtTaitBryan& localOrientation() const override;
116 
117  virtual void setLocalOrientation(const DtTaitBryan&) override;
118  virtual void setLocalOrientationWrtDatabase(const DtTaitBryan&) override;
119  virtual const DtTaitBryan& localOrientationWrtDatabase() const override;
120  virtual void setWorldOrientation(const DtTaitBryan&) override;
121  virtual void setParentOrientation(const DtTaitBryan&) override;
122 
123  void setCoordinateSystem(const Coordinate_System* cs);
124  virtual void setKinematicState(const DtRwVrfKinematicState&) override;
125  virtual const DtRwVrfKinematicState& kinematicState() const override;
126  virtual void refreshKinematicState(const DtEnvironmentalLocationStateComponent&);
127 
128  const bool spatiallyFrozen() const;
129 
131  virtual void makeWritable() override;
132 
134  virtual void makeReadOnly() override;
135  void slot_hostDestroyed();
136 
137  protected:
138  LOM::WriteEnvironmentProcessRepository myWriteEnvironmentProcessRepository;
141  boost::signals2::scoped_connection myHostDeletedConnection;
142  };
143 
146  {
147  public:
150 
152  const DtEnvironmentalLocationStateComponentData& frameState() const { return myData; };
153 
154  virtual const DtUUID& hostGlobalId() const override;
155  virtual const int objectAttachMode() const override;
156 
157  virtual const bool localPositionIsValid() const override;
158  virtual const DtVector location() const override;
159 
160  virtual const DtVector& worldPosition() const override;
161  virtual const DtVector& relativePosition() const override;
162  virtual const DtVector& parentPosition() const override;
163 
164  virtual const DtDcm& parentOrientationMatrix() const override;
165 
166  virtual const DtVector& localPosition() const override;
167 
168  virtual const DtDcm& worldOrientationMatrix() const override;
169  virtual const DtDcm& localOrientationMatrix() const override;
170  virtual const DtTaitBryan& localOrientationWrtDatabase() const override;
171 
172  virtual const double heading() const override;
173  virtual const double pitch() const override;
174  virtual const double roll() const override;
175 
176  virtual const DtTaitBryan orientation() const override;
177  virtual const DtTaitBryan& worldOrientation() const override;
178  virtual const DtTaitBryan& topographicOrientation() const override;
179  virtual const DtTaitBryan& parentOrientation() const override;
180  virtual const DtTaitBryan& localOrientation() const override;
181  virtual const bool frozen() const override;
182 
183  virtual const bool locationChanged() const override;
184 
185  void setCoordinateSystem(const Coordinate_System* cs);
186  void refreshKinematicState() const;
187  virtual const DtRwVrfKinematicState& kinematicState() const override;
188 
189  const bool spatiallyFrozen() const;
190 
191  protected:
194  {
195  myData = data;
196  }
197 
198  void setLocationChanged(bool);
199  virtual void needsKinematicStateRefresh();
200 
201  protected:
202  void handleDataUpdated(const std::vector<UInt32>& attributesUpdated);
203 
204  protected:
205  const LOM::ReadEnvironmentProcessRepository myReadEnvironmentProcessRepository;
208  unsigned int myCallbackHandle;
209  mutable tbb::mutex myKinematicStateMutex;
212  };
213 
217  {
218  public:
220 
221  bool isDoubleBuffered() { return true; };
222  virtual const DtFrameStateInterface* currentFrameState() const override { return &myCurrentFrameState; }
223  virtual DtFrameStateInterface* nextFrameState() override { return &myNextFrameState; };
224  virtual const DtFrameStateInterface* nextFrameState() const override { return &myNextFrameState; };
225 
227  virtual void setCoordinateSystem(const Coordinate_System*) override;
228 
230  virtual bool forceAdvance() override;
231 
232  virtual void updateDataStorage() override;
233 
234  virtual void updateStateData(DtStateData* sd) override
235  {
236  myCurrentFrameState.updateStateData(sd);
237  myNextFrameState.updateStateData(sd);
238  }
239 
240  virtual void initializeFromParameters(const DtVrfObjectParameters* params) override;
241 
242  virtual void aboutToBeDeleted() override
243  {
245  myCurrentFrameState.aboutToBeDeleted();
246  myNextFrameState.aboutToBeDeleted();
247  }
248 
249  protected:
253  };
254 
258 }
259 
UUID is a unique ID wrapper class.
Definition: uuid.h:59
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:64
tbb::mutex myKinematicStateMutex
Definition: environmentalLocationStateComponent.h:209
virtual void aboutToBeDeleted() override
Definition: environmentalLocationStateComponent.h:242
virtual DtFrameStateInterface * nextFrameState() override
Definition: environmentalLocationStateComponent.h:223
The DtLocationStateComponent interface contains the interface that all DtLocationStateComponents can ...
Definition: locationStateComponent.h:25
bool myLocationChanged
Definition: environmentalLocationStateComponent.h:206
bool isDoubleBuffered()
Definition: environmentalLocationStateComponent.h:221
const DtEnvironmentalLocationStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: environmentalLocationStateComponent.h:152
unsigned int UInt32
Definition: stateDataTypes.h:18
Definition: stateComponent.h:269
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: environmentalLocationStateComponent.h:222
DtStateDataManager * myStateDataManager
Definition: environmentalLocationStateComponent.h:207
DtRwVrfKinematicState * myKinematicState
Definition: environmentalLocationStateComponent.h:140
DtEnvironmentalLocationStateComponentNextFrame myNextFrameState
Definition: environmentalLocationStateComponent.h:251
DtEnvironmentalLocationStateComponentData()
Definition: environmentalLocationStateComponent.h:20
DtRwVrfKinematicState * myKinematicState
Definition: environmentalLocationStateComponent.h:211
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:72
DtEnvironmentalLocationStateComponentData(const DtEnvironmentalLocationStateComponentData &orig)
Definition: environmentalLocationStateComponent.h:24
boost::signals2::scoped_connection myHostDeletedConnection
Definition: environmentalLocationStateComponent.h:141
DtEnvironmentalLocationStateComponentData & frameState()
Definition: environmentalLocationStateComponent.h:73
bool myNeedsKinematicStateRefresh
Definition: environmentalLocationStateComponent.h:210
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: environmentalLocationStateComponent.h:234
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: environmentalLocationStateComponent.h:216
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
unsigned int myCallbackHandle
Definition: environmentalLocationStateComponent.h:208
3) Define the current frame class. This will be used for read access.
Definition: environmentalLocationStateComponent.h:145
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
DtVector myParentLocation
Definition: environmentalLocationStateComponent.h:252
void advanceFrame(const DtEnvironmentalLocationStateComponentData &data)
Definition: environmentalLocationStateComponent.h:193
virtual void aboutToBeDeleted()
bool myFrozen
Definition: environmentalLocationStateComponent.h:39
Definition: environmentalLocationStateComponent.h:18
DtEnvironmentalLocationStateComponentCurrentFrame myCurrentFrameState
Definition: environmentalLocationStateComponent.h:250
DtStateComponentCreator< DtEnvironmentalLocationStateComponentImplementation > DtEnvironmentalLocationStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: environmentalLocationStateComponent.h:257
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
const LOM::ReadEnvironmentProcessRepository myReadEnvironmentProcessRepository
Definition: environmentalLocationStateComponent.h:205
LOM::WriteEnvironmentProcessRepository myWriteEnvironmentProcessRepository
Definition: environmentalLocationStateComponent.h:138
Definition: rwVrfKinematicState.h:26
#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:139
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: environmentalLocationStateComponent.h:224
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:294
2) Define the next frame class. This will be used for write access.
Definition: environmentalLocationStateComponent.h:65
#define UNDEFINED_MUTATOR(Type, Set)
Definition: doubleBufferedDataStorage.h:44
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73

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)