12 #include <vl/hostStructs.h>
18 class Dt3dBoundingVolume;
20 class DtInputControlPortGroup;
72 virtual double distanceSquaredToDestination(
DtVector offsetVector);
79 virtual void avoidCollision(
const DtCollision& potentialCollision);
83 virtual const char*
type()
const;
108 virtual bool shouldRun();
112 virtual void clearCollisionStateData();
118 virtual void clearingCollision();
122 virtual bool isInsideObstruction(
const DtCollision* potentialCollision,
double& clearingDistance);
130 static void taskCompleteReportCallback(
DtSimMessage * msg,
void * usr);
137 bool isAppreciablyMoving(
DtVector velocity,
double velocityTolerance)
const;
147 bool setDefaultPortValuesForAvoidance();
155 bool determineObstructionMovementDirection(DtDcm obstructionLocalOrientationMatrix,
156 const DtVector& obstructionVelocity,
157 int& obstructionDirectionSign)
const;
171 void avoidMovingObstruction(
const DtCollision& potentialCollision);
180 void avoidNonMovingObstruction(
const DtCollision& potentialCollision);
184 virtual void calculateAvoidanceByVertices(
const DtVector & vertex1,
const DtVector & vertex2,
double entityBoundingVolumeRadius,
188 virtual void calculateAvoidanceUsingBoundingVolume(
const DtCollision& potentialCollision,
189 double entityBoundingVolumeRadius,
DtVector & localVectorToDestination,
190 DtVector & localVectorToObstruciton);
201 void startClearingCollision(
double clearingDistance);
216 bool calculateMyEntityCollisionBV();
226 virtual bool createPSR();
228 virtual void computeClearingHeading(
const DtVector& localVertex1,
230 double& clearingHeading)
const;
232 virtual void getObstructionFootprint(
const DtCollision& collision,