![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: fixWngTakeoffController.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 00016 #ifndef DtFixedWingTakeoffController_H_ 00017 #define DtFixedWingTakeoffController_H_ 00018 00019 #include "vrfobjcore/singleTaskControllerComponent.h" 00020 #include "vrfobjcore/fixWngTakeoffPSR.h" 00021 00022 class DtString; 00023 class DtSimManager; 00024 class DtTaskMessage; 00025 class DtFixedWingTakeoffDescriptor; 00026 class DtFixedWingEntityStateRepository; 00027 class DtLocalVertex; 00028 class DtFixedWingFlightPSR; 00029 00050 #include "vrfmodel/vrfmodelDefines.h" 00051 class DT_DLL_vrfmodel DtFixedWingTakeoffController : public DtSingleTaskControllerComponent 00052 { 00053 public: 00054 00057 DtFixedWingTakeoffController(const DtString& name, 00058 DtVrfObject* owner, 00059 DtSimManager* simManager, 00060 DtComponentDescriptor* desc = 0, 00061 DtReaderWriterRegistry* parentRegistry = 0); 00062 00064 virtual ~DtFixedWingTakeoffController(); 00065 00067 virtual bool init(); 00068 00069 virtual bool postAddComponentsInit(); 00070 00073 virtual DtString type() const; 00074 00078 static DtSimComponent * creator(const DtString& name, 00079 DtVrfObject* owner, 00080 DtSimManager* simManager, 00081 DtComponentDescriptor* desc = 0, 00082 DtReaderWriterRegistry* parentRegistry = 0); 00083 00084 protected: 00086 virtual void registerTaskMsgCallbacks(); 00087 00089 virtual void tick(); 00090 00092 virtual void clearTask(); 00093 00095 protected: 00096 00102 virtual bool createPSR(); 00103 00105 DtFixedWingFlightPSR* lookupFixedWingFlightPSR(); 00106 00109 static void taskCompleteReportCallback(DtSimMessage * msg, void * usr); 00110 virtual void processTaskComplete(DtSimMessage * msg); 00111 00114 virtual void processTakeoffTask(DtSimMessage* msg); 00115 static void takeoffTaskCallback(DtSimMessage* msg, void* usr); 00116 00119 static void deleteVrfObjectCallback(DtVrfObject * msg, void * usr); 00120 virtual void processDeleteVrfObjectCallback(DtVrfObject* obj); 00121 00123 virtual void setState(DtVrfFixedWingTakeoffPSR::DtTakeoffControllerState); 00124 virtual DtVrfFixedWingTakeoffPSR::DtTakeoffControllerState state() const; 00125 00126 protected: 00127 00130 virtual void movingAlongTakeoffRoute(); 00131 00133 virtual void calculateVertexAndRotation(const DtLocalVector& start, const DtLocalVector& end, 00134 const DtVector& distance, DtVector& vertex, DtDcm& rotationDcm) const; 00135 00138 virtual double turningPointDistance() const; 00139 00141 virtual void startTakeoff(); 00142 00144 virtual void flyingTowardsTakeoffPoint(); 00145 00147 virtual void flyTowardsTakeoffPoint(); 00148 00149 private: 00150 00152 DtFixedWingTakeoffController(); 00153 00155 DtFixedWingTakeoffController(const DtFixedWingTakeoffController & 00156 orig); 00157 00159 const DtFixedWingTakeoffController & operator=(const 00160 DtFixedWingTakeoffController & orig); 00161 00162 protected: 00163 00166 DtVrfFixedWingTakeoffPSR* myProcessState; 00167 00168 DtFixedWingTakeoffDescriptor* myFixedWingTakeoffDescriptor; 00169 DtFixedWingFlightPSR* myFixedWingFlightPSR; 00170 DtFixedWingEntityStateRepository* myFixedWingEntityState; 00171 }; 00172 00173 #endif