VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
detonationManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
11 #include <matrix/vlVector.h>
13 
14 #include <vl/detonationInteraction.h>
16 #include "vrfobjcore/vrfObject.h"
19 #include "vrfobjcore/simRadio.h"
21 #include "vrfutil/rwUUID.h"
22 
23 #include "vrfcore/simManager.h"
24 #include "vrfutil/kinematicTools.h"
26 #include <vlutil/vlConfig.h>
27 #include <map>
28 #include <vlutil/vlSmartPointers.h>
29 
30 
53 {
54 public:
55 
56  typedef bool (*DtDamageAdjudicationFunction)(const DtDetonationContext& detonationContext, void* usr);
57 
59  {
61  DtGlobalObjectDesignator globalId;
62  DtDamageAdjudicationFunction callbackFcn;
64  };
65 
66  typedef std::map<DtSimMunition,double> DtMunitionDamageMap;
67 
69  {
70  DtDamageAdjudicationFunction callbackFcn;
73  };
74 
75  typedef std::list<DtDetonationCallbackInfo> DtDetonationCallbackInfoList;
76 
78  {
80  DtGlobalObjectDesignator globalId;
82  };
83 
84  typedef DtBoost::shared_ptr<DtDirectDetonationTargetInfo> DtDirectDetonationTargetInfoPtr;
85 
86  typedef std::list<DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetList;
87  typedef std::map<DtUUID, DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetMap;
88 
89  typedef DtBoost::shared_ptr<DtCollateralDetonationTargetInfo> DtCollateralDetonationTargetInfoPtr;
90 
91  typedef std::list<DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetList;
92  typedef std::map<DtUUID, DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetMap;
93 
96  DtDetonationManager(DtSimManager& simManager);
97 
101  virtual ~DtDetonationManager();
102 
108  virtual bool init();
109 
116  virtual bool reinitialize();
117 
121 
125  virtual bool registerDirectDetonation(DtVrfObject& entity,
126  DtGlobalObjectDesignator entityId, void* callbackObject, DtDamageAdjudicationFunction func);
127 
128 
134  virtual bool registerCollateralDetonation(DtVrfObject& entity,
135  DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxDamageRadius,void* callbackObject,
136  DtDamageAdjudicationFunction func);
137 
145  virtual bool unRegisterDirectDetonationTarget(DtVrfObject& entity);
146  virtual bool unRegisterCollateralDetonationTarget(DtVrfObject& entity);
147 
150  virtual bool unRegisterCollateralDetonationCallback(DtVrfObject& entity, void* callbackObject,
151  DtDamageAdjudicationFunction func);
152 
154  virtual double lookupMunitionInCollateralDetonationMap(
155  const DtDetonationCallbackInfo& target, const DtSimMunition & munition);
156 
158  virtual void sendDetonationInteraction(DtDetonationInteraction& detonation);
159 
160 protected:
161 
171  static void detonationCallback(DtDetonationInteraction* detInter, void* usr);
172 
173  static void uuidChangeCallback(const DtVrfObjectUUIDChangedCallbackInfo& change, void * usr);
174 
175  virtual void processUUIDChange(const DtVrfObjectUUIDChangedCallbackInfo& change);
176 
188  virtual void processDetonation(const DtDetonationInteraction& detonation);
189 
192  virtual const DtPhysicalWorld* physicalWorld() const;
193  virtual DtPhysicalWorld* physicalWorld();
194 
197  virtual Coordinate_System* coordinateSystem();
198  virtual const Coordinate_System* coordinateSystem() const;
199 
204  virtual void processCollateralDetonationForEntitiesInRange(DtDetonationContext& detonationContext);
205 
210  bool testInvariant() const;
211 
212  void cleanOutDeadEntities();
213 
214 private:
215 
220  DtDetonationManager& operator=(const DtDetonationManager& other);
221 
222 protected:
223 
231 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)