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;
181 :
AttachedPoint( AttachedPointTypeVertex, targetVertexIndex, positionOffset )
182 , myVertex( position )
204 int vtx1,
int vtx2,
double proportion,
int targetVertexIndex,
208 , mySecondVtx( vtx2 )
209 , myProportion( proportion )
211 myAttachedPointType = AttachedPointTypeProportional;
214 inline int firstVtx()
219 inline int secondVtx()
224 inline double proportion()
246 virtual bool needsUpdate(
DtTime tNow );
251 virtual void addAttachedPoint(
const DtVector& position,
int targetVertexIndex );
256 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int targetVertexIndex );
261 virtual void addAttachedPoint(
DtUniqueID uniqueID,
int vtx1,
int vtx2,
262 double proportion,
int targetVertexIndex );
268 virtual const AttachedPoint& attachedPoint(
int targetVertexIndex )
const;
282 virtual void setPositionOffset(
const DtVector&
offset,
int vtx );
286 virtual void setOrientationOffset(
const DtTaitBryan&
offset);
290 virtual void setWorldOrientationOffset(
const DtTaitBryan&
offset);
293 virtual void setAttachedPointMode(
unsigned int mode,
int vtx );
296 virtual void update(
DtTime tNow );
304 virtual void doAttachment(
DtTime tNow );
308 return myLastUpdateTime;
315 virtual void slot_sceneObjectToBeDeleted(
const DtUniqueID&
id );
316 virtual void slot_attachedSceneObjectToBeDeleted(
const DtUniqueID& );
317 virtual void slot_attachedUpdaterToBeDeleted(
const DtUniqueID&
id );
321 virtual bool pointLocationAndOrientation( AttachedPoint* point,
322 double simTime,
DtVector& location, DtTaitBryan& orientation );
325 virtual void removeAttachedPoint(
int vtx,
DtVector* positionOffset = 0);