VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
staticLocationStateComponent.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 
9 #include <tbb/mutex.h>
10 
11 class Coordinate_System;
12 
13 namespace makVrf
14 {
17 
21  {
22  public:
24 
26  : DtLocationStateComponent(storage)
27  {
28  }
29  };
30 
33  {
34  public:
36  virtual ~DtStaticLocationStateComponentNextFrame() override;
37 
38  virtual const DtUUID& hostGlobalId() const override;
39  virtual void setHostGlobalId(const DtUUID& id) override;
40 
41  virtual const DtVector location() const override;
42  virtual void setLocation(const DtVector&) override;
43 
44  virtual const bool locationChanged() const override;
45 
46  virtual const double heading() const override;
47  virtual const double pitch() const override;
48  virtual const double roll() const override;
49 
50  virtual const int objectAttachMode() const override;
51  virtual const DtVector& worldPosition() const override;
52  virtual const DtVector& relativePosition() const override;
53  virtual const DtVector& parentPosition() const override;
54  virtual const DtVector& localPosition() const override;
55  virtual const DtDcm& worldOrientationMatrix() const override;
56  virtual const bool localPositionIsValid() const override;
57  virtual const bool frozen() const override;
58  virtual void setFrozen(const bool&) override;
59 
60  virtual const DtDcm& parentOrientationMatrix() const override;
61  virtual void setLocalOrientationMatrix(const DtDcm&) override;
62 
63  virtual const DtDcm& localOrientationMatrix() const override;
64 
65  virtual void setLocalPosition(const DtVector&) override;
66  virtual void setWorldPosition(const DtVector&) override;
67  virtual void setParentPosition(const DtVector&) override;
68  virtual void setWorldOrientationMatrix(const DtDcm&) override;
69 
70  virtual const DtTaitBryan orientation() const override;
71  virtual void setOrientation(const DtTaitBryan&) override;
72 
73  virtual const DtTaitBryan& worldOrientation() const override;
74  virtual const DtTaitBryan& topographicOrientation() const override;
75  virtual const DtTaitBryan& parentOrientation() const override;
76  virtual const DtTaitBryan& localOrientation() const override;
77 
78  virtual void setLocalOrientation(const DtTaitBryan&) override;
79  virtual void setLocalOrientationWrtDatabase(const DtTaitBryan&) override;
80  virtual const DtTaitBryan& localOrientationWrtDatabase() const override;
81  virtual void setWorldOrientation(const DtTaitBryan&) override;
82  virtual void setParentOrientation(const DtTaitBryan&) override;
83 
84  void setCoordinateSystem(const Coordinate_System* cs);
85  virtual void setKinematicState(const DtRwVrfKinematicState&) override;
86  virtual const DtRwVrfKinematicState& kinematicState() const override;
87 
88  const bool spatiallyFrozen() const;
89 
91  virtual void makeWritable() override;
92 
94  virtual void makeReadOnly() override;
95 
96  void advanceFrame();
97 
98  protected:
100  };
101 
104  {
105  public:
107  virtual ~DtStaticLocationStateComponentCurrentFrame() override;
108 
109  virtual const DtUUID& hostGlobalId() const override;
110 
111  virtual const bool localPositionIsValid() const override;
112  virtual const DtVector location() const override;
113 
114  virtual const DtVector& worldPosition() const override;
115  virtual const DtVector& relativePosition() const override;
116  virtual const DtVector& parentPosition() const override;
117 
118  virtual const DtDcm& parentOrientationMatrix() const override;
119 
120  virtual const DtVector& localPosition() const override;
121 
122  virtual const int objectAttachMode() const override;
123  virtual const DtDcm& worldOrientationMatrix() const override;
124  virtual const DtDcm& localOrientationMatrix() const override;
125  virtual const DtTaitBryan& localOrientationWrtDatabase() const override;
126 
127  virtual const double heading() const override;
128  virtual const double pitch() const override;
129  virtual const double roll() const override;
130 
131  virtual const DtTaitBryan orientation() const override;
132  virtual const DtTaitBryan& worldOrientation() const override;
133  virtual const DtTaitBryan& topographicOrientation() const override;
134  virtual const DtTaitBryan& parentOrientation() const override;
135  virtual const DtTaitBryan& localOrientation() const override;
136  virtual const bool frozen() const override;
137 
138  virtual const bool locationChanged() const override;
139 
140  void setCoordinateSystem(const Coordinate_System* cs);
141  void refreshKinematicState() const;
142  virtual const DtRwVrfKinematicState& kinematicState() const override;
143 
144  const bool spatiallyFrozen() const;
145 
146  protected:
148  void setLocationChanged(bool);
149  virtual void setKinematicState(const DtRwVrfKinematicState&) override;
150 
151  protected:
152  mutable tbb::mutex myKinematicStateMutex;
155  };
156 
160  {
161  public:
163 
164  bool isDoubleBuffered() { return true; };
165  virtual const DtFrameStateInterface* currentFrameState() const override { return &myCurrentFrameState; }
166  virtual DtFrameStateInterface* nextFrameState() override { return &myNextFrameState; };
167  virtual const DtFrameStateInterface* nextFrameState() const override { return &myNextFrameState; };
168 
170  virtual void setCoordinateSystem(const Coordinate_System*) override;
171 
172  virtual void updateDataStorage() override;
173 
174  virtual void updateStateData(DtStateData* sd) override
175  {
176  myCurrentFrameState.updateStateData(sd);
177  myNextFrameState.updateStateData(sd);
178  }
179 
180  virtual bool forceAdvance() override;
181 
182  virtual void aboutToBeDeleted() override
183  {
185  myCurrentFrameState.aboutToBeDeleted();
186  myNextFrameState.aboutToBeDeleted();
187  }
188 
189  protected:
192  };
193 
197 }
198 
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtStaticLocationStateComponentNextFrame myNextFrameState
Definition: staticLocationStateComponent.h:191
DtRwVrfKinematicState * myKinematicState
Definition: staticLocationStateComponent.h:99
virtual void aboutToBeDeleted() override
Definition: staticLocationStateComponent.h:182
The DtLocationStateComponent interface contains the interface that all DtLocationStateComponents can ...
Definition: locationStateComponent.h:25
The location only state component will simply deal with kinematic state. This is an object whose loca...
Definition: staticLocationStateComponent.h:20
Definition: stateComponent.h:269
3) Define the current frame class. This will be used for read access.
Definition: staticLocationStateComponent.h:103
2) Define the next frame class. This will be used for write access.
Definition: staticLocationStateComponent.h:32
Definition: coordSystem.h:54
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: staticLocationStateComponent.h:165
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: staticLocationStateComponent.h:174
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: staticLocationStateComponent.h:159
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: staticLocationStateComponent.h:167
virtual void aboutToBeDeleted()
bool myLocationChanged
Definition: staticLocationStateComponent.h:154
tbb::mutex myKinematicStateMutex
Definition: staticLocationStateComponent.h:152
virtual DtFrameStateInterface * nextFrameState() override
Definition: staticLocationStateComponent.h:166
DtStaticLocationStateComponentCurrentFrame myCurrentFrameState
Definition: staticLocationStateComponent.h:190
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
DtRwVrfKinematicState * myKinematicState
Definition: staticLocationStateComponent.h:153
DtStateComponentCreator< DtStaticLocationStateComponentImplementation > DtStaticLocationStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: staticLocationStateComponent.h:196
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
bool isDoubleBuffered()
Definition: staticLocationStateComponent.h:164

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)