![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: fixWngLandingController.h,v $ $Revision: 1.20 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 00015 #ifndef DtFixedWingLandingController_H_ 00016 #define DtFixedWingLandingController_H_ 00017 00018 #include "vrfobjcore/singleTaskControllerComponent.h" 00019 #include "vrfobjcore/fixWngLandingPSR.h" 00020 00021 class DtString; 00022 class DtSimManager; 00023 class DtTaskMessage; 00024 class DtFixedWingLandingDescriptor; 00025 class DtFixedWingEntityStateRepository; 00026 class DtLocalVertex; 00027 class DtFixedWingFlightPSR; 00028 class DtBooleanOutputPort; 00029 00040 00041 #include "vrfmodel/vrfmodelDefines.h" 00042 class DT_DLL_vrfmodel DtFixedWingLandingController : public DtSingleTaskControllerComponent 00043 { 00044 public: 00045 00048 DtFixedWingLandingController(const DtString& name, 00049 DtVrfObject* owner, 00050 DtSimManager* simManager, 00051 DtComponentDescriptor* desc = 0, 00052 DtReaderWriterRegistry* parentRegistry = 0); 00053 00055 virtual ~DtFixedWingLandingController(); 00056 00058 virtual bool init(); 00059 00060 virtual bool postAddComponentsInit(); 00061 00064 virtual DtString type() const; 00065 00068 virtual bool tickWhileDestroyed() const; 00069 00073 static DtSimComponent * creator(const DtString& name, 00074 DtVrfObject* owner, 00075 DtSimManager* simManager, 00076 DtComponentDescriptor* desc = 0, 00077 DtReaderWriterRegistry* parentRegistry = 0); 00078 00079 protected: 00081 virtual void registerTaskMsgCallbacks(); 00082 00084 virtual void tick(); 00085 00087 virtual void clearCurrentTaskMessage(); 00088 00090 virtual void clearTask(); 00091 00093 virtual void removeControlPoint(); 00094 00096 protected: 00097 00103 virtual bool createPSR(); 00104 00106 DtFixedWingFlightPSR* lookupFixedWingFlightPSR(); 00107 00109 virtual bool createPorts(); 00110 00113 static void taskCompleteReportCallback(DtSimMessage * msg, void * usr); 00114 virtual void processTaskComplete(DtSimMessage * msg); 00115 00118 static void landingStripChanged(DtVrfObject* obj, void* userData); 00119 virtual void processLandingStripChanged(DtVrfObject*); 00120 00124 virtual void processLandingTask(DtSimMessage* msg); 00125 static void landingTaskCallback(DtSimMessage* msg, void* usr); 00126 00129 static void deleteVrfObjectCallback(DtVrfObject * msg, void * usr); 00130 virtual void processDeleteVrfObjectCallback(DtVrfObject* obj); 00131 00136 virtual bool generateApproachRoute(); 00137 00141 virtual bool generateLandingRoute(); 00142 00144 virtual void setState(DtVrfFixedWingLandingPSR::DtLandingControllerState); 00145 virtual DtVrfFixedWingLandingPSR::DtLandingControllerState state() const; 00146 00147 virtual void initRunwayCoordTransform(const DtVector& runwayStartLocal, 00148 const DtVector& runwayEndLocal, DtCoordTransform& resultTransform) const; 00149 00152 virtual double calculateDecelerationConstant() const; 00153 00155 virtual double calculateApproachSpeed() const; 00156 00158 virtual void setupExistingConditions(); 00159 00162 virtual void setApproachSpeed(); 00163 00166 virtual void flyingAlongApproachRoute(); 00167 00170 virtual void moveAlongLandingStrip(); 00171 00173 virtual void movingAlongLandingStrip(); 00174 00181 virtual bool moveAlongLandingRouteRemainder(); 00182 00186 virtual bool checkPositionOnFinalLeg(); 00187 00191 virtual void flyingTowardsApproachRoute(); 00192 00195 virtual bool createApproachRoutePoints(); 00196 00200 virtual void setLandingAppearanceState(); 00201 00204 virtual double decelerationDistance() const; 00205 00206 private: 00207 00209 DtFixedWingLandingController(); 00210 00212 DtFixedWingLandingController(const DtFixedWingLandingController & 00213 orig); 00214 00216 const DtFixedWingLandingController & operator=(const 00217 DtFixedWingLandingController & orig); 00218 00219 protected: 00221 DtVrfObject* myControlPoint; 00222 00225 DtVrfFixedWingLandingPSR* myProcessState; 00226 00227 DtFixedWingLandingDescriptor* myFixedWingLandingDescriptor; 00228 DtFixedWingEntityStateRepository* myFixedWingEntityState; 00229 DtFixedWingFlightPSR* myFixedWingFlightPSR; 00230 bool myFirstTick; 00231 bool myWaiting; 00232 bool myLandingStripChanged; 00233 00236 00241 DtBooleanOutputPort* myLandingGearControlPort; 00243 }; 00244 #endif