VR-Forces 4.7 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 
33 
56 {
57 public:
58 
59  typedef bool (*DtDamageAdjudicationFunction)(const DtDetonationContext& detonationContext, void* usr);
60 
62  {
65  DtDamageAdjudicationFunction callbackFcn;
67  };
68 
69  typedef std::map<DtSimMunition, double> DtMunitionDamageMap;
70  typedef std::map<DtString, double> DtPowerDamageMap;
71 
73  {
74  DtDamageAdjudicationFunction callbackFcn;
78  };
79 
80  typedef std::list<DtDetonationCallbackInfo> DtDetonationCallbackInfoList;
81 
83  {
87  };
88 
89  typedef DtBoost::shared_ptr<DtDirectDetonationTargetInfo> DtDirectDetonationTargetInfoPtr;
90 
91  typedef std::list<DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetList;
92  typedef std::map<DtUUID, DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetMap;
93 
94  typedef DtBoost::shared_ptr<DtCollateralDetonationTargetInfo> DtCollateralDetonationTargetInfoPtr;
95 
96  typedef std::list<DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetList;
97  typedef std::map<DtUUID, DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetMap;
98 
101  DtDetonationManager(DtSimManager& simManager);
102 
106  virtual ~DtDetonationManager();
107 
113  virtual bool init();
114 
121  virtual bool reinitialize();
122 
126 
130  virtual bool registerDirectDetonation(DtVrfObject& entity,
131  DtGlobalObjectDesignator entityId, void* callbackObject, DtDamageAdjudicationFunction func);
132 
133 
139  virtual bool registerCollateralDetonation(DtVrfObject& entity,
140  DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxDamageRadius,void* callbackObject,
141  DtDamageAdjudicationFunction func);
142 
148  virtual bool registerCollateralDetonationByPower(DtVrfObject& entity,
149  DtGlobalObjectDesignator entityId, const DtString& powerType, double minDamagePower, void* callbackObject,
150  DtDamageAdjudicationFunction func);
151 
159  virtual bool unRegisterDirectDetonationTarget(DtVrfObject& entity);
160  virtual bool unRegisterCollateralDetonationTarget(DtVrfObject& entity);
161 
164  virtual bool unRegisterCollateralDetonationCallback(DtVrfObject& entity, void* callbackObject,
165  DtDamageAdjudicationFunction func);
166 
169  virtual bool isTargetInterestedInCollateralDetonation(const DtDetonationCallbackInfo& target,
170  double impactRange, double shooterRange, DtDetonationContext& detonationContext) const;
171 
173  virtual double lookupMunitionInCollateralDetonationMap(
174  const DtDetonationCallbackInfo& target, const DtSimMunition & munition) const;
175 
177  virtual void sendDetonationInteraction(DtDetonationInteraction& detonation);
178 
184  virtual bool loadParametersFromFile(const DtFilename& filename);
185 
188  virtual double detonationPower(const DtSimMunition & munition, double rangeFromShooter,
189  double rangeFromImpact, const DtString& powerType) const;
190 
193 
196  virtual DtDetonationResult detonationResult(const DtSimMunition& munition, const DtEntityType& targetEntityType, const DtVector& localPosition) const;
197 
201  virtual DtDetonationResult detonationResult(const DtSimMunition& munition, const DtSurface& terrainSurface, const DtVector& localPosition) const;
202 
206  virtual DtDetonationResult detonationResultMidAir(const DtSimMunition& munition, const DtVector& localPosition) const;
208 
211  virtual DtDetonationParams* parameters();
212  virtual const DtDetonationParams* parameters() const;
214 
216  virtual void resetParameters();
217 
219  virtual bool parametersLoaded() const;
220 
222  virtual const DtFilename& parametersFile() const;
223 
224 protected:
225 
235  static void detonationCallback(DtDetonationInteraction* detInter, void* usr);
236 
237  static void uuidChangeCallback(const DtVrfObjectUUIDChangedCallbackInfo& change, void * usr);
238 
239  virtual void processUUIDChange(const DtVrfObjectUUIDChangedCallbackInfo& change);
240 
252  virtual void processDetonation(const DtDetonationInteraction& detonation);
253 
256  virtual const DtPhysicalWorld* physicalWorld() const;
257  virtual DtPhysicalWorld* physicalWorld();
258 
261  virtual Coordinate_System* coordinateSystem();
262  virtual const Coordinate_System* coordinateSystem() const;
263 
268  virtual void processCollateralDetonationForEntitiesInRange(DtDetonationContext& detonationContext);
269 
271  virtual DtDetonationResult defaultDetonationResult() const;
272 
277  bool testInvariant() const;
278 
279  void cleanOutDeadEntities();
280 
284  virtual DtDetonationParams* createParameters();
285 
286 private:
287 
292  DtDetonationManager& operator=(const DtDetonationManager& other);
293 
294 protected:
295 
303 
304  DtFilename myParametersFile;
305 
308 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)