![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: missileCntlr.h,v $ $Revision: 1.27 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtMissileControllerComponent_H_ 00016 #define DtMissileControllerComponent_H_ 00017 00018 00019 #include "vrfobjcore/singleTaskControllerComponent.h" 00020 #include <matrix/vlVector.h> 00021 00022 class DtString; 00023 class DtSimManager; 00024 class DtConstrainedAnalogOutputPort; 00025 class DtBooleanOutputPort; 00026 class DtMissileStateRepository; 00027 class DtTaitBryan; 00028 class DtMissileFlightPSR; 00029 00036 #include "vrfmodel/vrfmodelDefines.h" 00037 class DT_DLL_vrfmodel DtMissileControllerComponent : public DtSingleTaskControllerComponent 00038 { 00039 public: 00040 00043 DtMissileControllerComponent(const DtString& name, 00044 DtVrfObject* owner, 00045 DtSimManager* simManager, 00046 DtComponentDescriptor* desc = 0, 00047 DtReaderWriterRegistry* parentRegistry = 0); 00048 00050 virtual ~DtMissileControllerComponent(); 00051 00053 virtual bool init(); 00054 00057 virtual DtString type() const; 00058 00059 virtual double distanceToTarget() const; 00060 00064 virtual double approximateThrust(double speed) const; 00065 00088 virtual void calculateSteering(const DtVector &relativeVelocity, 00089 const DtVector &localPosition, 00090 const DtVector &targetVelocity, 00091 const DtVector &targetPoint, 00092 double& maneuverAccelXOut, 00093 double& maneuverAccelYOut, 00094 double& maneuverAccelZOut) = 0; 00095 00100 virtual void calculateSteeringToPoint(const DtVector &relativeVelocity, 00101 const DtVector &localPosition, 00102 const DtVector &targetPoint, 00103 double& maneuverAccelXOut, 00104 double& maneuverAccelYOut, 00105 double& maneuverAccelZOut); 00106 00112 virtual void calculateSteeringUsingPropNav(const DtVector &relativeVelocity, 00113 const DtVector &localPosition, 00114 const DtVector &targetVelocity, 00115 const DtVector &targetPoint, 00116 double& maneuverAccelXOut, 00117 double& maneuverAccelYOut, 00118 double& maneuverAccelZOut); 00119 00122 virtual bool createMissileControlPortGroup(); 00123 virtual bool createThrustPort(); 00124 virtual bool createManeuverAccelXPort(); 00125 virtual bool createManeuverAccelYPort(); 00126 virtual bool createManeuverAccelZPort(); 00127 virtual bool createSelfDestructPort(); 00128 00129 virtual DtConstrainedAnalogOutputPort * thrustPort(); 00130 virtual DtConstrainedAnalogOutputPort * maneuverAccelXPort(); 00131 virtual DtConstrainedAnalogOutputPort * maneuverAccelYPort(); 00132 virtual DtConstrainedAnalogOutputPort * maneuverAccelZPort(); 00133 virtual DtBooleanOutputPort * selfDestructPort(); 00134 00135 protected: 00136 00138 virtual bool createPortGroups(); 00139 00141 virtual bool createPorts(); 00142 00150 virtual void calculateTargetErrorOffset(); 00151 00159 virtual void lookupAndCacheProcessSR(); 00160 00163 virtual bool postAddComponentsInit(); 00164 00166 virtual void addRangeItems(); 00167 00168 protected: 00170 DtMissileControllerComponent(); 00171 00173 DtMissileControllerComponent(const DtMissileControllerComponent & 00174 orig); 00175 00177 const DtMissileControllerComponent & operator=(const 00178 DtMissileControllerComponent & orig); 00179 00180 00181 protected: 00182 00183 DtMissileStateRepository * myMissileState; 00184 00185 double myDistanceToTarget; 00186 00189 00192 DtOutputPortGroup * myMissileControlPortGroup; 00193 00199 DtConstrainedAnalogOutputPort * myThrustPort; 00200 00206 DtConstrainedAnalogOutputPort * myManeuverAccelXPort; 00207 00213 DtConstrainedAnalogOutputPort * myManeuverAccelYPort; 00214 00220 DtConstrainedAnalogOutputPort * myManeuverAccelZPort; 00221 00227 DtBooleanOutputPort * mySelfDestructPort; 00228 00230 00231 DtVector myTargetErrorOffset; 00232 00238 DtMissileFlightPSR* myProcessState; 00239 }; 00240 #endif