13 #include <vl/hostStructs.h>
19 class Dt3dBoundingVolume;
21 class DtInputControlPortGroup;
73 virtual double distanceSquaredToDestination(
DtVector offsetVector);
80 virtual void avoidCollision(
const DtCollision& potentialCollision);
84 virtual const char*
type()
const;
109 virtual bool shouldRun();
113 virtual void clearCollisionStateData();
119 virtual void clearingCollision();
123 virtual bool isInsideObstruction(
const DtCollision* potentialCollision,
double& clearingDistance);
131 static void taskCompleteReportCallback(
DtSimMessage * msg,
void * usr);
138 bool isAppreciablyMoving(
DtVector velocity,
double velocityTolerance)
const;
148 bool setDefaultPortValuesForAvoidance();
156 bool determineObstructionMovementDirection(DtDcm obstructionLocalOrientationMatrix,
157 const DtVector& obstructionVelocity,
158 int& obstructionDirectionSign)
const;
172 void avoidMovingObstruction(
const DtCollision& potentialCollision);
181 void avoidNonMovingObstruction(
const DtCollision& potentialCollision);
185 virtual void calculateAvoidanceByVertices(
const DtVector & vertex1,
const DtVector & vertex2,
double entityBoundingVolumeRadius,
189 virtual void calculateAvoidanceUsingBoundingVolume(
const DtCollision& potentialCollision,
190 double entityBoundingVolumeRadius,
DtVector & localVectorToDestination,
191 DtVector & localVectorToObstruciton);
202 void startClearingCollision(
double clearingDistance);
217 bool calculateMyEntityCollisionBV();
227 virtual bool createPSR();
229 virtual void computeClearingHeading(
const DtVector& localVertex1,
231 double& clearingHeading)
const;
233 virtual void getObstructionFootprint(
const DtCollision& collision,