12 #include "vlpi/entityIdentifier.h"
47 : myVisualizationType(Unknown)
53 , myArrowAtStart(false)
55 , myIsSizeLimited(false)
58 , myUseDrawControlForTaskVisualizations(false)
59 , myAttachedObject(
DtUUID::nullUUID())
60 , myHostId(
DtUUID::nullUUID())
61 , myNeedsPointVerticesUpdate(false)
66 : myComponentName(orig.myComponentName)
67 , myVisualizationName(orig.myVisualizationName)
68 , myVisualizationType(orig.myVisualizationType)
70 , myGreen(orig.myGreen)
72 , myAlpha(orig.myAlpha)
73 , myLocationOffset(orig.myLocationOffset)
74 , myLocation(orig.myLocation)
76 , myAttachedObject(orig.myAttachedObject)
77 , myArrowAtStart(orig.myArrowAtStart)
78 , myArrowAtEnd(orig.myArrowAtEnd)
79 , myIsSizeLimited(orig.myIsSizeLimited)
80 , myProjected(orig.myProjected)
81 , myLineVertices(orig.myLineVertices)
83 , myActive(orig.myActive)
84 , myUseDrawControlForTaskVisualizations(orig.myUseDrawControlForTaskVisualizations)
85 , myHostId(orig.myHostId)
86 , myEntityId(orig.myEntityId)
87 , myPointVertices(orig.myPointVertices)
88 , myNeedsPointVerticesUpdate(orig.myNeedsPointVerticesUpdate)
90 if (myNeedsPointVerticesUpdate)
122 if (myNeedsPointVerticesUpdate)
152 const std::vector<DtVector>& pointVertices()
const
154 if (myNeedsPointVerticesUpdate)
156 myPointVertices.resize(myLineVertices.size());
158 std::vector<LineVertex>::const_iterator iter = myLineVertices.begin();
159 std::vector<LineVertex>::const_iterator end = myLineVertices.end();
160 std::vector<DtVector>::iterator ptIter = myPointVertices.begin();
163 (*ptIter) = iter->location;
168 myNeedsPointVerticesUpdate =
false;
171 return myPointVertices;
174 void setVertices(
const std::vector<LineVertex>& v) { myLineVertices = v; myNeedsPointVerticesUpdate =
true;};
177 myLineVertices.resize(v.size());
178 int i, iLimit = v.size();
179 for (i = 0; i < iLimit; i++)
181 myLineVertices[i].location = v[i];
189 myLineVertices.resize(v.size());
190 int i, iLimit = v.size();
191 for (i = 0; i < iLimit; i++)
193 myLineVertices[i].attachedObject = v[i];
196 myNeedsPointVerticesUpdate =
true;
201 if (i >= myLineVertices.size())
203 myLineVertices.resize(i+1);
204 myPointVertices.resize(i + 1);
207 myPointVertices[i] = v;
208 myLineVertices[i].location = v;
213 if (i >= myLineVertices.size())
215 myLineVertices.resize(i+1);
216 myPointVertices.resize(i + 1);
219 myLineVertices[i].attachedObject = v;
222 const std::vector<LineVertex>& linVertices()
const {
return myLineVertices; };
239 mutable std::vector<DtVector> myPointVertices{};
247 std::vector<LineVertex> myLineVertices{};
297 virtual const std::vector<DtVector>& pointVertices()
const {
throw DtUnimplementedMethod(
"void pointVertices() is unimplemented by this class."); };
298 virtual void setColor(
unsigned int r,
unsigned int g,
unsigned int b,
unsigned int a) {
throw DtUnimplementedMethod(
"setColor(r, g, b, a) is unimplemented by this class."); };
299 virtual void setVertex(
unsigned int i,
const DtVector&) {
throw DtUnimplementedMethod(
"void setVertex(unsigned int i, const DtVector&) is unimplemented by this class."); };
302 {
throw DtUnimplementedMethod(
"void setupAsLineTaskVisualization is unimplemented by this class."); };
304 {
throw DtUnimplementedMethod(
"void setupAsLineTaskVisualization is unimplemented by this class."); };
306 {
throw DtUnimplementedMethod(
"void setupAsLineTaskVisualization is unimplemented by this class."); };
308 {
throw DtUnimplementedMethod(
"void setupAsLineTaskVisualization is unimplemented by this class."); };
323 virtual const std::vector<DtTaskVisualizationStateComponentData::LineVertex>& vertices()
const override;
324 virtual std::vector<DtTaskVisualizationStateComponentData::LineVertex>& vertices()
override;
326 virtual const unsigned int numberOfVertices()
const override;
328 virtual void setComponentName(
const DtString&)
override;
329 virtual const DtString& componentName()
const override;
331 virtual void setVisualizationName(
const DtString&)
override;
332 virtual const DtString& visualizationName()
const override;
334 virtual void setAttachedObject(
const DtUUID&)
override;
335 virtual const DtUUID& attachedObject()
const override;
337 virtual void setText(
const DtString&)
override;
338 virtual const DtString& text()
const override;
340 virtual void setRed(
const unsigned int&)
override;
341 virtual const unsigned int& red()
const override;
343 virtual void setGreen(
const unsigned int&)
override;
344 virtual const unsigned int& green()
const override;
346 void setBlue(
const unsigned int&);
347 virtual const unsigned int& blue()
const override;
349 virtual void setAlpha(
const unsigned int&)
override;
350 virtual const unsigned int& alpha()
const override;
352 virtual void setSize(
const double&)
override;
353 virtual const double size()
const override;
355 virtual void setThickness(
const unsigned int& i)
override { setSize(i); };
358 virtual void setLocationOffset(
const DtVector&)
override;
359 virtual const DtVector& locationOffset()
const override;
361 virtual void setLocation(
const DtVector&)
override;
362 virtual const DtVector& location()
const override;
364 virtual void setArrowAtStart(
const bool&)
override;
365 virtual const bool& arrowAtStart()
const override;
367 virtual void setArrowAtEnd(
const bool&)
override;
368 virtual const bool& arrowAtEnd()
const override;
370 virtual void setIsSizeLimited(
const bool&)
override;
371 virtual const bool& isSizeLimited()
const override;
373 virtual void setProjected(
const bool&)
override;
374 virtual const bool& projected()
const override;
376 virtual void setActive(
const bool&)
override;
377 virtual const bool& active()
const override;
379 virtual void setUseDrawControlForTaskVisualizations(
const bool&)
override;
380 virtual const bool& useDrawControlForTaskVisualizations()
const override;
382 virtual void setColor(
unsigned int r,
unsigned int g,
unsigned int b,
unsigned int a)
override;
383 virtual void setVertices(
const std::vector<DtTaskVisualizationStateComponentData::LineVertex>&)
override;
384 virtual void setVertices(
const std::vector<DtVector>&)
override;
385 virtual void setVertices(
const std::vector<DtUUID>&)
override;
386 virtual void setVertex(
unsigned int i,
const DtVector&)
override;
387 virtual void setVertex(
unsigned int i,
const DtUUID&)
override;
389 virtual const DtUUID& hostId()
const override;
390 virtual void setHostId(
const DtUUID&)
override;
392 virtual const DtEntityIdentifier& entityId()
const override;
393 virtual void setEntityId(
const DtEntityIdentifier&)
override;
395 virtual const std::vector<DtVector>& pointVertices()
const override;
403 virtual void setupAsLineTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName)
override;
404 virtual void setupAsTextTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName)
override;
405 virtual void setupAsAreaTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName)
override;
406 virtual void setupAsPointTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName)
override;
427 virtual const DtString& componentName()
const override;
428 virtual const DtString& visualizationName()
const override;
429 virtual const DtUUID& attachedObject()
const override;
430 virtual const DtString& text()
const override;
432 virtual const unsigned int& red()
const override;
433 virtual const unsigned int& green()
const override;
434 virtual const unsigned int& blue()
const override;
435 virtual const unsigned int& alpha()
const override;
436 virtual const double size()
const override;
442 virtual const DtVector& locationOffset()
const override;
443 virtual const DtVector& location()
const override;
444 virtual const std::vector<DtTaskVisualizationStateComponentData::LineVertex>& vertices()
const override;
445 virtual const unsigned int numberOfVertices()
const override;
447 virtual const bool& arrowAtStart()
const override;
448 virtual const bool& arrowAtEnd()
const override;
449 virtual const bool& isSizeLimited()
const override;
450 virtual const bool& projected()
const override;
451 virtual const bool& active()
const override;
452 virtual const bool& useDrawControlForTaskVisualizations()
const override;
453 virtual const DtUUID& hostId()
const override;
454 virtual const DtEntityIdentifier& entityId()
const override;
455 virtual const std::vector<DtVector>& pointVertices()
const override;
482 if (myNextFrameState.isWritable())
484 myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
487 myCurrentFrameState.emitComponentUpdated();
492 myCurrentFrameState.updateStateData(sd);
493 myNextFrameState.updateStateData(sd);
496 static void setMaximumLineSegements(
unsigned max);
497 static unsigned maximumLineSegments();
507 myCurrentFrameState.aboutToBeDeleted();
508 myNextFrameState.aboutToBeDeleted();
virtual void setupAsAreaTaskVisualization(const DtEntityIdentifier &entityIdentifier, const DtString &visualizationName, const DtString &componentName)
Definition: taskVisualizationStateComponent.h:303
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual void setupAsTextTaskVisualization(const DtEntityIdentifier &entityIdentifier, const DtString &visualizationName, const DtString &componentName)
Definition: taskVisualizationStateComponent.h:305
Definition: taskVisualizationStateComponent.h:28
virtual void aboutToBeDeleted() override
Definition: taskVisualizationStateComponent.h:504
virtual void makeWritable() override
Override to make component writable.
Definition: taskVisualizationStateComponent.h:398
Definition: stateDataTypes.h:23
Definition: taskVisualizationStateComponent.h:24
DtTaskVisualizationStateComponentData & frameState()
Definition: taskVisualizationStateComponent.h:319
#define UNDEFINED_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:68
Definition: taskVisualizationStateComponent.h:17
DtUUID myAttachedObject
Definition: taskVisualizationStateComponent.h:244
VisualizationType
Definition: taskVisualizationStateComponent.h:19
void advanceFrame(const DtTaskVisualizationStateComponentData &d)
Definition: taskVisualizationStateComponent.h:459
const DtTaskVisualizationStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: taskVisualizationStateComponent.h:318
Definition: stateComponent.h:269
DtVector myLocationOffset
Location offset in forward, right, down entity coordinates.
Definition: taskVisualizationStateComponent.h:238
DtString myComponentName
Definition: taskVisualizationStateComponent.h:222
bool myIsSizeLimited
Definition: taskVisualizationStateComponent.h:251
voidpf void uLong size
Definition: ioapi.h:39
unsigned int myRed
Definition: taskVisualizationStateComponent.h:230
bool myArrowAtEnd
Definition: taskVisualizationStateComponent.h:248
#define UNDEFINED_RETURNREF_ACCESSORS(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:40
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
virtual void makeReadOnly() override
Override to make component read-only.
Definition: taskVisualizationStateComponent.h:401
DtTaskVisualizationStateComponentData myData
Definition: taskVisualizationStateComponent.h:465
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: taskVisualizationStateComponent.h:490
Contains the DtUUID class declaration.
DtUUID myHostId
Definition: taskVisualizationStateComponent.h:228
#define UNDEFINED_RETURNREF_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:34
2) Define the next frame class. This will be used for write access.
Definition: taskVisualizationStateComponent.h:312
DtTaskVisualizationStateComponentNextFrame myNextFrameState
Definition: taskVisualizationStateComponent.h:513
virtual void setupAsLineTaskVisualization(const DtEntityIdentifier &entityIdentifier, const DtString &visualizationName, const DtString &componentName)
Definition: taskVisualizationStateComponent.h:301
DtEntityIdentifier myEntityId
Definition: taskVisualizationStateComponent.h:227
Definition: taskVisualizationStateComponent.h:22
virtual void setupAsPointTaskVisualization(const DtEntityIdentifier &entityIdentifier, const DtString &visualizationName, const DtString &componentName)
Definition: taskVisualizationStateComponent.h:307
void setVertices(const std::vector< DtUUID > &v)
Definition: taskVisualizationStateComponent.h:187
virtual void setColor(unsigned int r, unsigned int g, unsigned int b, unsigned int a)
Definition: taskVisualizationStateComponent.h:298
DtTaskVisualizationStateComponentData()
Definition: taskVisualizationStateComponent.h:46
bool myUseDrawControlForTaskVisualizations
Definition: taskVisualizationStateComponent.h:235
DtStateComponentCreator< DtTaskVisualizationStateComponentImplementation > DtTaskVisualizationStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: taskVisualizationStateComponent.h:519
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
virtual DtFrameStateInterface * nextFrameState() override
Definition: taskVisualizationStateComponent.h:477
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
virtual void setVertex(unsigned int i, const DtVector &)
Definition: taskVisualizationStateComponent.h:299
IMGUI_API void Text(const char *fmt,...) IM_FMTARGS(1)
std::vector< LineVertex > myLineVertices
For line objects.
Definition: taskVisualizationStateComponent.h:247
DtTaskVisualizationStateComponentData(const DtTaskVisualizationStateComponentData &orig)
Definition: taskVisualizationStateComponent.h:65
bool myActive
Definition: taskVisualizationStateComponent.h:234
Definition: stateComponent.h:91
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
void setVertices(const std::vector< LineVertex > &v)
Definition: taskVisualizationStateComponent.h:174
virtual const unsigned int thickness() const override
Definition: taskVisualizationStateComponent.h:356
std::vector< DtVector > myPointVertices
Definition: taskVisualizationStateComponent.h:239
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
virtual void aboutToBeDeleted()
DtTaskVisualizationStateComponentData::VisualizationType myVisualizationType
Definition: taskVisualizationStateComponent.h:229
virtual void setThickness(const unsigned int &i) override
Definition: taskVisualizationStateComponent.h:355
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: taskVisualizationStateComponent.h:470
void setVertices(const std::vector< DtVector > &v)
Definition: taskVisualizationStateComponent.h:175
DtTaskVisualizationStateComponentData & operator=(const DtTaskVisualizationStateComponentData &rhs)
Definition: taskVisualizationStateComponent.h:96
DtTaskVisualizationStateComponentCurrentFrame myCurrentFrameState
Definition: taskVisualizationStateComponent.h:512
bool operator==(const LineVertex &rhs) const
Definition: taskVisualizationStateComponent.h:40
virtual void setVertex(unsigned int i, const DtUUID &)
Definition: taskVisualizationStateComponent.h:300
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
bool myArrowAtStart
Definition: taskVisualizationStateComponent.h:249
#define DEFINE_REF_ACCESSORS(ReturnType, Method, Member)
Definition: doubleBufferedDataStorage.h:13
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
virtual void updateDataStorage() override
Implement to update data storage. Called from advanceFrame.
Definition: taskVisualizationStateComponent.h:480
void setVertex(int i, const DtUUID &v)
Definition: taskVisualizationStateComponent.h:211
virtual const unsigned int thickness() const override
Definition: taskVisualizationStateComponent.h:437
static int theMaximumLineSegments
Definition: taskVisualizationStateComponent.h:514
DtString myText
Text.
Definition: taskVisualizationStateComponent.h:255
unsigned int myGreen
Definition: taskVisualizationStateComponent.h:231
bool isDoubleBuffered()
Definition: taskVisualizationStateComponent.h:475
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: taskVisualizationStateComponent.h:478
3) Define the current frame class. This will be used for read access.
Definition: taskVisualizationStateComponent.h:417
#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
DtVector location
Geocentric location of the vertex (if not attached).
Definition: taskVisualizationStateComponent.h:31
DtUUID attachedObject
Global ID of the object the point is attached to. If blank, use specified location instead...
Definition: taskVisualizationStateComponent.h:38
bool myNeedsPointVerticesUpdate
Definition: taskVisualizationStateComponent.h:252
const DtTaskVisualizationStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: taskVisualizationStateComponent.h:423
double mySize
Not all of these are used by all task visualizations.
Definition: taskVisualizationStateComponent.h:242
DtTaskVisualizationStateComponentData myData
Definition: taskVisualizationStateComponent.h:413
Definition: taskVisualizationStateComponent.h:23
void setVertex(int i, const DtVector &v)
Definition: taskVisualizationStateComponent.h:199
unsigned int myBlue
Definition: taskVisualizationStateComponent.h:232
1) Define the interface class that will be used to represent the next and current frames...
Definition: taskVisualizationStateComponent.h:260
DtVector myLocation
Definition: taskVisualizationStateComponent.h:243
Contains the DtStateComponent class declaration.
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: taskVisualizationStateComponent.h:476
DtString myVisualizationName
Definition: taskVisualizationStateComponent.h:226
bool myProjected
Definition: taskVisualizationStateComponent.h:250
unsigned int myAlpha
Definition: taskVisualizationStateComponent.h:233