VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fireManager.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>
12 
13 #include <vl/fireInteraction.h>
14 #include "vrfobjcore/fireContext.h"
15 
17 #include "vrfobjcore/vrfObject.h"
20 #include "vrfobjcore/simRadio.h"
22 
23 #include "vrfcore/simManager.h"
24 #include "vrfutil/kinematicTools.h"
26 
27 #include <map>
28 
29 #include <tbb/recursive_mutex.h>
30 
31 class DtEvent;
32 
43 {
44 public:
45 
46  typedef bool (*DtFireProcessingFunction)(const DtFireContext& fireContext, void* usr);
47  typedef std::map<const DtVrfObject*, DtGlobalObjectDesignator> DtRegisteredVrfObjects;
48  typedef std::map<const DtVrfObject*, DtFireProcessingFunction> DtFireCallbackFuncs;
49  typedef std::map<const DtVrfObject*, void*> DtFireCallbackObjects;
50 
51  typedef std::map<DtSimMunition, double> DtFireRangeMap;
52 
54  {
55  DtFireProcessingFunction callbackFcn;
58  };
59 
60  typedef std::list<DtFireRangeCallbackInfo> DtFireRangeCallbackInfoList;
61 
63  {
67  };
68 
69  typedef DtBoost::shared_ptr<DtFireRangeInfo> DtFireRangeInfoPtr;
70 
71  typedef std::map<DtUUID, DtFireRangeInfoPtr> DtFireRangeInfoMap;
72 
75  DtFireManager(DtSimManager& simManager);
76 
79  virtual ~DtFireManager();
80 
87  virtual bool init();
88 
95  virtual bool reinitialize();
96 
97 
105  virtual bool registerFireTarget(DtVrfObject& entity,
106  DtGlobalObjectDesignator entityId,
107  void* callbackObject,
108  DtFireProcessingFunction func);
109 
119  virtual bool registerFireTargetForRemoval(DtVrfObject& entity);
120 
128  virtual bool unRegisterFireTarget(DtVrfObject& entity);
129 
131  virtual void sendFireInteraction(DtFireInteraction& fire);
132 
137  virtual bool registerFireInArea(const DtVrfObject& entity,
138  DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxRadius, void* callbackObject,
139  DtFireProcessingFunction func);
140 
143  virtual bool unRegisterFireInAreaCallback(const DtVrfObject& entity, void* callbackObject,
144  DtFireProcessingFunction func);
145 
148  virtual bool isTargetInterestedInFire(const DtFireRangeCallbackInfo& target,
149  double range, DtFireContext& fireContext) const;
150 
152  virtual double lookupMunitionInFireRangeMap(
153  const DtFireRangeCallbackInfo& target, const DtSimMunition & munition) const;
154 
155 protected:
156 
168  virtual void processDetonation(const DtDetonationInteraction& fire);
169 
181  virtual void processFire(const DtFireInteraction& fire);
182 
183  static void uuidChangeCallback(const DtVrfObjectUUIDChangedCallbackInfo& change, void * usr);
184  virtual void processUUIDChange(const DtVrfObjectUUIDChangedCallbackInfo& change);
185 
187  virtual void determineUnderFire(const DtDetonationInteraction& detonation);
188 
190  virtual void determineUnderFire(const DtFireInteraction& fireInter);
191 
193  virtual void removeQueuedFireTargets();
194 
196  virtual void fireEvent(const DtEvent&);
197  virtual void detonationEvent(const DtEvent&);
202  virtual void processFireForEntitiesInRange(const DtFireInteraction& fireInter);
203 
204 protected:
205 
208  DtFireManager(const DtFireManager& orig);
210  DtFireManager& operator=(const DtFireManager& other);
211 
212 protected:
215 
219 
224 
226  std::vector<DtVrfObject*> myFireTargetsToBeRemoved;
227 
229  tbb::recursive_mutex myMutex;
231 };
std::map< const DtVrfObject *, DtFireProcessingFunction > DtFireCallbackFuncs
Definition: fireManager.h:48
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtFireRangeMap munitionMap
Definition: fireManager.h:57
DtFireRangeCallbackInfoList callbacks
Definition: fireManager.h:66
DtSimManager & mySimManager
Definition: fireManager.h:228
DtFireRangeInfoMap myFireRangeInfoMap
Definition: fireManager.h:230
std::map< const DtVrfObject *, DtGlobalObjectDesignator > DtRegisteredVrfObjects
Definition: fireManager.h:47
The DtFireContext class exists to contain all the relevent information necessary for an entity to pro...
Definition: fireContext.h:23
The DtFireManager class exists to centralize the processing of fire interactions. ...
Definition: fireManager.h:42
Arguments passed by the DtVrfObjectManager::addUUIDChangedCallback callbacks.
Definition: vrfObjectManager.h:160
Definition: fireManager.h:62
Definition: events.h:49
std::map< DtUUID, DtFireRangeInfoPtr > DtFireRangeInfoMap
Definition: fireManager.h:71
tbb::recursive_mutex myMutex
Definition: fireManager.h:229
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtFireProcessingFunction callbackFcn
Definition: fireManager.h:55
DtRegisteredVrfObjects myFireTargets
A container of vrfObjects that have registered for fire interaction processing.
Definition: fireManager.h:214
DtFireCallbackFuncs myFireCallbacks
The callback functions registered by the vrfObjects.
Definition: fireManager.h:218
DtBoost::shared_ptr< DtFireRangeInfo > DtFireRangeInfoPtr
Definition: fireManager.h:69
Define constants for types of tasks, sets, admin messages, reports, and sim commands (all sent via ra...
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
std::map< DtSimMunition, double > DtFireRangeMap
Definition: fireManager.h:51
DtGlobalObjectDesignator globalId
Definition: fireManager.h:65
std::vector< DtVrfObject * > myFireTargetsToBeRemoved
This container contains all the fire targets to be removed.
Definition: fireManager.h:226
std::list< DtFireRangeCallbackInfo > DtFireRangeCallbackInfoList
Definition: fireManager.h:60
Definition: fireManager.h:53
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
std::map< const DtVrfObject *, void * > DtFireCallbackObjects
Definition: fireManager.h:49
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
const DtVrfObject * vrfObject
Definition: fireManager.h:64
DtSimMunition class.
Definition: simMunition.h:34
DtFireCallbackObjects myFireCallbackObjects
To ensure that the callback has all the data necessary, this callback object is registered by the vrf...
Definition: fireManager.h:223
void * callbackUserData
Definition: fireManager.h:56

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)