10 #include <legionStandardOM/sets/readDesignatorRepository.hpp>
11 #include <legionStandardOM/sets/writeDesignatorRepository.hpp>
13 #include <matrix/vlVector.h>
23 : myDesignatedObject(
DtUUID::nullUUID())
24 , myDesignatorId(
DtUUID::nullUUID())
30 : myDesignatedObject(orig.myDesignatedObject)
31 , myDesignatorId(orig.myDesignatorId)
32 , myGlobalId(orig.myGlobalId)
33 , myUserData(orig.myUserData)
53 DtUUID myDesignatedObject;
54 DtUUID myDesignatorId;
56 unsigned long long myUserData;
67 : DtFrameStateInterface(storage)
97 virtual const DtUUID& designatedObject()
const override;
98 virtual void setDesignatedObject(
const DtUUID&)
override;
100 virtual const DtUUID& designatorId()
const override;
101 virtual void setDesignatorId(
const DtUUID&)
override;
103 virtual const unsigned int designatorCode()
const override;
104 virtual void setDesignatorCode(
const unsigned int&)
override;
106 virtual const unsigned long long userData()
const override;
107 virtual void setUserData(
const unsigned long long&)
override;
109 virtual const unsigned int drAlgorithm()
const override;
110 virtual void setDrAlgorithm(
const unsigned int&)
override;
112 virtual const unsigned int codeName()
const override;
113 virtual void setCodeName(
const unsigned int&)
override;
115 virtual const DtVector spotLinearAcceleration()
const override;
116 virtual void setSpotLinearAcceleration(
const DtVector&)
override;
118 virtual const double designatorPower()
const override;
119 virtual void setDesignatorPower(
const double&)
override;
121 virtual const double designatorWavelength()
const override;
122 virtual void setDesignatorWavelength(
const double&)
override;
124 virtual const DtVector designatorSpotLocation()
const override;
125 virtual void setDesignatorSpotLocation(
const DtVector&)
override;
127 virtual const DtVector relativeSpotLocation()
const override;
128 virtual void setRelativeSpotLocation(
const DtVector&)
override;
130 virtual const DtVector relativePosition()
const override;
131 virtual void setRelativePosition(
const DtVector&)
override;
133 virtual const DtString& globalId()
const override;
134 virtual void setGlobalId(
const DtString&)
override;
137 virtual void makeWritable()
override;
140 virtual void makeReadOnly()
override;
141 void cleanupWriteState();
158 virtual const unsigned long long userData()
const override;
159 virtual const DtUUID& designatedObject()
const override;
160 virtual const DtUUID& designatorId()
const override;
161 virtual const unsigned int designatorCode()
const override;
162 virtual const double designatorPower()
const override;
163 virtual const double designatorWavelength()
const override;
164 virtual const DtVector designatorSpotLocation()
const override;
165 virtual const DtVector relativeSpotLocation()
const override;
166 virtual const DtVector relativePosition()
const override;
167 virtual const unsigned int codeName()
const override;
168 virtual const DtVector spotLinearAcceleration()
const override;
169 virtual const unsigned int drAlgorithm()
const override;
170 virtual const DtString& globalId()
const override;
172 bool readComponentValid()
const;
173 bool findReadComponent();
176 void handleDataUpdated();
202 virtual bool forceAdvance()
override;
206 if (myNextFrameState.isWritable())
208 if (!myFoundComponent)
210 myFoundComponent = myCurrentFrameState.findReadComponent();
213 myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
216 myCurrentFrameState.emitComponentUpdated();
221 myCurrentFrameState.updateStateData(sd);
222 myNextFrameState.updateStateData(sd);
228 myCurrentFrameState.aboutToBeDeleted();
229 myNextFrameState.aboutToBeDeleted();
232 virtual void firstFrameAdvance()
override;
233 virtual void removeAdditionalStateComponents()
override;
UUID is a unique ID wrapper class.
Definition: uuid.h:59
const DtLaserDesignatorStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: laserDesignatorStateComponent.h:156
Definition: stateComponent.h:84
DtLaserDesignatorStateComponentData myData
Definition: laserDesignatorStateComponent.h:185
DtUUID myDesignatedObject
Definition: laserDesignatorStateComponent.h:53
LOM::ReadDesignatorRepository myReadDesignatorRepository
Definition: laserDesignatorStateComponent.h:186
Definition: stateComponent.h:269
DtStateComponentCreator< DtLaserDesignatorStateComponentImplementation > DtLaserDesignatorStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: laserDesignatorStateComponent.h:243
DtLaserDesignatorStateComponentData & operator=(const DtLaserDesignatorStateComponentData &rhs)
Definition: laserDesignatorStateComponent.h:37
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: laserDesignatorStateComponent.h:200
DtLaserDesignatorStateComponentNextFrame myNextFrameState
Definition: laserDesignatorStateComponent.h:237
Contains the DtUUID class declaration.
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: laserDesignatorStateComponent.h:192
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: laserDesignatorStateComponent.h:198
virtual void updateDataStorage() override
Implement to update data storage. Called from advanceFrame.
Definition: laserDesignatorStateComponent.h:204
The DtLaserDesignatorStateComponentList is a collection of laser designators. Each laser designator m...
Definition: laserDesignatorStateComponent.h:20
DtLaserDesignatorStateComponentData()
Definition: laserDesignatorStateComponent.h:22
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
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: laserDesignatorStateComponent.h:61
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
unsigned long long myUserData
Definition: laserDesignatorStateComponent.h:56
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
LOM::WriteDesignatorRepository myWriteDesignatorRepository
Definition: laserDesignatorStateComponent.h:145
DtUUID myDesignatorId
Definition: laserDesignatorStateComponent.h:54
DtLaserDesignatorStateComponentData & frameState()
Definition: laserDesignatorStateComponent.h:95
2) Define the next frame class. This will be used for write access.
Definition: laserDesignatorStateComponent.h:87
virtual void aboutToBeDeleted()
bool isDoubleBuffered()
Definition: laserDesignatorStateComponent.h:197
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: laserDesignatorStateComponent.h:219
3) Define the current frame class. This will be used for read access.
Definition: laserDesignatorStateComponent.h:149
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
DtLaserDesignatorStateComponentData myData
Definition: laserDesignatorStateComponent.h:144
virtual void aboutToBeDeleted() override
Definition: laserDesignatorStateComponent.h:225
int myCallbackHandle
Definition: laserDesignatorStateComponent.h:187
#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
const DtLaserDesignatorStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: laserDesignatorStateComponent.h:94
DtLaserDesignatorStateComponentCurrentFrame myCurrentFrameState
Definition: laserDesignatorStateComponent.h:236
virtual DtFrameStateInterface * nextFrameState() override
Definition: laserDesignatorStateComponent.h:199
Contains the DtStateComponent class declaration.
bool myFoundComponent
Definition: laserDesignatorStateComponent.h:238
DtString myGlobalId
Definition: laserDesignatorStateComponent.h:55
DtLaserDesignatorStateComponentData(const DtLaserDesignatorStateComponentData &orig)
Definition: laserDesignatorStateComponent.h:29
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
void advanceFrame(const DtLaserDesignatorStateComponentData &data)
Definition: laserDesignatorStateComponent.h:179