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; };
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."); };
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 const std::vector<DtTaskVisualizationStateComponentData::LineVertex>& vertices()
const;
324 std::vector<DtTaskVisualizationStateComponentData::LineVertex>& vertices();
326 const unsigned int numberOfVertices()
const;
328 void setComponentName(
const DtString&);
329 const DtString& componentName()
const;
331 void setVisualizationName(
const DtString&);
332 const DtString& visualizationName()
const;
334 void setAttachedObject(
const DtUUID&);
335 const DtUUID& attachedObject()
const;
340 void setRed(
const unsigned int&);
341 const unsigned int& red()
const;
343 void setGreen(
const unsigned int&);
344 const unsigned int& green()
const;
346 void setBlue(
const unsigned int&);
347 const unsigned int& blue()
const;
349 void setAlpha(
const unsigned int&);
350 const unsigned int& alpha()
const;
352 void setSize(
const unsigned int&);
353 const unsigned int size()
const;
358 void setLocationOffset(
const DtVector&);
359 const DtVector& locationOffset()
const;
364 void setArrowAtStart(
const bool&);
365 const bool& arrowAtStart()
const;
367 void setArrowAtEnd(
const bool&);
368 const bool& arrowAtEnd()
const;
370 void setIsSizeLimited(
const bool&);
371 const bool& isSizeLimited()
const;
373 void setProjected(
const bool&);
374 const bool& projected()
const;
376 void setActive(
const bool&);
377 const bool& active()
const;
379 void setUseDrawControlForTaskVisualizations(
const bool&);
380 const bool& useDrawControlForTaskVisualizations()
const;
382 virtual void setColor(
unsigned int r,
unsigned int g,
unsigned int b,
unsigned int a);
383 virtual void setVertices(
const std::vector<DtTaskVisualizationStateComponentData::LineVertex>&);
384 virtual void setVertices(
const std::vector<DtVector>&);
385 virtual void setVertices(
const std::vector<DtUUID>&);
386 virtual void setVertex(
unsigned int i,
const DtVector&);
387 virtual void setVertex(
unsigned int i,
const DtUUID&);
389 const DtUUID& hostId()
const;
390 void setHostId(
const DtUUID&);
392 const DtEntityIdentifier& entityId()
const;
393 void setEntityId(
const DtEntityIdentifier&);
395 virtual const std::vector<DtVector>& pointVertices()
const;
403 void setupAsLineTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName);
404 void setupAsTextTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName);
405 void setupAsAreaTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName);
406 void setupAsPointTaskVisualization(
const DtEntityIdentifier& entityIdentifier,
const DtString& visualizationName,
const DtString& componentName);
427 const DtString& componentName()
const;
428 const DtString& visualizationName()
const;
429 const DtUUID& attachedObject()
const;
432 const unsigned int& red()
const;
433 const unsigned int& green()
const;
434 const unsigned int& blue()
const;
435 const unsigned int& alpha()
const;
436 const unsigned int size()
const;
442 const DtVector& locationOffset()
const;
444 const std::vector<DtTaskVisualizationStateComponentData::LineVertex>& vertices()
const;
445 const unsigned int numberOfVertices()
const;
447 const bool& arrowAtStart()
const;
448 const bool& arrowAtEnd()
const;
449 const bool& isSizeLimited()
const;
450 const bool& projected()
const;
451 const bool& active()
const;
452 const bool& useDrawControlForTaskVisualizations()
const;
453 const DtUUID& hostId()
const;
454 const DtEntityIdentifier& entityId()
const;
455 virtual const std::vector<DtVector>& pointVertices()
const;
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: rwUUID.h:229
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
Definition: stateDataTypes.h:23
Definition: taskVisualizationStateComponent.h:24
DtTaskVisualizationStateComponentData & frameState()
Definition: taskVisualizationStateComponent.h:319
virtual void makeReadOnly()
Override to make component read-only.
Definition: taskVisualizationStateComponent.h:401
#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 updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: taskVisualizationStateComponent.h:490
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:257
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
const unsigned int thickness() const
Definition: taskVisualizationStateComponent.h:356
#define UNDEFINED_RETURNREF_ACCESSORS(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:40
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
DtTaskVisualizationStateComponentData myData
Definition: taskVisualizationStateComponent.h:465
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 DtFrameStateInterface * nextFrameState()
Definition: taskVisualizationStateComponent.h:477
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:336
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
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:86
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:370
void setVertices(const std::vector< LineVertex > &v)
Definition: taskVisualizationStateComponent.h:174
void setThickness(const unsigned int &i)
Definition: taskVisualizationStateComponent.h:355
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
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
unsigned int mySize
Not all of these are used by all task visualizations.
Definition: taskVisualizationStateComponent.h:242
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
const DtFrameStateInterface * currentFrameState() const
Definition: taskVisualizationStateComponent.h:476
#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
void setVertex(int i, const DtUUID &v)
Definition: taskVisualizationStateComponent.h:211
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
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
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: taskVisualizationStateComponent.h:480
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
virtual void makeWritable()
Override to make component writable.
Definition: taskVisualizationStateComponent.h:398
DtTaskVisualizationStateComponentData myData
Definition: taskVisualizationStateComponent.h:413
Definition: taskVisualizationStateComponent.h:23
void setVertex(int i, const DtVector &v)
Definition: taskVisualizationStateComponent.h:199
const unsigned int thickness() const
Definition: taskVisualizationStateComponent.h:437
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.
virtual const DtFrameStateInterface * nextFrameState() const
Definition: taskVisualizationStateComponent.h:478
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
DtString myVisualizationName
Definition: taskVisualizationStateComponent.h:226
bool myProjected
Definition: taskVisualizationStateComponent.h:250
unsigned int myAlpha
Definition: taskVisualizationStateComponent.h:233