![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Generated by VR-Forces Component Code Generator 00003 ** WARNING: Changes to this file WILL BE LOST if file is regenerated. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: humanMoveToController.h,v $ $Revision: 1.7 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00012 00015 00016 #ifndef DtHumanMoveToController_H_ 00017 #define DtHumanMoveToController_H_ 00018 00019 #include "vrfobjcore/singleTaskControllerComponent.h" 00020 #include "vrfmodel/vrfmodelDefines.h" 00021 00022 class DtCgf; 00023 class DtHumanStateRepository; 00024 class DtSimMessage; 00025 class DtHumanMoveToPSR; 00026 class DtCollisionInputPort; 00027 class DtInputPortGroup; 00028 class DtHumanMovementControlOutputPortGroup; 00029 class DtVectorOutputPort; 00030 class DtHumanMoveToControllerDescriptor; 00031 00042 class DT_DLL_vrfmodel DtHumanMoveToController : public DtSingleTaskControllerComponent 00043 { 00044 private: 00046 DtHumanMoveToController(); 00048 DtHumanMoveToController(const DtHumanMoveToController& orig); 00050 DtHumanMoveToController& operator=(const DtHumanMoveToController& orig); 00051 public: 00053 DtHumanMoveToController(const DtString& name, DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0); 00054 00056 virtual ~DtHumanMoveToController(); 00057 00059 virtual bool init(); 00060 00062 virtual DtString type() const; 00063 00065 virtual void tick(); 00066 00071 static void moveToCallback(DtSimMessage * msg, void * usr); 00072 00077 static void setLocationCallback(DtSimMessage* msg, void* usr); 00078 00083 static void moveToLocationCallback(DtSimMessage * msg, void * usr); 00084 00086 static DtSimComponent* creator(const DtString& name, DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry* parentRegistry=0); 00087 00089 static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr); 00090 00091 protected: 00092 00095 virtual void processMoveToTask(DtSimMessage * msg); 00096 00097 00098 virtual void processMoveToLocationTask(DtSimMessage * msg); 00099 00104 virtual void processDestinationChanged(); 00105 00109 virtual bool setupDestination(); 00110 00119 virtual void setupDestinationVector() const; 00120 00122 virtual void invalidateDestinationVector() const; 00123 00132 virtual bool atDestination(); 00133 00135 virtual void doMoving(); 00136 00138 virtual double findDesiredHeading(); 00139 00141 virtual void moveToDestination(); 00142 00144 virtual void stop(); 00145 00147 virtual void registerTaskMsgCallbacks(); 00148 00152 virtual void processModifyVrfObject(DtSimMessage* msg); 00153 00156 virtual void processSetLocation(DtSimMessage* msg); 00157 00159 virtual bool createPortGroups(); 00160 00162 virtual bool createPorts(); 00163 00169 virtual bool createPSR(); 00170 00171 virtual double distanceToDestination() const; 00172 00174 virtual void clearTask(); 00175 00177 virtual bool destinationIsInsideObstruction( 00178 const DtVector& localDestination) const; 00179 00182 virtual bool decideToGiveUpTask() const; 00183 00188 virtual double atDistance() const; 00189 00190 protected: 00191 00194 00201 DtCollisionInputPort* myCollisionAvoidancePort; 00202 00205 DtInputPortGroup* myCollisionAvoidancePortGroup; 00206 00208 DtHumanMovementControlOutputPortGroup* myHumanMovementControlOutputPortGroup; 00209 00215 DtVectorOutputPort* myDestinationOutputPort; 00216 00218 00221 DtVrfObject* myControlPoint; 00222 00223 DtVector myLocalDestination; 00224 DtVector myWorldDestination; 00225 00226 mutable DtVector myDestinationVector; 00227 mutable bool myDestinationVectorIsValid; 00228 00229 bool myAtDestination; 00230 double myDistanceSquared; 00231 00232 DtHumanStateRepository* myHumanStateRepository; 00233 00236 DtHumanMoveToPSR* myProcessState; 00237 00238 DtHumanMoveToControllerDescriptor* myHumanMoveToControllerDescriptor; 00239 }; 00240 00242 void registerDtHumanMoveToController(DtCgf* cgf); 00243 #endif