VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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"
23 
24 #include "vrfcore/simManager.h"
25 #include "vrfutil/kinematicTools.h"
27 #include <vlutil/vlConfig.h>
28 #include <map>
29 #include <vlutil/vlSmartPointers.h>
30 
31 
54 {
55 public:
56 
57  typedef bool (*DtDamageAdjudicationFunction)(const DtDetonationContext& detonationContext, void* usr);
58 
60  {
63  DtDamageAdjudicationFunction callbackFcn;
65  };
66 
67  typedef std::map<DtSimMunition, double> DtMunitionDamageMap;
68  typedef std::map<DtString, double> DtPowerDamageMap;
69 
71  {
72  DtDamageAdjudicationFunction callbackFcn;
76  };
77 
78  typedef std::list<DtDetonationCallbackInfo> DtDetonationCallbackInfoList;
79 
81  {
85  };
86 
87  typedef DtBoost::shared_ptr<DtDirectDetonationTargetInfo> DtDirectDetonationTargetInfoPtr;
88 
89  typedef std::list<DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetList;
90  typedef std::map<DtUUID, DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetMap;
91 
92  typedef DtBoost::shared_ptr<DtCollateralDetonationTargetInfo> DtCollateralDetonationTargetInfoPtr;
93 
94  typedef std::list<DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetList;
95  typedef std::map<DtUUID, DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetMap;
96 
99  DtDetonationManager(DtSimManager& simManager);
100 
104  virtual ~DtDetonationManager();
105 
111  virtual bool init();
112 
119  virtual bool reinitialize();
120 
124 
128  virtual bool registerDirectDetonation(DtVrfObject& entity,
129  DtGlobalObjectDesignator entityId, void* callbackObject, DtDamageAdjudicationFunction func);
130 
131 
137  virtual bool registerCollateralDetonation(DtVrfObject& entity,
138  DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxDamageRadius,void* callbackObject,
139  DtDamageAdjudicationFunction func);
140 
146  virtual bool registerCollateralDetonationByPower(DtVrfObject& entity,
147  DtGlobalObjectDesignator entityId, const DtString& powerType, double minDamagePower, void* callbackObject,
148  DtDamageAdjudicationFunction func);
149 
157  virtual bool unRegisterDirectDetonationTarget(DtVrfObject& entity);
158  virtual bool unRegisterCollateralDetonationTarget(DtVrfObject& entity);
159 
162  virtual bool unRegisterCollateralDetonationCallback(DtVrfObject& entity, void* callbackObject,
163  DtDamageAdjudicationFunction func);
164 
167  virtual bool isTargetInterestedInCollateralDetonation(const DtDetonationCallbackInfo& target,
168  double impactRange, double shooterRange, DtDetonationContext& detonationContext) const;
169 
171  virtual double lookupMunitionInCollateralDetonationMap(
172  const DtDetonationCallbackInfo& target, const DtSimMunition & munition) const;
173 
175  virtual void sendDetonationInteraction(DtDetonationInteraction& detonation);
176 
182  virtual bool loadParametersFromFile(const DtFilename& filename);
183 
186  virtual double detonationPower(const DtSimMunition & munition, double rangeFromShooter,
187  double rangeFromImpact, const DtString& powerType) const;
188 
191  virtual DtDetonationParams* parameters();
192  virtual const DtDetonationParams* parameters() const;
194 
196  virtual void resetParameters();
197 
199  virtual bool parametersLoaded() const;
200 
202  virtual const DtFilename& parametersFile() const;
203 
204 protected:
205 
215  static void detonationCallback(DtDetonationInteraction* detInter, void* usr);
216 
217  static void uuidChangeCallback(const DtVrfObjectUUIDChangedCallbackInfo& change, void * usr);
218 
219  virtual void processUUIDChange(const DtVrfObjectUUIDChangedCallbackInfo& change);
220 
232  virtual void processDetonation(const DtDetonationInteraction& detonation);
233 
236  virtual const DtPhysicalWorld* physicalWorld() const;
237  virtual DtPhysicalWorld* physicalWorld();
238 
241  virtual Coordinate_System* coordinateSystem();
242  virtual const Coordinate_System* coordinateSystem() const;
243 
248  virtual void processCollateralDetonationForEntitiesInRange(DtDetonationContext& detonationContext);
249 
254  bool testInvariant() const;
255 
256  void cleanOutDeadEntities();
257 
261  virtual DtDetonationParams* createParameters();
262 
263 private:
264 
269  DtDetonationManager& operator=(const DtDetonationManager& other);
270 
271 protected:
272 
280 
281  DtFilename myParametersFile;
282 
285 };

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)