VR-Forces 4.8 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"
24 
25 #include "vrfcore/simManager.h"
26 #include "vrfutil/kinematicTools.h"
28 #include <vlutil/vlConfig.h>
29 #include <map>
30 #include <vlutil/vlSmartPointers.h>
31 #include <tbb/recursive_mutex.h>
32 
35 class DtEvent;
36 
59 {
60 public:
61 
62  typedef bool (*DtDamageAdjudicationFunction)(const DtDetonationContext& detonationContext, void* usr);
63 
65  {
68  DtDamageAdjudicationFunction callbackFcn;
70  };
71 
72  typedef std::map<DtSimMunition, double> DtMunitionDamageMap;
73  typedef std::map<DtString, double> DtPowerDamageMap;
74 
76  {
77  DtDamageAdjudicationFunction callbackFcn;
81  };
82 
83  typedef std::list<DtDetonationCallbackInfo> DtDetonationCallbackInfoList;
84 
86  {
90  };
91 
92  typedef DtBoost::shared_ptr<DtDirectDetonationTargetInfo> DtDirectDetonationTargetInfoPtr;
93 
94  typedef std::list<DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetList;
95  typedef std::map<DtUUID, DtDirectDetonationTargetInfoPtr> DtDirectDetonationTargetMap;
96 
97  typedef DtBoost::shared_ptr<DtCollateralDetonationTargetInfo> DtCollateralDetonationTargetInfoPtr;
98 
99  typedef std::list<DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetList;
100  typedef std::map<DtUUID, DtCollateralDetonationTargetInfoPtr> DtCollateralDetonationTargetMap;
101 
104  DtDetonationManager(DtSimManager& simManager);
105 
109  virtual ~DtDetonationManager();
110 
116  virtual bool init();
117 
124  virtual bool reinitialize();
125 
129 
133  virtual bool registerDirectDetonation(const DtVrfObject& entity,
134  DtGlobalObjectDesignator entityId, void* callbackObject, DtDamageAdjudicationFunction func);
135 
136 
142  virtual bool registerCollateralDetonation(const DtVrfObject& entity,
143  DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxDamageRadius,void* callbackObject,
144  DtDamageAdjudicationFunction func);
145 
151  virtual bool registerCollateralDetonationByPower(const DtVrfObject& entity,
152  DtGlobalObjectDesignator entityId, const DtString& powerType, double minDamagePower, void* callbackObject,
153  DtDamageAdjudicationFunction func);
154 
162  virtual bool unRegisterDirectDetonationTarget(const DtVrfObject& entity);
163  virtual bool unRegisterCollateralDetonationTarget(const DtVrfObject& entity);
164 
167  virtual bool unRegisterCollateralDetonationCallback(const DtVrfObject& entity, void* callbackObject,
168  DtDamageAdjudicationFunction func);
169 
172  virtual bool isTargetInterestedInCollateralDetonation(const DtDetonationCallbackInfo& target,
173  double impactRange, double shooterRange, DtDetonationContext& detonationContext) const;
174 
176  virtual double lookupMunitionInCollateralDetonationMap(
177  const DtDetonationCallbackInfo& target, const DtSimMunition & munition) const;
178 
180  virtual void sendDetonationInteraction(DtDetonationInteraction& detonation);
181 
187  virtual bool loadParametersFromFile(const DtFilename& filename);
188 
189  virtual bool loadDeformationParametersFromFile(const DtFilename & filename);
190 
193  virtual double detonationPower(const DtSimMunition & munition, double rangeFromShooter,
194  double rangeFromImpact, const DtString& powerType) const;
195 
198 
201  virtual DtDetonationResult detonationResult(const DtSimMunition& munition, const DtEntityType& targetEntityType, const DtVector& localPosition) const;
202 
206  virtual DtDetonationResult detonationResult(const DtSimMunition& munition, const DtSurface& terrainSurface, const DtVector& localPosition) const;
207 
211  virtual DtDetonationResult detonationResultMidAir(const DtSimMunition& munition, const DtVector& localPosition) const;
213 
216  virtual DtDetonationParams* parameters();
217  virtual const DtDetonationParams* parameters() const;
219 
220  virtual DtTerrainDeformationParams * terrainDeformationParameters();
221  virtual const DtTerrainDeformationParams * terrainDeformationParameters() const;
222 
224  virtual void resetParameters();
225 
227  virtual bool parametersLoaded() const;
228 
230  virtual const DtFilename& parametersFile() const;
231 
232  virtual const DtFilename& deformationParametersFile() const;
233 
234 protected:
235 
236  static void uuidChangeCallback(const DtVrfObjectUUIDChangedCallbackInfo& change, void * usr);
237 
238  virtual void processUUIDChange(const DtVrfObjectUUIDChangedCallbackInfo& change);
239 
251  virtual void processDetonation(const DtDetonationInteraction& detonation);
252 
255  virtual const DtPhysicalWorld* physicalWorld() const;
256  virtual DtPhysicalWorld* physicalWorld();
257 
260  virtual Coordinate_System* coordinateSystem();
261  virtual const Coordinate_System* coordinateSystem() const;
262 
267  virtual void processCollateralDetonationForEntitiesInRange(DtDetonationContext& detonationContext);
268 
270  virtual DtDetonationResult defaultDetonationResult() const;
271 
272  void cleanOutDeadEntities();
273 
277  virtual DtDetonationParams* createParameters();
278 
279  virtual DtTerrainDeformationParams* createDeformationParameters();
280 
282  virtual void detonationEvent(const DtEvent&);
283 
284 private:
285 
290  DtDetonationManager& operator=(const DtDetonationManager& other);
291 
292 protected:
295 
301 
302  DtFilename myParametersFile;
304 
307 
309 
310  tbb::recursive_mutex myMutex;
311 };
DtCollateralDetonationTargetMap myCollateralDetonationTargetMap
Definition: detonationManager.h:294
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtFilename myParametersFile
Definition: detonationManager.h:302
DtMunitionDamageMap damageByMunitionMap
Definition: detonationManager.h:79
DtDetonationParams * myParameters
Parameters for this detonation manager.
Definition: detonationManager.h:306
Readable-writable class holding all parameters to configure the DtDetonationManager.
Definition: detonationParams.h:22
DtDamageAdjudicationFunction callbackFcn
Definition: detonationManager.h:68
DtPowerDamageMap damageByPowerMap
Definition: detonationManager.h:80
Definition: detonationManager.h:64
std::list< DtDetonationCallbackInfo > DtDetonationCallbackInfoList
Definition: detonationManager.h:83
Factory for creating DtBaseMunitionDispersalDeterminants.
Definition: baseMunitionDispersalDeterminant.h:50
Definition: surface.h:179
std::map< DtUUID, DtCollateralDetonationTargetInfoPtr > DtCollateralDetonationTargetMap
Definition: detonationManager.h:100
const DtVrfObject * vrfObject
Definition: detonationManager.h:66
Arguments passed by the DtVrfObjectManager::addUUISChangedCallback callbacks.
Definition: vrfObjectManager.h:159
Definition: events.h:47
const DtVrfObject * vrfObject
Definition: detonationManager.h:87
void * callbackUserData
Definition: detonationManager.h:69
The DtPhysicalWorld is the primary interface to and manager of all of the &quot;physical&quot; aspects of the s...
Definition: physicalWorld.h:87
Definition: coordSystem.h:54
Definition: detonationDeformationParams.h:9
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Factory for creating power range determinants.
Definition: powerRangeDeterminant.h:117
DtDirectDetonationTargetMap myDirectDetonationTargetMap
Definition: detonationManager.h:293
bool myQueueEntitiesToBeRemoved
After all the callbacks have been made those who&#39;ve been destroyed or asked to unregistered need to b...
Definition: detonationManager.h:298
std::list< DtCollateralDetonationTargetInfoPtr > DtCollateralDetonationTargetList
Definition: detonationManager.h:99
void * callbackUserData
Definition: detonationManager.h:78
DtDetonationCallbackInfoList callbacks
Definition: detonationManager.h:89
std::map< DtSimMunition, double > DtMunitionDamageMap
Definition: detonationManager.h:72
DtFilename myDeformationParamsFile
Definition: detonationManager.h:303
Define constants for types of tasks, sets, admin messages, reports, and sim commands (all sent via ra...
The DtDetonationContext contains all the information necessary for processing a Detonation Interactio...
Definition: detonationContext.h:27
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
DtSimManager & mySimManager
Definition: detonationManager.h:300
std::map< DtUUID, DtDirectDetonationTargetInfoPtr > DtDirectDetonationTargetMap
Definition: detonationManager.h:95
DtDamageAdjudicationFunction callbackFcn
Definition: detonationManager.h:77
DtBoost::shared_ptr< DtCollateralDetonationTargetInfo > DtCollateralDetonationTargetInfoPtr
Definition: detonationManager.h:97
Definition: detonationManager.h:75
DtTerrainDeformationParams * myDeformationParams
Definition: detonationManager.h:308
std::list< DtDirectDetonationTargetInfoPtr > DtDirectDetonationTargetList
Definition: detonationManager.h:94
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtGlobalObjectDesignator globalId
Definition: detonationManager.h:67
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
tbb::recursive_mutex myMutex
Definition: detonationManager.h:310
DtBoost::shared_ptr< DtDirectDetonationTargetInfo > DtDirectDetonationTargetInfoPtr
Definition: detonationManager.h:92
std::map< DtString, double > DtPowerDamageMap
Definition: detonationManager.h:73
DtSimMunition class.
Definition: simMunition.h:34
std::list< DtUUID > myEntitiesQueuedToBeRemovedList
Definition: detonationManager.h:299
DtGlobalObjectDesignator globalId
Definition: detonationManager.h:88
The DtDetonationManager class exists to centralize the processing of detonation interactions.
Definition: detonationManager.h:58

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)