16 #include <matrix/vlVector.h>
17 #include <matrix/vlTaitBryan.h>
27 class DtSceneObjectUpdater;
46 AttachedPointTypeInvalidObject
53 AttachedPointModeOrientationOnly
63 : myAttachedPointType( type )
64 , myTargetVertexIndex( targetVertexIndex )
65 , myPositionOffset( positionOffset )
66 , myAttachedPointMode(AttachedPointModePositionAndOrientation)
74 return myAttachedPointType;
77 int targetVertexIndex()
79 return myTargetVertexIndex;
89 return myPositionOffset;
94 myAttachedPointMode = mode;
99 return myAttachedPointMode;
117 int targetVertexIndex,
const DtVector& positionOffset )
118 :
AttachedPoint( AttachedPointTypeObject, targetVertexIndex, positionOffset )
119 , mySceneObject( sceneObject )
120 , myUpdater( updater )
128 mySceneObject = sceneObject;
133 return mySceneObject;
160 :
AttachedPoint( AttachedPointTypeVertex, targetVertexIndex, positionOffset )
161 , myVertex( position )
183 int vtx1,
int vtx2,
double proportion,
int targetVertexIndex,
187 , mySecondVtx( vtx2 )
188 , myProportion( proportion )
190 myAttachedPointType = AttachedPointTypeProportional;
193 inline int firstVtx()
198 inline int secondVtx()
203 inline double proportion()
225 virtual bool needsUpdate(
DtTime tNow );
230 virtual void addAttachedPoint(
const DtVector& position,
int targetVertexIndex );
235 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int targetVertexIndex );
240 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int vtx1,
int vtx2,
241 double proportion,
int targetVertexIndex );
247 virtual const AttachedPoint& attachedPoint(
int targetVertexIndex )
const;
251 virtual void setPositionOffset(
const DtVector& offset );
256 virtual void setPositionOffset(
const DtVector& offset,
int vtx );
260 virtual void setOrientationOffset(
const DtTaitBryan& offset);
263 virtual void setAttachedPointMode(
unsigned int mode,
int vtx );
266 virtual void update(
DtTime tNow );
274 virtual void doAttachment(
DtTime tNow );
278 return myLastUpdateTime;
285 virtual void slot_sceneObjectToBeDeleted(
const DtUniqueID&
id );
286 virtual void slot_attachedSceneObjectToBeDeleted(
const DtUniqueID& );
287 virtual void slot_attachedUpdaterToBeDeleted(
const DtUniqueID&
id );
291 virtual bool pointLocationAndOrientation( AttachedPoint* point,
292 double simTime,
DtVector& location, DtTaitBryan& orientation );
295 virtual void removeAttachedPoint(
int vtx,
DtVector* positionOffset = 0);