VR-Forces 5.0.2 Developer's Guide
 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 
14 #include "vrfobjcore/fireContext.h"
15 
17 #include "vrfobjcore/simRadio.h"
18 
19 #include "vrfutil/kinematicTools.h"
21 
22 #include <map>
23 
24 #include <tbb/recursive_mutex.h>
25 
26 namespace makVrfEvents
27 {
28  class DtEvent;
29 }
30 
32 
43 {
44 public:
45 
46  typedef bool (*DtFireProcessingFunction)(const DtFireContext& fireContext, void* usr);
47  typedef std::map<DtUUID, DtSimObjectReference> DtRegisteredVrfObjects;
48  typedef std::map<DtUUID, std::pair<DtFireProcessingFunction, void*> > DtFireCallbackFuncs;
49 
50  typedef std::map<DtSimMunition, double> DtFireRangeMap;
51 
53  {
54  DtFireProcessingFunction callbackFcn;
57  };
58 
59  typedef std::list<DtFireRangeCallbackInfo> DtFireRangeCallbackInfoList;
60 
62  {
65  };
66 
67  typedef DtBoost::shared_ptr<DtFireRangeInfo> DtFireRangeInfoPtr;
68 
69  typedef std::map<DtUUID, DtFireRangeInfoPtr> DtFireRangeInfoMap;
70 
74 
77  virtual ~DtFireManager();
78 
85  virtual bool init();
86 
93  virtual bool reinitialize();
94 
95 
103  virtual bool registerFireTarget(const DtUUID& entityId, double distance,
104  void* callbackObject, DtFireProcessingFunction func);
105 
115  virtual bool registerFireTargetForRemoval(const DtUUID& entity);
116 
124  virtual bool unRegisterFireTarget(const DtUUID& entity);
125 
127  virtual void sendFireInteraction(const makVrfEvents::DtFireEvent& fire);
128 
133  virtual bool registerFireInArea(const DtUUID& entityId, DtSimMunition munition, double maxRadius, void* callbackObject,
134  DtFireProcessingFunction func);
135 
138  virtual bool unRegisterFireInAreaCallback(const DtUUID& entity, void* callbackObject,
139  DtFireProcessingFunction func);
140 
143  virtual bool isTargetInterestedInFire(const DtFireRangeCallbackInfo& target,
144  double range, DtFireContext& fireContext) const;
145 
147  virtual double lookupMunitionInFireRangeMap(
148  const DtFireRangeCallbackInfo& target, const DtSimMunition & munition) const;
149 
150 protected:
151 
163  virtual void processDetonation(const makVrfEvents::DtDetonationEvent& fire);
164 
176  virtual void processFire(const makVrfEvents::DtFireEvent& fire);
177 
178  virtual void processUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
179 
181  virtual void determineUnderFire(const makVrfEvents::DtDetonationEvent& detonation);
182 
184  virtual void determineUnderFire(const makVrfEvents::DtFireEvent& fireInter);
185 
187  virtual void removeQueuedFireTargets();
188 
190  virtual void fireEvent(const makVrfEvents::DtEvent&);
191  virtual void detonationEvent(const makVrfEvents::DtEvent&);
196  virtual void processFireForEntitiesInRange(const makVrfEvents::DtFireEvent& fireInter);
197 protected:
198 
201  DtFireManager(const DtFireManager& orig);
203  DtFireManager& operator=(const DtFireManager& other);
204 
205 protected:
208 
212 
214  std::vector<DtUUID> myFireTargetsToBeRemoved;
215 
217  tbb::recursive_mutex myMutex;
219 
220  boost::signals2::scoped_connection myUUIDChangedConnection;
221 
225 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
DtFireRangeMap munitionMap
Definition: fireManager.h:56
DtFireRangeCallbackInfoList callbacks
Definition: fireManager.h:64
Definition: fireEvent.h:16
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
DtSimulationServices * mySimulationServices
Definition: fireManager.h:216
DtFireRangeInfoMap myFireRangeInfoMap
Definition: fireManager.h:218
std::map< DtUUID, DtSimObjectReference > 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
Definition: detonationEvent.h:20
The DtFireManager class exists to centralize the process of sending and receiving of fire interaction...
Definition: fireManager.h:42
double myMaxDistance
The maximum distance from a detonation that could result in a registered callback being called...
Definition: fireManager.h:224
Definition: fireManager.h:61
boost::signals2::scoped_connection myUUIDChangedConnection
Definition: fireManager.h:220
std::map< DtUUID, DtFireRangeInfoPtr > DtFireRangeInfoMap
Definition: fireManager.h:69
std::map< DtUUID, std::pair< DtFireProcessingFunction, void * > > DtFireCallbackFuncs
Definition: fireManager.h:48
tbb::recursive_mutex myMutex
Definition: fireManager.h:217
Definition: event.h:13
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
DtSimObjectReference vrfObject
Definition: fireManager.h:63
DtFireProcessingFunction callbackFcn
Definition: fireManager.h:54
DtRegisteredVrfObjects myFireTargets
A container of vrfObjects that have registered for fire interaction processing.
Definition: fireManager.h:207
DtFireCallbackFuncs myFireCallbacks
The callback functions registered by the vrfObjects. When a fire interaction occurs, the callback associated with the appropriate entity is used.
Definition: fireManager.h:211
DtBoost::shared_ptr< DtFireRangeInfo > DtFireRangeInfoPtr
Definition: fireManager.h:67
Define constants for types of tasks, sets, admin messages, reports, and sim commands (all sent via ra...
std::map< DtSimMunition, double > DtFireRangeMap
Definition: fireManager.h:50
std::list< DtFireRangeCallbackInfo > DtFireRangeCallbackInfoList
Definition: fireManager.h:59
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
Definition: fireManager.h:52
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
std::vector< DtUUID > myFireTargetsToBeRemoved
This container contains all the fire targets to be removed.
Definition: fireManager.h:214
DtSimMunition class.
Definition: simMunition.h:31
void * callbackUserData
Definition: fireManager.h:55

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)