![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: fireManager.h,v $ $Revision: 1.7 $ $State: Exp $ 00007 *********************************************************************/ 00008 #ifndef fireManager_H_ 00009 #define fireManager_H_ 00010 00013 00014 #include <matrix/vlVector.h> 00015 00016 #include <vl/fireInter.h> 00017 #include "vrfobjcore/fireContext.h" 00018 00019 #include "vrfobjcore/vrfObjMgr.h" 00020 #include "vrfobjcore/vrfObject.h" 00021 #include "vrfobjcore/vrfKinState.h" 00022 #include "vrftasks/radioMsgTypes.h" 00023 #include "vrfobjcore/baseRadio.h" 00024 #include "vrfobjcore/vrfObjSR.h" 00025 00026 #include "vrfcore/simMgr.h" 00027 #include "vrfutil/kinTools.h" 00028 #include "vrfobjparam/dmgCompDesc.h" 00029 #include "vrfobjcore/compTypes.h" 00030 00031 #include "vrfobjcore/objectGeometricModel.h" 00032 00033 #include <map> 00034 00043 #include "vrfobjcore/vrfobjcoreDefines.h" 00044 class DT_DLL_vrfobjcore DtFireManager 00045 { 00046 public: 00047 00048 typedef bool (*DtFireProcessingFunction)(const DtFireContext& fireContext, void* usr); 00049 typedef std::map<DtVrfObject*, DtGlobalObjectDesignator> DtRegisteredVrfObjects; 00050 typedef std::map<DtVrfObject*, DtFireProcessingFunction> DtFireCallbackFuncs; 00051 typedef std::map<DtVrfObject*, void*> DtFireCallbackObjects; 00052 00055 DtFireManager(DtSimManager& simManager); 00056 00059 virtual ~DtFireManager(); 00060 00067 virtual bool init(); 00068 00075 virtual bool reinitialize(); 00076 00077 00085 virtual bool registerFireTarget(DtVrfObject& entity, 00086 DtGlobalObjectDesignator entityId, 00087 void* callbackObject, 00088 DtFireProcessingFunction func); 00089 00099 virtual bool registerFireTargetForRemoval(DtVrfObject& entity); 00100 00108 virtual bool unRegisterFireTarget(DtVrfObject& entity); 00109 00111 virtual void sendFireInteraction(DtFireInteraction& fire); 00112 00113 protected: 00114 00120 bool testInvariant() const; 00121 00132 static void detonationCallback(DtDetonationInteraction* fireInter, void* usr); 00133 00145 virtual void processDetonation(const DtDetonationInteraction& fire); 00146 00147 00152 static void fireCallback(DtFireInteraction* fireInter, void* usr); 00153 00165 virtual void processFire(const DtFireInteraction& fire); 00166 00167 00169 virtual void determineUnderFire(const DtDetonationInteraction& detonation); 00170 00172 virtual void determineUnderFire(const DtFireInteraction& fireInter); 00173 00175 virtual void removeQueuedFireTargets(); 00176 00177 protected: 00178 00181 DtFireManager(const DtFireManager& orig); 00183 DtFireManager& operator=(const DtFireManager& other); 00184 00185 protected: 00187 DtRegisteredVrfObjects myFireTargets; 00188 00191 DtFireCallbackFuncs myFireCallbacks; 00192 00196 DtFireCallbackObjects myFireCallbackObjects; 00197 00199 std::vector<DtVrfObject*> myFireTargetsToBeRemoved; 00200 00201 DtSimManager& mySimManager; 00202 }; 00203 00204 00205 #endif 00206 00207 00208