VR-Forces 4.2 Class Documentation
detonationManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2004 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: detonationManager.h,v $ $Revision: 1.22 $ $State: Exp $
7 *******************************************************************************/
8 #ifndef detonationManager_H_
9 #define detonationManager_H_
10 
13 
14 #include <matrix/vlVector.h>
16 
17 #include <vl/detonateInter.h>
18 #include "vrfobjcore/vrfObjMgr.h"
19 #include "vrfobjcore/vrfObject.h"
20 #include "vrfobjcore/vrfKinState.h"
21 #include "vrftasks/radioMsgTypes.h"
22 #include "vrfobjcore/baseRadio.h"
23 #include "vrfobjcore/vrfObjSR.h"
24 
25 #include "vrfcore/simMgr.h"
26 #include "vrfutil/kinTools.h"
28 #include "vrfobjcore/compTypes.h"
30 #include <vlutil/vlConfig.h>
31 #include <map>
32 #include <vlutil/vlSmartPointers.h>
33 
34 
57 {
58 public:
59 
60  typedef bool (*DtDamageAdjudicationFunction)(const DtDetonationContext& detonationContext, void* usr);
61 
63  {
65  DtGlobalObjectDesignator globalId;
66  DtDamageAdjudicationFunction callbackFcn;
68  };
69 
70  typedef std::map<DtSimMunition,double> DtMunitionDamageMap;
71 
73  {
74  DtDamageAdjudicationFunction callbackFcn;
77  };
78 
79  typedef std::list<DtDetonationCallbackInfo> DtDetonationCallbackInfoList;
80 
82  {
84  DtGlobalObjectDesignator globalId;
86  };
87 
88  typedef DtBoost::shared_ptr<DtDirectDetonationTargetInfo> DtDirectDetonationTargetInfoPtr;
89 
90  typedef std::list<DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetList;
91  typedef std::map<std::string, DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetMap;
92 
93  typedef DtBoost::shared_ptr<DtCollateralDetonationTargetInfo> DtCollateralDetonationTargetInfoPtr;
94 
95  typedef std::list<DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetList;
96  typedef std::map<std::string, DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetMap;
97 
100  DtDetonationManager(DtSimManager& simManager);
101 
105  virtual ~DtDetonationManager();
106 
112  virtual bool init();
113 
120  virtual bool reinitialize();
121 
125 
129  virtual bool registerDirectDetonation(DtVrfObject& entity,
130  DtGlobalObjectDesignator entityId, void* callbackObject, DtDamageAdjudicationFunction func);
131 
132 
138  virtual bool registerCollateralDetonation(DtVrfObject& entity,
139  DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxDamageRadius,void* callbackObject,
140  DtDamageAdjudicationFunction func);
141 
149  virtual bool unRegisterDirectDetonationTarget(DtVrfObject& entity);
150  virtual bool unRegisterCollateralDetonationTarget(DtVrfObject& entity);
151 
154  virtual bool unRegisterCollateralDetonationCallback(DtVrfObject& entity, void* callbackObject,
155  DtDamageAdjudicationFunction func);
156 
158  virtual double lookupMunitionInCollateralDetonationMap(
159  const DtDetonationCallbackInfo& target, const DtSimMunition & munition);
160 
162  virtual void sendDetonationInteraction(DtDetonationInteraction& detonation);
163 
164 protected:
165 
175  static void detonationCallback(DtDetonationInteraction* detInter, void* usr);
176 
177  static void nameChangeCallback(const DtVrfObjectNameChangedCallbackInfo& change, void * usr);
178 
179  virtual void processNameChange(const DtVrfObjectNameChangedCallbackInfo& change);
180 
192  virtual void processDetonation(const DtDetonationInteraction& detonation);
193 
196  virtual const DtPhysicalWorld* physicalWorld() const;
197  virtual DtPhysicalWorld* physicalWorld();
198 
201  virtual Coordinate_System* coordinateSystem();
202  virtual const Coordinate_System* coordinateSystem() const;
203 
208  virtual void processCollateralDetonationForEntitiesInRange(DtDetonationContext& detonationContext);
209 
214  bool testInvariant() const;
215 
216  void cleanOutDeadEntities();
217 
218 private:
219 
224  DtDetonationManager& operator=(const DtDetonationManager& other);
225 
226 protected:
227 
233  std::list<std::string> myEntitiesQueuedToBeRemovedList;
235 };
236 
237 
238 #endif
239 
240 
241 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)