15 #include <matrix/vlVector.h>
16 #include <matrix/vlTaitBryan.h>
25 class DtSceneObjectUpdater;
44 AttachedPointTypeInvalidObject
51 AttachedPointModeOrientationOnly
61 : myAttachedPointType( type )
62 , myTargetVertexIndex( targetVertexIndex )
63 , myPositionOffset( positionOffset )
64 , myAttachedPointMode(AttachedPointModePositionAndOrientation)
72 return myAttachedPointType;
75 int targetVertexIndex()
77 return myTargetVertexIndex;
87 return myPositionOffset;
92 myAttachedPointMode = mode;
97 return myAttachedPointMode;
115 int targetVertexIndex,
const DtVector& positionOffset )
116 :
AttachedPoint( AttachedPointTypeObject, targetVertexIndex, positionOffset )
117 , mySceneObject( sceneObject )
118 , myUpdater( updater )
126 mySceneObject = sceneObject;
131 return mySceneObject;
158 :
AttachedPoint( AttachedPointTypeVertex, targetVertexIndex, positionOffset )
159 , myVertex( position )
181 int vtx1,
int vtx2,
double proportion,
int targetVertexIndex,
185 , mySecondVtx( vtx2 )
186 , myProportion( proportion )
188 myAttachedPointType = AttachedPointTypeProportional;
191 inline int firstVtx()
196 inline int secondVtx()
201 inline double proportion()
223 virtual bool needsUpdate(
DtTime tNow );
228 virtual void addAttachedPoint(
const DtVector& position,
int targetVertexIndex );
233 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int targetVertexIndex );
238 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int vtx1,
int vtx2,
239 double proportion,
int targetVertexIndex );
245 virtual const AttachedPoint& attachedPoint(
int targetVertexIndex )
const;
249 virtual void setPositionOffset(
const DtVector& offset );
254 virtual void setWorldPositionOffset(
const DtVector& offset );
259 virtual void setPositionOffset(
const DtVector& offset,
int vtx );
263 virtual void setOrientationOffset(
const DtTaitBryan& offset);
267 virtual void setWorldOrientationOffset(
const DtTaitBryan& offset);
270 virtual void setAttachedPointMode(
unsigned int mode,
int vtx );
273 virtual void update(
DtTime tNow );
281 virtual void doAttachment(
DtTime tNow );
285 return myLastUpdateTime;
292 virtual void slot_sceneObjectToBeDeleted(
const DtUniqueID&
id );
293 virtual void slot_attachedSceneObjectToBeDeleted(
const DtUniqueID& );
294 virtual void slot_attachedUpdaterToBeDeleted(
const DtUniqueID&
id );
298 virtual bool pointLocationAndOrientation( AttachedPoint* point,
299 double simTime,
DtVector& location, DtTaitBryan& orientation );
302 virtual void removeAttachedPoint(
int vtx,
DtVector* positionOffset = 0);