![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00011 00012 00013 #pragma once 00014 00015 #include "vrfmodel/fixWngPltCtl.h" 00016 00017 class DtString; 00018 class DtSimManager; 00019 class DtConstrainedAnalogPort; 00020 class boolPort; 00021 class DtSimMessage; 00022 00023 00024 00029 #include "vrfmodel/vrfmodelDefines.h" 00030 class DT_DLL_vrfmodel DtFixedWingMoveToController : public DtFixedWingPilotController 00031 { 00032 00033 public: 00034 00037 DtFixedWingMoveToController(const DtString& name, 00038 DtVrfObject* owner, 00039 DtSimManager* simManager, 00040 DtComponentDescriptor* desc = 0, 00041 DtReaderWriterRegistry* parentRegistry = 0); 00042 00044 virtual ~DtFixedWingMoveToController(); 00045 00050 virtual void tick(); 00051 00054 virtual DtString type() const; 00055 00069 bool setMovementStatusFromControlPoint(); 00070 00073 virtual void doFinishing(); 00074 00082 virtual void doFinishingForFlying(); 00083 00087 virtual void doFinishingForTaxiing(); 00088 00091 virtual void doMoving(); 00092 00098 virtual void doFlying(); 00099 00104 virtual void doTaxiing(); 00105 00110 virtual void doTakeOff(); 00111 00114 virtual void updateTakeOffDirection(); 00115 00119 virtual double findDesiredSpeed(); 00120 00129 virtual bool nearGoal(); 00130 00135 virtual bool atGoal(); 00136 00147 virtual bool passedGoal(); 00148 00152 virtual void taskComplete(bool success = true); 00153 00157 static void moveToCallback(DtSimMessage * msg, void * usr); 00158 static void moveToAltitudeCallback(DtSimMessage * msg, void * usr); 00159 static void setAltitudeCallback(DtSimMessage * msg, void * usrData); 00160 static void setLocationCallback(DtSimMessage * msg, void * usrData); 00161 static void setRestoreCallback(DtSimMessage * msg, void * usrData); 00162 static void waypointChangedCallback(DtVrfObject * msg, void * usr); 00164 static void modifyVrfObjectCallback(DtSimMessage * msg, void * usr); 00166 static void deleteVrfObjectCallback(DtVrfObject * msg, void * usr); 00167 00170 virtual void processMoveToTask(DtSimMessage * msg); 00171 virtual void processMoveToAltitudeTask(DtSimMessage * msg); 00175 virtual void processSetAltitude(DtSimMessage * msg); 00176 virtual void processSetLocation(DtSimMessage * msg); 00177 virtual void processSetRestore(DtSimMessage * msg); 00178 virtual void processWaypointChanged(DtVrfObject * msg); 00184 virtual void processModifyVrfObject(DtSimMessage * msg); 00187 virtual void processDeleteVrfObject(DtVrfObject *msg); 00188 00194 virtual bool createWorkingControlPoint(const DtVector location); 00195 00198 virtual void registerTaskMsgCallbacks(); 00199 00203 static DtSimComponent * creator(const DtString& name, 00204 DtVrfObject* owner, 00205 DtSimManager* simManager, 00206 DtComponentDescriptor* desc = 0, 00207 DtReaderWriterRegistry* parentRegistry = 0); 00208 00209 protected: 00210 virtual void getLocalDestination(DtVector& local) const; 00211 virtual void getWorldDestination(DtVector& world) const; 00212 00215 virtual double distanceSquaredToDestination(const DtVector& current) const; 00216 virtual double distanceSquaredToDestination2D(const DtVector& current) const; 00217 00221 virtual bool atAltitude(double desiredAltitude) const; 00222 00225 virtual bool setupControlPoint(); 00226 00228 virtual void clearTask(); 00229 00230 private: 00231 00233 DtFixedWingMoveToController(); 00234 00236 DtFixedWingMoveToController( 00237 const DtFixedWingMoveToController& orig); 00238 00240 DtFixedWingMoveToController& operator=( 00241 const DtFixedWingMoveToController& orig); 00242 00243 protected: 00244 00247 DtVrfObject* myControlPoint; 00248 00250 DtVrfObject* myWorkingControlPoint; 00251 00252 bool myFirstTick; 00253 }; 00254