9 #include <legionStandardOM/sets/readEntityRepository.hpp>
10 #include <legionStandardOM/sets/writeEntityRepository.hpp>
11 #include <legionStandardOM/sets/readEmbarkedEntityRepository.hpp>
12 #include <legionStandardOM/sets/writeEmbarkedEntityRepository.hpp>
14 #include <tbb/mutex.h>
15 #include <tbb/spin_rw_mutex.h>
16 #include <boost/signals2.hpp>
20 class ReadEntityRepository;
27 class DtStateDataManager;
31 : mySpatiallyFrozen(false)
32 , myHostGlobalId(
DtUUID::nullUUID())
33 , myStationName(DtStationName::DtOnStation_XYZ)
34 , myNeedsEmbarkCheck(false)
38 : myHostGlobalId(orig.myHostGlobalId)
39 , mySpatiallyFrozen(orig.mySpatiallyFrozen)
40 , myThresholder(orig.myThresholder)
41 , myStationName(orig.myStationName)
42 , myNeedsEmbarkCheck(orig.myNeedsEmbarkCheck)
65 bool mySpatiallyFrozen;
66 DtThresholder myThresholder;
67 DtStationName myStationName;
68 bool myNeedsEmbarkCheck;
75 : DtLocationStateComponent(storage)
122 : DtEntityLocationStateComponentInterface(storage)
138 virtual const DtUUID& hostGlobalId()
const override;
139 virtual void setHostGlobalId(
const DtUUID&
id)
override;
140 virtual const int objectAttachMode()
const override;
142 virtual void setAlgorithm(
const DtDeadReckonTypes& alg)
override;
143 virtual const DtDeadReckonTypes algorithm()
const override;
146 virtual const bool frozen()
const override;
147 virtual void setFrozen(
const bool&)
override;
152 virtual const DtVector location()
const override;
153 virtual void setLocation(
const DtVector&)
override;
155 virtual const DtVector velocity()
const override;
156 virtual void setVelocity(
const DtVector&)
override;
158 virtual const DtVector acceleration()
const override;
159 virtual void setAcceleration(
const DtVector&)
override;
161 virtual const DtTaitBryan orientation()
const override;
162 virtual void setOrientation(
const DtTaitBryan&)
override;
165 virtual const DtVector& rotationalVelocity()
const override;
166 virtual void setRotationalVelocity(
const DtVector&)
override;
168 virtual const bool locationChanged()
const override;
170 virtual const DtVector& worldPosition()
const override;
171 virtual const DtVector& relativePosition()
const override;
172 virtual const DtVector& parentPosition()
const override;
173 virtual const DtStationName parentStationName()
const override;
174 virtual const DtVector& localPosition()
const override;
175 virtual const DtVector& worldVelocity()
const override;
176 virtual const DtVector& localVelocity()
const override;
177 virtual const DtVector& worldAcceleration()
const override;
178 virtual const DtVector& localAcceleration()
const override;
179 virtual const DtTaitBryan& worldOrientation()
const override;
180 virtual const DtTaitBryan& topographicOrientation()
const override;
181 virtual const DtTaitBryan& parentOrientation()
const override;
182 virtual const DtTaitBryan& localOrientation()
const override;
183 virtual const DtDcm& worldOrientationMatrix()
const override;
184 virtual const bool localPositionIsValid()
const override;
186 virtual const bool spatiallyFrozen()
const override;
187 virtual void setSpatiallyFrozen(
const bool&)
override;
189 virtual const DtThresholder& thresholder()
const override;
190 virtual DtThresholder& thresholder()
override;
192 virtual const double heading()
const override;
193 virtual const double pitch()
const override;
194 virtual const double roll()
const override;
196 virtual const double localSpeed()
const override;
198 virtual const double worldSpeed()
const override;
200 virtual const DtDcm& parentOrientationMatrix()
const override;
201 virtual void setLocalOrientationMatrix(
const DtDcm&)
override;
202 virtual void setLocalOrientation(
const DtTaitBryan&)
override;
203 virtual void setLocalOrientationWrtDatabase(
const DtTaitBryan&)
override;
205 virtual const DtDcm& localOrientationMatrix()
const override;
206 virtual const DtTaitBryan& localOrientationWrtDatabase()
const override;
208 virtual void setRelativeVelocity(
const DtVector&)
override;
209 virtual void setRelativeAcceleration(
const DtVector&)
override;
210 virtual void setParentVelocity(
const DtVector&)
override;
211 virtual void setParentAcceleration(
const DtVector&)
override;
212 virtual void setLocalVelocity(
const DtVector&)
override;
213 virtual void setLocalAcceleration(
const DtVector&)
override;
214 virtual void setLocalPosition(
const DtVector&)
override;
215 virtual void setWorldPosition(
const DtVector&)
override;
216 virtual void setWorldVelocity(
const DtVector&)
override;
217 virtual void setWorldAcceleration(
const DtVector&)
override;
218 virtual void setWorldOrientation(
const DtTaitBryan&)
override;
219 virtual void setParentOrientation(
const DtTaitBryan&)
override;
220 virtual void setParentPosition(
const DtVector&)
override;
221 virtual void setParentStationName(DtStationName)
override;
222 virtual void setWorldOrientationMatrix(
const DtDcm&)
override;
223 virtual void setLocalSpeed(
double)
override;
226 virtual const DtVector& relativeVelocity()
const override;
227 virtual const DtVector& relativeAcceleration()
const override;
228 virtual const DtVector& parentVelocity()
const override;
229 virtual const DtVector& parentAcceleration()
const override;
230 virtual const DtVector bodyVelocity()
const override;
238 virtual void makeWritable()
override;
241 virtual void makeReadOnly()
override;
242 void slot_hostDestroyed();
244 bool needsEmbarkCheck();
245 void clearNeedsEmbarkCheck();
268 virtual const DtUUID& hostGlobalId()
const override;
269 virtual const int objectAttachMode()
const override;
272 virtual const bool frozen()
const override;
273 virtual const bool localPositionIsValid()
const override;
278 virtual const DtVector location()
const override;
279 virtual const DtVector velocity()
const override;
280 virtual const DtVector acceleration()
const override;
281 virtual const DtTaitBryan orientation()
const override;
284 virtual const DtVector& rotationalVelocity()
const override;
285 virtual const double heading()
const override;
286 virtual const double pitch()
const override;
287 virtual const double roll()
const override;
288 virtual const double localSpeed()
const override;
289 virtual const double worldSpeed()
const override;
291 virtual const DtDeadReckonTypes algorithm()
const override;
293 virtual const bool spatiallyFrozen()
const override;
294 virtual const DtThresholder& thresholder()
const override;
296 virtual const DtVector& worldPosition()
const override;
297 virtual const DtVector& worldVelocity()
const override;
298 virtual const DtVector& worldAcceleration()
const override;
299 virtual const DtVector& relativePosition()
const override;
300 virtual const DtVector& parentPosition()
const override;
301 virtual const DtStationName parentStationName()
const override;
302 virtual const DtVector& relativeVelocity()
const override;
303 virtual const DtVector& relativeAcceleration()
const override;
304 virtual const DtVector& parentVelocity()
const override;
305 virtual const DtVector& parentAcceleration()
const override;
306 virtual const DtVector bodyVelocity()
const override;
307 virtual const DtTaitBryan& worldOrientation()
const override;
308 virtual const DtTaitBryan& topographicOrientation()
const override;
309 virtual const DtTaitBryan& parentOrientation()
const override;
311 virtual const DtDcm& parentOrientationMatrix()
const override;
313 virtual const DtVector& localPosition()
const override;
314 virtual const DtVector& localVelocity()
const override;
315 virtual const DtVector& localAcceleration()
const override;
316 virtual const DtTaitBryan& localOrientation()
const override;
318 virtual const DtDcm& worldOrientationMatrix()
const override;
319 virtual const DtDcm& localOrientationMatrix()
const override;
320 virtual const DtTaitBryan& localOrientationWrtDatabase()
const override;
322 virtual const bool locationChanged()
const override;
325 void refreshKinematicState()
const;
330 void setLocationChanged(
bool);
331 virtual void needsKinematicStateRefresh();
332 virtual void needsEmbarkedCheck();
339 void handleDataUpdated(
const std::vector<UInt32>& attributesUpdated);
340 virtual void updateSpatial();
341 const DtVector _rotationalVelocity()
const;
350 mutable bool myInKinematicStateRefresh =
false;
374 virtual bool forceAdvance()
override;
376 virtual void updateDataStorage()
override;
380 myCurrentFrameState.updateStateData(sd);
381 myNextFrameState.updateStateData(sd);
387 myCurrentFrameState.aboutToBeDeleted();
388 myNextFrameState.aboutToBeDeleted();
394 virtual void hostWasDeleted();
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
#define UNDEFINED_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:68
LOM::WriteEntityRepository myWriteEntityStateRepository
Definition: entityLocationStateComponent.h:248
DtEntityLocationStateComponentCurrentFrame myCurrentFrameState
Definition: entityLocationStateComponent.h:397
DtRwVrfKinematicState * myKinematicState
Definition: entityLocationStateComponent.h:249
The DtLocationStateComponent interface contains the interface that all DtLocationStateComponents can ...
Definition: locationStateComponent.h:25
bool myFirstVelocitySet
Definition: entityLocationStateComponent.h:255
virtual void aboutToBeDeleted() override
Definition: entityLocationStateComponent.h:384
2) 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: entityLocationStateComponent.h:116
Definition: stateComponent.h:71
tbb::mutex myKinematicStateMutex
Definition: entityLocationStateComponent.h:348
Definition: stateComponent.h:269
DtEntityLocationStateComponentData & operator=(const DtEntityLocationStateComponentData &rhs)
Definition: entityLocationStateComponent.h:46
DtEntityLocationStateComponentData myData
Definition: entityLocationStateComponent.h:353
unsigned int myCallbackHandle
Definition: entityLocationStateComponent.h:352
DtEntityLocationStateComponentData()
Definition: entityLocationStateComponent.h:30
DtEntityLocationStateComponentData myData
Definition: entityLocationStateComponent.h:253
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: entityLocationStateComponent.h:368
#define UNDEFINED_RETURNREF_ACCESSORS(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:40
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
virtual const DtDeadReckonTypes deadReckoningAlgorithm() const override
Definition: entityLocationStateComponent.h:144
DtStateComponentCreator< DtEntityLocationStateComponentImplementation > DtEntityLocationStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: entityLocationStateComponent.h:406
#define UNDEFINED_RETURNREF_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:34
DtStateDataManager * myStateDataManager
Definition: entityLocationStateComponent.h:346
DtEntityLocationStateComponentData(const DtEntityLocationStateComponentData &orig)
Definition: entityLocationStateComponent.h:37
bool myNeedsEmbarkedCheck
Definition: entityLocationStateComponent.h:355
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: entityLocationStateComponent.h:366
3) Define the current frame class. This will be used for read access.
Definition: entityLocationStateComponent.h:259
LOM::ReadEntityRepository myReadEntityStateRepository
Definition: entityLocationStateComponent.h:344
bool mySpatiallyFrozen
Definition: entityLocationStateComponent.h:65
boost::signals2::scoped_connection myHostDeletedConnection
Definition: entityLocationStateComponent.h:254
DtStateDataManager * myStateDataManager
Definition: entityLocationStateComponent.h:250
DtRwVrfKinematicState * myKinematicState
Definition: entityLocationStateComponent.h:351
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
bool isDoubleBuffered()
Definition: entityLocationStateComponent.h:365
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
const DtEntityLocationStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: entityLocationStateComponent.h:266
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
DtEntityLocationStateComponentInterface(DtStateData *storage)
Definition: entityLocationStateComponent.h:74
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: entityLocationStateComponent.h:378
DtThresholder myThresholder
Definition: entityLocationStateComponent.h:66
bool myNeedsKinematicStateRefresh
Definition: entityLocationStateComponent.h:349
tbb::spin_rw_mutex myWriteStateMutex
Definition: entityLocationStateComponent.h:252
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
virtual void aboutToBeDeleted()
const DtEntityLocationStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: entityLocationStateComponent.h:135
2) Define the next frame class. This will be used for write access.
Definition: entityLocationStateComponent.h:128
DtStateData * myLastAttachedTo
Definition: entityLocationStateComponent.h:400
boost::signals2::scoped_connection myHostWasDeletedConnection
Definition: entityLocationStateComponent.h:401
DtEntityLocationStateComponent * myLastAttachedToLocationStateComponent
Definition: entityLocationStateComponent.h:399
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
#define DEFINE_REF_ACCESSORS(ReturnType, Method, Member)
Definition: doubleBufferedDataStorage.h:13
Definition: entityLocationStateComponent.h:71
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
bool myNeedsEmbarkCheck
Definition: entityLocationStateComponent.h:68
DtEntityLocationStateComponentData & frameState()
Definition: entityLocationStateComponent.h:136
void advanceFrame(const DtEntityLocationStateComponentData &data)
Definition: entityLocationStateComponent.h:333
virtual const DtDeadReckonTypes deadReckoningAlgorithm() const override
Definition: entityLocationStateComponent.h:292
Definition: entityLocationStateComponent.h:28
DtStationName myStationName
Definition: entityLocationStateComponent.h:67
virtual DtFrameStateInterface * nextFrameState() override
Definition: entityLocationStateComponent.h:367
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
bool myLocationChanged
Definition: entityLocationStateComponent.h:345
DtUUID myHostGlobalId
Definition: entityLocationStateComponent.h:64
unsigned int myEmbarkedCallbackHandle
Definition: entityLocationStateComponent.h:354
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: entityLocationStateComponent.h:360
DtEntityLocationStateComponentNextFrame myNextFrameState
Definition: entityLocationStateComponent.h:398
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73