![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: launchCtlr.h,v $ $Revision: 1.34 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 #ifndef DtLauncherController_H_ 00015 #define DtLauncherController_H_ 00016 00017 00018 #include "vrfmodel/weaponCtlr.h" 00019 #include "vrfmsgs/ifCrtEntity.h" 00020 #include <vl/detonateInter.h> 00021 00022 class DtLauncherControllerDescriptor; 00023 class DtObjectIdOutputPort; 00024 class DtVectorOutputPort; 00025 00059 #include "vrfmodel/vrfmodelDefines.h" 00060 class DT_DLL_vrfmodel DtLauncherController : public DtWeaponController 00061 { 00062 00063 public: 00064 00067 DtLauncherController(const DtString& name, 00068 DtVrfObject* owner, 00069 DtSimManager* simManager, 00070 DtComponentDescriptor* desc = 0, 00071 DtReaderWriterRegistry* parentRegistry = 0); 00072 00074 virtual ~DtLauncherController(); 00075 00078 virtual bool init(); 00079 00082 virtual DtString type() const; 00083 00085 virtual void tick(); 00086 00101 virtual void tickMunitionLoader(const DtVrfObject* target); 00102 00105 virtual bool createMissileIdPort(); 00106 virtual DtObjectIdOutputPort * missileIdPort() const; 00107 00108 virtual bool createTargetPointPort(); 00109 virtual DtVectorOutputPort * targetPointPort() const; 00110 00111 virtual bool createTargetEntityIdPort(); 00112 virtual DtObjectIdOutputPort * targetEntityIdPort() const; 00113 00120 virtual void fire(); 00121 00128 virtual void missileDetonated(DtDetonationInteraction * detInter); 00129 00133 static void detonationCallback(DtDetonationInteraction * detInter, 00134 void * usr); 00135 00144 virtual void disconnectMissileFromLauncher(const DtEntityIdentifier& missId); 00145 00146 virtual void disconnectMissileFromLauncher(DtVrfObject *missile); 00147 00149 virtual DtVrfObject* mostRecentMissileFired(); 00150 00151 virtual double abandonPassedMissileDistance(); 00152 virtual void setAbandonPassedMissileDistance(const double& distance); 00153 00154 00158 static DtSimComponent * creator(const DtString& name, 00159 DtVrfObject* owner, 00160 DtSimManager* simManager, 00161 DtComponentDescriptor* desc = 0, 00162 DtReaderWriterRegistry* parentRegistry = 0); 00163 00164 protected: 00165 00167 virtual bool createPorts(); 00168 00171 virtual void removeMissileFromActiveList(const DtEntityIdentifier& removeId); 00172 00173 protected: 00174 00176 DtLauncherController(); 00177 00179 DtLauncherController(const DtLauncherController & orig); 00180 00182 const DtLauncherController & operator=(const DtLauncherController & 00183 orig); 00184 00185 00186 protected: 00187 00188 DtIfCreateVrfObject myCreateMissileInfo; 00189 DtList myActiveMissiles; 00190 00193 00199 DtObjectIdOutputPort* myMissileIdPort; 00200 00206 DtObjectIdOutputPort* myTargetEntityIdPort; 00207 00213 DtVectorOutputPort* myTargetPointPort; 00214 00216 00220 double myAbandonPassedMissileDistance; 00221 00222 bool myFirstTick; 00223 }; 00224 00225 #endif 00226