![]() |
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: aggregatedMoveToController.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00012 00015 00016 #ifndef aggregatedMoveToController_H_ 00017 #define aggregatedMoveToController_H_ 00018 00019 #include "vrfobjcore/singleTaskControllerComponent.h" 00020 #include "vrfmodel/vrfmodelDefines.h" 00021 00022 class DtCgf; 00023 class DtVrfAggregateStateRepository; 00024 class DtSimMessage; 00025 class DtAggregatedMoveToPSR; 00026 class DtOutputPortGroup; 00027 class DtVectorOutputPort; 00028 class DtAggregatedMoveToDescriptor; 00029 class DtAnalogOutputPort; 00030 class DtSetDataRequest; 00031 class DtSetDataManager; 00032 00046 class DT_DLL_vrfmodel DtAggregatedMoveToController : public DtSingleTaskControllerComponent 00047 { 00048 private: 00050 DtAggregatedMoveToController(); 00052 DtAggregatedMoveToController(const DtAggregatedMoveToController& orig); 00054 DtAggregatedMoveToController& operator=(const DtAggregatedMoveToController& orig); 00055 public: 00057 DtAggregatedMoveToController(const DtString& name, DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0); 00058 00060 virtual ~DtAggregatedMoveToController(); 00061 00063 virtual bool init(); 00064 00066 virtual DtString type() const; 00067 00069 virtual void tick(); 00070 00075 static void moveToCallback(DtSimMessage * msg, void * usr); 00076 00081 static void setLocationCallback(DtSimMessage* msg, void* usr); 00082 00087 static void moveToLocationCallback(DtSimMessage * msg, void * usr); 00088 00093 static void moveIntoFormationCallback(DtSimMessage * msg, void * usr); 00094 00099 static void turnToHeadingCallback(DtSimMessage* msg, void* usrData); 00100 00102 static DtSimComponent* creator(const DtString& name, DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry* parentRegistry=0); 00103 00105 static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr); 00106 00107 protected: 00108 00111 virtual void processMoveToTask(DtSimMessage * msg); 00112 00113 00114 virtual void processMoveToLocationTask(DtSimMessage * msg); 00115 00120 virtual void processDestinationChanged(); 00121 00125 virtual bool setupDestination(); 00126 00135 virtual void setupDestinationVector() const; 00136 00138 virtual void invalidateDestinationVector() const; 00139 00148 virtual bool atDestination(); 00149 00151 virtual void doMoving(); 00152 00154 virtual double findDesiredHeading(); 00155 00157 virtual void moveToDestination(); 00158 00160 virtual void stop(); 00161 00163 virtual void registerTaskMsgCallbacks(); 00164 00168 virtual void processModifyVrfObject(DtSimMessage* msg); 00169 00172 virtual void processSetLocation(DtSimMessage* msg); 00173 00175 virtual bool createPortGroups(); 00176 00178 virtual bool createPorts(); 00179 00185 virtual bool createPSR(); 00186 00187 virtual double distanceToDestination() const; 00188 00190 virtual void clearTask(); 00191 00196 virtual double atDistance() const; 00197 00201 virtual void processMoveIntoFormationTask(DtSimMessage* msg); 00202 00205 virtual void processTurnToHeadingTask(DtSimMessage* msg); 00206 00208 virtual void sendRequestToSelf(const DtSetDataRequest& request) const; 00209 00210 protected: 00211 00214 00219 DtAnalogOutputPort* myMovementDirectionOutputPort; 00220 00225 DtAnalogOutputPort* mySpeedOutputPort; 00226 00228 DtOutputPortGroup* myOutputPortGroup; 00229 00235 DtVectorOutputPort* myDestinationOutputPort; 00236 00238 00241 DtVrfObject* myControlPoint; 00242 00243 DtVector myLocalDestination; 00244 DtVector myWorldDestination; 00245 00246 mutable DtVector myDestinationVector; 00247 mutable bool myDestinationVectorIsValid; 00248 00249 bool myAtDestination; 00250 double myDistanceSquared; 00251 00252 DtVrfAggregateStateRepository* myAggregateStateRepository; 00253 00256 DtAggregatedMoveToPSR* myProcessState; 00257 00258 DtAggregatedMoveToDescriptor* myAggregatedMoveToDescriptor; 00259 00262 DtSetDataManager* mySetDataManager; 00263 }; 00264 00265 #endif