16 #include <matrix/vlVector.h>
17 #include <matrix/vlTaitBryan.h>
26 class DtSceneObjectUpdater;
45 AttachedPointTypeInvalidObject
52 AttachedPointModeOrientationOnly
62 : myAttachedPointType( type )
63 , myTargetVertexIndex( targetVertexIndex )
64 , myPositionOffset( positionOffset )
65 , myAttachedPointMode(AttachedPointModePositionAndOrientation)
73 return myAttachedPointType;
76 int targetVertexIndex()
78 return myTargetVertexIndex;
88 return myPositionOffset;
93 myAttachedPointMode =
mode;
98 return myAttachedPointMode;
116 int targetVertexIndex,
const DtVector& positionOffset )
117 :
AttachedPoint( AttachedPointTypeObject, targetVertexIndex, positionOffset )
118 , mySceneObject( sceneObject )
119 , myUpdater( updater )
120 , mySceneObjectId( 0 )
128 mySceneObject = sceneObject;
132 mySceneObjectId = sceneObject->
uniqueId();
142 return mySceneObjectId;
147 return mySceneObject;
175 :
AttachedPoint( AttachedPointTypeVertex, targetVertexIndex, positionOffset )
176 , myVertex( position )
198 int vtx1,
int vtx2,
double proportion,
int targetVertexIndex,
202 , mySecondVtx( vtx2 )
203 , myProportion( proportion )
205 myAttachedPointType = AttachedPointTypeProportional;
208 inline int firstVtx()
213 inline int secondVtx()
218 inline double proportion()
240 virtual bool needsUpdate(
DtTime tNow );
245 virtual void addAttachedPoint(
const DtVector& position,
int targetVertexIndex );
250 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int targetVertexIndex );
255 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int vtx1,
int vtx2,
256 double proportion,
int targetVertexIndex );
262 virtual const AttachedPoint& attachedPoint(
int targetVertexIndex )
const;
276 virtual void setPositionOffset(
const DtVector&
offset,
int vtx );
280 virtual void setOrientationOffset(
const DtTaitBryan&
offset);
284 virtual void setWorldOrientationOffset(
const DtTaitBryan&
offset);
287 virtual void setAttachedPointMode(
unsigned int mode,
int vtx );
290 virtual void update(
DtTime tNow );
298 virtual void doAttachment(
DtTime tNow );
302 return myLastUpdateTime;
309 virtual void slot_sceneObjectToBeDeleted(
const DtUniqueID&
id );
310 virtual void slot_attachedSceneObjectToBeDeleted(
const DtUniqueID& );
311 virtual void slot_attachedUpdaterToBeDeleted(
const DtUniqueID&
id );
315 virtual bool pointLocationAndOrientation( AttachedPoint* point,
316 double simTime,
DtVector& location, DtTaitBryan& orientation );
319 virtual void removeAttachedPoint(
int vtx,
DtVector* positionOffset = 0);