![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: iFireAct.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 #ifndef DtIndirectFireActuator_H_ 00015 #define DtIndirectFireActuator_H_ 00016 00017 #include "vrfmodel/weaponAct.h" 00018 #include <vl/hostStructs.h> 00019 00020 class DtSimManager; 00021 class DtIndirectFireActuatorDescriptor; 00022 class DtVrfIndirectFirePSR; 00023 class DtDetonationDescriptor; 00024 class DtVrfIndirectFirePSR; 00025 00026 class DtAnalogInputPort; 00027 class DtVectorInputPort; 00028 00042 #include "vrfmodel/vrfmodelDefines.h" 00043 class DT_DLL_vrfmodel DtIndirectFireActuator : public DtWeaponActuator 00044 { 00045 00046 public: 00047 00050 DtIndirectFireActuator(const DtString& name, 00051 DtVrfObject* owner, 00052 DtSimManager* simManager, 00053 DtComponentDescriptor* desc = 0, 00054 DtReaderWriterRegistry* parentRegistry = 0); 00055 00057 virtual ~DtIndirectFireActuator(); 00058 00061 virtual void tick(); 00062 00069 virtual void initPendingDetonations(); 00070 00073 virtual DtString type() const; 00074 00082 virtual DtFireInteraction * createFireInteraction(); 00083 00091 virtual DtDetonationInteraction * createDetonationInteraction(DtTime& 00092 detTime); 00093 00097 virtual void scheduleDetonation(DtDetonationInteraction * detInter, 00098 DtTime detTime); 00099 00103 virtual void fireTheWeapon(); 00104 00109 virtual void addDispersion(DtVector& detLocation, 00110 bool addHeightDispersion); 00111 00113 static void detonationCallback(DtTimer * timer); 00114 00118 static DtSimComponent * creator(const DtString& name, 00119 DtVrfObject* owner, 00120 DtSimManager* simManager, 00121 DtComponentDescriptor* desc = 0, 00122 DtReaderWriterRegistry* parentRegistry = 0); 00123 00129 virtual DtDetonationInteraction * createDetonationInteraction( 00130 const DtDetonationDescriptor& desc, DtTime& detTime); 00131 00134 virtual DtDetonationDescriptor* createDetonationDescriptor( 00135 DtDetonationInteraction* detInter, DtTime simTime); 00136 00138 static void objectAddedCb(DtVrfObject * vrfObject, void * usr); 00139 00144 virtual void processObjectAdded(DtVrfObject * vrfObject); 00145 00146 protected: 00147 00149 virtual bool createPorts(); 00150 00156 virtual bool createPSR(); 00157 00158 protected: 00159 00161 DtIndirectFireActuator(); 00162 00164 DtIndirectFireActuator(const DtIndirectFireActuator & orig); 00165 00167 const DtIndirectFireActuator & operator=( 00168 const DtIndirectFireActuator & orig); 00169 00170 00171 protected: 00172 00175 00181 DtVectorInputPort* myTargetPointPort; 00182 00188 DtAnalogInputPort* myMaxRangePort; 00189 00191 00192 DtReal myMuzzleSpeed; 00193 DtList myTimerList; 00194 DtIndirectFireActuatorDescriptor * myIndirectFireActuatorDescriptor; 00195 00198 DtVrfIndirectFirePSR* myIndirectFireProcessState; 00199 00200 bool myFirstTick; 00201 }; 00202 00203 #endif