VR-Forces 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 
96  virtual void tick();
97 
105  virtual bool registerFireTarget(const DtUUID& entityId, double distance,
106  void* callbackObject, DtFireProcessingFunction func);
107 
117  virtual bool registerFireTargetForRemoval(const DtUUID& entity);
118 
126  virtual bool unRegisterFireTarget(const DtUUID& entity);
127 
129  virtual void sendFireInteraction(const makVrfEvents::DtFireEvent& fire);
130 
135  virtual bool registerFireInArea(const DtUUID& entityId, DtSimMunition munition, double maxRadius, void* callbackObject,
136  DtFireProcessingFunction func);
137 
140  virtual bool unRegisterFireInAreaCallback(const DtUUID& entity, void* callbackObject,
141  DtFireProcessingFunction func);
142 
145  virtual bool isTargetInterestedInFire(const DtFireRangeCallbackInfo& target,
146  double range, DtFireContext& fireContext) const;
147 
149  virtual double lookupMunitionInFireRangeMap(
150  const DtFireRangeCallbackInfo& target, const DtSimMunition & munition) const;
151 
152 protected:
153 
165  virtual void processDetonation(const makVrfEvents::DtDetonationEvent& fire);
166 
178  virtual void processFire(const makVrfEvents::DtFireEvent& fire);
179 
180  virtual void processUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
181 
183  virtual void determineUnderFire(const makVrfEvents::DtDetonationEvent& detonation);
184 
186  virtual void determineUnderFire(const makVrfEvents::DtFireEvent& fireInter);
187 
189  virtual void removeQueuedFireTargets();
190 
192  virtual void fireEvent(const makVrfEvents::DtEvent&);
193  virtual void detonationEvent(const makVrfEvents::DtEvent&);
198  virtual void processFireForEntitiesInRange(const makVrfEvents::DtFireEvent& fireInter);
199 protected:
200 
203  DtFireManager(const DtFireManager& orig);
205  DtFireManager& operator=(const DtFireManager& other);
206 
207 protected:
210 
214 
216  std::vector<DtUUID> myFireTargetsToBeRemoved;
217 
219  tbb::recursive_mutex myMutex;
221 
222  bool myConnectionsMade = false;
223 
227 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
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:218
DtFireRangeInfoMap myFireRangeInfoMap
Definition: fireManager.h:220
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:226
Definition: fireManager.h:61
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:219
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:209
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:213
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:94
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:216
DtSimMunition class.
Definition: simMunition.h:31
void * callbackUserData
Definition: fireManager.h:55

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)