![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00011 00012 #pragma once 00013 00014 #include "vrfmodel/mountingCtlr.h" 00015 #include "vrfutil/vlClock.h" 00016 #include <vl/hostStructs.h> 00017 #include "vrfutil/simMunition.h" 00018 #include <vlpi/disEnums.h> 00019 00020 class DtAmmunitionOutputPort; 00021 class DtBooleanOutputPort; 00022 class DtInputPortGroup; 00023 class DtIntegerInputPort; 00024 00025 class DtBaseWeaponControllerDescriptor; 00026 class DtVrfWeaponPSR; 00027 00032 #include "vrfmodel/vrfmodelDefines.h" 00033 class DT_DLL_vrfmodel DtBaseWeaponController : public DtControllerComponent 00034 { 00035 00036 public: 00037 00040 DtBaseWeaponController(const DtString& name, 00041 DtVrfObject* owner, 00042 DtSimManager* simManager, 00043 DtComponentDescriptor* desc = 0, 00044 DtReaderWriterRegistry* parentRegistry = 0); 00045 00047 virtual ~DtBaseWeaponController(); 00048 00050 virtual bool init(); 00051 00055 virtual bool postAddComponentsInit(); 00056 00058 virtual bool createMountingController(); 00059 00062 virtual DtString type() const; 00063 00065 virtual void fire(); 00066 00069 virtual bool waitingForFire(); 00070 00072 virtual void setWaitingForFire(bool waiting); 00073 00075 virtual bool createWeaponOutputPortGroup(); 00076 00078 virtual DtOutputPortGroup* weaponOutputPortGroup(); 00079 00081 virtual bool createWeaponInputPortGroup(); 00082 00084 virtual DtInputPortGroup* weaponInputPortGroup(); 00085 00088 virtual bool createTriggerPort(); 00089 virtual DtBooleanOutputPort * triggerPort() const; 00090 00091 virtual bool createLoadAmmunitionPort(); 00092 virtual DtAmmunitionOutputPort * loadAmmunitionPort() const; 00093 00094 virtual bool createLoadedPort(); 00095 virtual DtBooleanOutputPort * loadedPort() const; 00096 00097 virtual bool createArtPartTypePort(); 00098 virtual DtIntegerInputPort * artPartTypePort() const; 00099 00107 virtual void setPreloadWeapon(bool doPreload); 00108 virtual bool preloadWeapon() const; 00109 00110 virtual void setLoadAmmoTime(DtTime loadAmmoTime); 00111 virtual DtTime loadAmmoTime() const; 00112 00113 virtual void setUnloadAmmoTime(DtTime unloadAmmoTime); 00114 virtual DtTime unloadAmmoTime() const; 00115 00119 virtual void setMaxVehicleSpeedToFire(DtReal maxVehicleSpeedToFire); 00120 virtual DtReal maxVehicleSpeedToFire() const; 00121 00122 virtual bool weaponCorrectlyOriented() const; 00123 00130 virtual void setMaxAngleOffBoresight(DtReal maxAngleOffBoresight); 00131 virtual DtReal maxAngleOffBoresight() const; 00132 00133 00135 virtual void initProcessSR(); 00136 00138 virtual DtBaseMountingController * mountingController(); 00139 00141 virtual void setCurrentMunitionName(const DtString & currentMunitionName); 00143 virtual const DtString & currentMunitionName() const; 00144 00146 virtual DtVrfWeaponPSR* weaponProcessState(); 00148 virtual const DtVrfWeaponPSR* weaponProcessState() const; 00149 00152 virtual void tick(); 00153 00157 static DtSimComponent * creator(const DtString& name, 00158 DtVrfObject* owner, 00159 DtSimManager* simManager, 00160 DtComponentDescriptor* desc = 0, 00161 DtReaderWriterRegistry* parentRegistry = 0); 00162 00163 protected: 00164 00167 virtual bool createPortGroups(); 00168 00170 virtual bool createPorts(); 00171 00179 virtual void lookupAndCacheProcessSR(); 00180 00181 protected: 00182 00184 DtBaseWeaponController(); 00185 00187 DtBaseWeaponController(const DtBaseWeaponController & orig); 00188 00190 const DtBaseWeaponController & operator=(const DtBaseWeaponController & 00191 orig); 00192 00193 00194 protected: 00195 00198 00201 DtOutputPortGroup* myWeaponOutputPortGroup; 00202 00208 DtAmmunitionOutputPort* myLoadAmmunitionPort; 00209 00215 DtBooleanOutputPort* myTriggerPort; 00216 00222 DtBooleanOutputPort* myLoadedPort; 00223 00226 DtInputPortGroup* myWeaponInputPortGroup; 00227 00233 DtIntegerInputPort* myArtPartTypePort; 00234 00236 00242 bool myDoWeaponPreload; 00243 00247 bool myWaitingForFire; 00248 00251 DtReal myFireMaxVehicleSpeed; 00252 00253 DtReal myMaxAngleOffBoresight; 00254 00256 const DtBaseWeaponControllerDescriptor* myBaseWeaponCtlrDesc; 00257 DtBaseMountingController* myBaseMountingController; 00258 00264 DtVrfWeaponPSR* myWeaponProcessState; 00265 00266 bool myFirstTick; 00267 };