![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: surfEntPltCtl.h,v $ $Revision: 1.34 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef surfEntPltDtl_H_ 00016 #define surfEntPltDtl_H_ 00017 00018 #include "vrfobjcore/singleTaskControllerComponent.h" 00019 00020 class DtString; 00021 class DtSimManager; 00022 class DtConstrainedAnalogOutputPort; 00023 class DtBooleanInputPort; 00024 class DtSurfaceEntityActuator; 00025 class DtSurfaceEntityStateRepository; 00026 class DtSurfaceEntityPilotControllerDescriptor; 00027 class DtTaskMessage; 00028 class DtSurfaceMovementPSR; 00029 00064 00065 #include "vrfmodel/vrfmodelDefines.h" 00066 class DT_DLL_vrfmodel DtSurfaceEntityPilotController : 00067 public DtSingleTaskControllerComponent 00068 { 00069 00070 public: 00071 00077 DtSurfaceEntityPilotController(const DtString& name, 00078 DtVrfObject* owner, 00079 DtSimManager* simManager, 00080 DtComponentDescriptor* desc = 0, 00081 DtReaderWriterRegistry* parentRegistry = 0); 00082 00086 virtual ~DtSurfaceEntityPilotController(); 00087 00090 virtual DtString type() const; 00091 00094 virtual bool init(); 00095 00098 virtual void tick(); 00099 00102 virtual void clearTask(); 00103 00105 virtual bool createSurfaceControlPortGroup(); 00107 virtual bool createThrottlePort(); 00109 virtual bool createRudderPort(); 00110 00112 virtual DtConstrainedAnalogOutputPort* throttlePort() const; 00114 virtual DtConstrainedAnalogOutputPort* rudderPort() const; 00115 00125 virtual void sailTo(const DtVector& destination, double speed); 00126 00137 virtual void driftTo(const DtVector& destination, double speed); 00138 00145 virtual double calculateControlForTurn(double yawAngle); 00146 00152 virtual double calculateControlForThrottle(double desiredSpeed); 00153 00161 virtual double calculateControlForThrottle(double desiredSpeed, 00162 double distance); 00163 00168 virtual void emergencyStop(); 00169 00173 static DtSimComponent * creator(const DtString& name, 00174 DtVrfObject* owner, 00175 DtSimManager* simManager, 00176 DtComponentDescriptor* desc = 0, 00177 DtReaderWriterRegistry* parentRegistry = 0); 00178 00179 protected: 00180 00182 virtual bool createPortGroups(); 00183 00185 virtual bool createPorts(); 00186 00194 virtual void lookupAndCacheProcessSR(); 00195 00199 virtual bool postAddComponentsInit(); 00200 00204 virtual bool decideToGiveUpTask() const; 00205 00206 protected: 00207 00209 DtSurfaceEntityPilotController(); 00210 00212 DtSurfaceEntityPilotController( 00213 const DtSurfaceEntityPilotController & orig); 00214 00216 const DtSurfaceEntityPilotController & operator=( 00217 const DtSurfaceEntityPilotController & orig); 00218 00219 00220 protected: 00221 00222 DtSurfaceEntityStateRepository * mySurfaceEntityState; 00223 DtSurfaceEntityPilotControllerDescriptor * myDescriptor; 00224 00225 00228 00233 DtBooleanInputPort* mySmallVelocityClampedInputPort; 00234 00237 DtOutputPortGroup* mySurfaceControlPortGroup; 00238 00244 DtConstrainedAnalogOutputPort* myThrottlePort; 00245 00251 DtConstrainedAnalogOutputPort* myRudderPort; 00252 00254 00255 double myLastDistanceSquared; 00256 double myDistanceSquared; 00257 00263 DtSurfaceMovementPSR* myProcessState; 00264 }; 00265 #endif