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"
19 
20 #include "vrfutil/kinematicTools.h"
22 
23 #include <map>
24 
25 #include <mutex>
26 
27 namespace makVrfEvents
28 {
29  class DtEvent;
30 }
31 
33 
44 {
45 public:
46 
47  typedef bool (*DtFireProcessingFunction)(const DtFireContext& fireContext, void* usr);
48  typedef std::map<DtUUID, DtSimObjectReference> DtRegisteredVrfObjects;
49  typedef std::map<DtUUID, std::pair<DtFireProcessingFunction, void*> > DtFireCallbackFuncs;
50 
51  typedef std::map<DtSimMunition, double> DtFireRangeMap;
52 
54  {
55  DtFireProcessingFunction callbackFcn;
58  };
59 
60  typedef std::list<DtFireRangeCallbackInfo> DtFireRangeCallbackInfoList;
61 
63  {
66  };
67 
68  typedef std::shared_ptr<DtFireRangeInfo> DtFireRangeInfoPtr;
69 
70  typedef std::map<DtUUID, DtFireRangeInfoPtr> DtFireRangeInfoMap;
71 
75 
78  virtual ~DtFireManager();
79 
86  virtual bool init();
87 
94  virtual bool reinitialize();
95 
97  virtual void tick();
98 
106  virtual bool registerFireTarget(const DtUUID& entityId, double distance,
107  void* callbackObject, DtFireProcessingFunction func);
108 
118  virtual bool registerFireTargetForRemoval(const DtUUID& entity);
119 
127  virtual bool unRegisterFireTarget(const DtUUID& entity);
128 
130  virtual void sendFireInteraction(const makVrfEvents::DtFireEvent& fire);
131 
136  virtual bool registerFireInArea(const DtUUID& entityId, DtSimMunition munition, double maxRadius, void* callbackObject,
137  DtFireProcessingFunction func);
138 
141  virtual bool unRegisterFireInAreaCallback(const DtUUID& entity, void* callbackObject,
142  DtFireProcessingFunction func);
143 
146  virtual bool isTargetInterestedInFire(const DtFireRangeCallbackInfo& target,
147  double range, DtFireContext& fireContext) const;
148 
150  virtual double lookupMunitionInFireRangeMap(
151  const DtFireRangeCallbackInfo& target, const DtSimMunition & munition) const;
152 
153 protected:
154 
166  virtual void processDetonation(const makVrfEvents::DtDetonationEvent& fire);
167 
179  virtual void processFire(const makVrfEvents::DtFireEvent& fire);
180 
181  virtual void processUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
182 
184  virtual void determineUnderFire(const makVrfEvents::DtDetonationEvent& detonation);
185 
187  virtual void determineUnderFire(const makVrfEvents::DtFireEvent& fireInter);
188 
190  virtual void removeQueuedFireTargets();
191 
193  virtual void fireEvent(const makVrfEvents::DtEvent&);
194  virtual void detonationEvent(const makVrfEvents::DtEvent&);
199  virtual void processFireForEntitiesInRange(const makVrfEvents::DtFireEvent& fireInter);
200 protected:
201 
204  DtFireManager(const DtFireManager& orig);
206  DtFireManager& operator=(const DtFireManager& other);
207 
208 protected:
211 
215 
217  std::vector<DtUUID> myFireTargetsToBeRemoved;
218 
220  std::recursive_mutex myMutex;
222 
223  bool myConnectionsMade = false;
224 
228 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
std::shared_ptr< DtFireRangeInfo > DtFireRangeInfoPtr
Definition: fireManager.h:68
DtFireRangeMap munitionMap
Definition: fireManager.h:57
DtFireRangeCallbackInfoList callbacks
Definition: fireManager.h:65
Definition: fireEvent.h:16
DtSimulationServices * mySimulationServices
Definition: fireManager.h:219
DtFireRangeInfoMap myFireRangeInfoMap
Definition: fireManager.h:221
std::map< DtUUID, DtSimObjectReference > DtRegisteredVrfObjects
Definition: fireManager.h:48
The DtFireContext class exists to contain all the relevent information necessary for an entity to pro...
Definition: fireContext.h:24
Definition: detonationEvent.h:20
The DtFireManager class exists to centralize the process of sending and receiving of fire interaction...
Definition: fireManager.h:43
double myMaxDistance
The maximum distance from a detonation that could result in a registered callback being called...
Definition: fireManager.h:227
Definition: fireManager.h:62
std::map< DtUUID, DtFireRangeInfoPtr > DtFireRangeInfoMap
Definition: fireManager.h:70
std::recursive_mutex myMutex
Definition: fireManager.h:220
std::map< DtUUID, std::pair< DtFireProcessingFunction, void * > > DtFireCallbackFuncs
Definition: fireManager.h:49
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:64
DtFireProcessingFunction callbackFcn
Definition: fireManager.h:55
DtRegisteredVrfObjects myFireTargets
A container of vrfObjects that have registered for fire interaction processing.
Definition: fireManager.h:210
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:214
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:51
std::list< DtFireRangeCallbackInfo > DtFireRangeCallbackInfoList
Definition: fireManager.h:60
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
Definition: fireManager.h:53
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
Contains the DtSimObjectReference class declaration.
std::vector< DtUUID > myFireTargetsToBeRemoved
This container contains all the fire targets to be removed.
Definition: fireManager.h:217
DtSimMunition class.
Definition: simMunition.h:31
void * callbackUserData
Definition: fireManager.h:56

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)