![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00012 00013 #pragma once 00014 00015 #include "vrfmodel/baseWeapCtlr.h" 00016 #include <vl/hostStructs.h> 00017 #include "vrfutil/simMunition.h" 00018 #include "vrfobjcore/entListIOPort.h" 00019 #include "vrfobjcore/boolIOPort.h" 00020 00021 class DtObjectIdPort; 00022 00023 class DtMountingController; 00024 class DtWeaponControllerDescriptor; 00025 class DtSimMessage; 00026 class DtEntityListInputPort; 00027 class DtWeaponComponentInterface; 00028 00055 #include "vrfmodel/vrfmodelDefines.h" 00056 class DT_DLL_vrfmodel DtWeaponController : public DtBaseWeaponController 00057 { 00058 00059 public: 00060 00063 DtWeaponController(const DtString& name, 00064 DtVrfObject* owner, 00065 DtSimManager* simManager, 00066 DtComponentDescriptor* desc = 0, 00067 DtReaderWriterRegistry* parentRegistry = 0); 00068 00070 virtual ~DtWeaponController(); 00071 00074 virtual DtString type() const; 00075 00077 virtual bool createMountingController(); 00078 00079 virtual bool init(); 00080 00087 virtual void tick(); 00088 00090 virtual void fire(); 00091 00100 virtual DtVrfObject* chooseTarget(); 00101 00110 virtual DtVrfObject * chooseTarget(const DtEntityTargetList& targetList) const; 00111 00116 virtual void tickMunitionLoader(const DtVrfObject* target); 00117 00138 virtual bool acquireTarget(const DtVrfObject* target); 00139 00143 virtual void maneuverRequiredToAcquireTarget(DtReal requiredHeading, 00144 DtReal requiredPitch, 00145 DtReal requiredMaxSpeed); 00146 00151 virtual bool loadedAmmoValidForTarget(const DtVrfObject* target) const; 00152 00169 virtual bool chooseAmmo(const DtEntityType& entityType, 00170 DtSimMunition& munitionOut, DtDetonatorFuze& fuzeOut, 00171 bool setCurrentMunition = true); 00172 00187 virtual bool acceptSensorTargettingInput(); 00188 00192 virtual bool inSector(DtVrfObject * entity) const; 00193 00196 virtual void findBodyHeadingElevationToTarget(const DtVrfObject *entity, 00197 DtReal &bodyHeadingOut, 00198 DtReal &bodyElevationOut) const; 00199 00203 virtual DtVrfObject * easier(DtVrfObject * entity1, DtVrfObject 00204 * entity2) const; 00205 00209 static DtSimComponent * creator(const DtString& name, 00210 DtVrfObject* owner, 00211 DtSimManager* simManager, 00212 DtComponentDescriptor* desc = 0, 00213 DtReaderWriterRegistry* parentRegistry = 0); 00214 00215 protected: 00216 00218 virtual bool createPorts(); 00219 00221 virtual void addRangeItems(); 00222 00223 protected: 00224 00226 DtWeaponController(); 00227 00229 DtWeaponController(const DtWeaponController & orig); 00230 00232 const DtWeaponController & operator=(const DtWeaponController & 00233 orig); 00234 00235 00236 protected: 00237 00238 DtEntityIdentifier myCurrentTarget; 00239 00242 00248 DtEntityListInputPort* myTargetListPort; 00249 00256 DtBooleanInputPort* myWeaponsHoldPort; 00257 00259 00260 00261 DtMountingController* myMountingController; 00262 const DtWeaponControllerDescriptor* myWeaponCtlrDesc; 00263 00264 DtWeaponComponentInterface* myWeaponComponentInterface; 00265 00266 };