VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes
DtFireManager Class Reference

The DtFireManager class exists to centralize the processing of fire interactions. More...

Classes

struct  DtFireRangeCallbackInfo
 
struct  DtFireRangeInfo
 

Public Types

typedef bool(* DtFireProcessingFunction )(const DtFireContext &fireContext, void *usr)
 
typedef std::map< const
DtVrfObject
*, DtGlobalObjectDesignator
DtRegisteredVrfObjects
 
typedef std::map< const
DtVrfObject
*, DtFireProcessingFunction
DtFireCallbackFuncs
 
typedef std::map< const
DtVrfObject *, void * > 
DtFireCallbackObjects
 
typedef std::map
< DtSimMunition, double
DtFireRangeMap
 
typedef std::list
< DtFireRangeCallbackInfo
DtFireRangeCallbackInfoList
 
typedef DtBoost::shared_ptr
< DtFireRangeInfo
DtFireRangeInfoPtr
 
typedef std::map< DtUUID,
DtFireRangeInfoPtr
DtFireRangeInfoMap
 

Public Member Functions

 DtFireManager (DtSimManager &simManager)
 Constructs the fire manager. More...
 
virtual ~DtFireManager ()
 The destructor. More...
 
virtual bool init ()
 Initializes the fire manager. More...
 
virtual bool reinitialize ()
 Same as init, but intended to be called after the object has already been created. More...
 
virtual bool registerFireTarget (DtVrfObject &entity, DtGlobalObjectDesignator entityId, void *callbackObject, DtFireProcessingFunction func)
 Entities that wish to receive fire notifications (technically, it is usually the under-fire sensors which register for the entity) call this function. More...
 
virtual bool registerFireTargetForRemoval (DtVrfObject &entity)
 Registers the entity pointer for later removal from the fire targets containers. More...
 
virtual bool unRegisterFireTarget (DtVrfObject &entity)
 Removes the entity from the fire manager's container of fire targets. More...
 
virtual void sendFireInteraction (DtFireInteraction &fire)
 Send the fully initialized fire interaction. More...
 
virtual bool registerFireInArea (const DtVrfObject &entity, DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxRadius, void *callbackObject, DtFireProcessingFunction func)
 Use this function to register interest in fire in an area defined by a radius Supplies the entity, the entity ID, the munition being used, maximum radius, a callback function, and a pointer to the actuator (void *). More...
 
virtual bool unRegisterFireInAreaCallback (const DtVrfObject &entity, void *callbackObject, DtFireProcessingFunction func)
 Removes the given entity callback from the detonation manager's container of detonation target callbacks. More...
 
virtual bool isTargetInterestedInFire (const DtFireRangeCallbackInfo &target, double range, DtFireContext &fireContext) const
 Returns true if the target has registered interest in the given fire at the given range. More...
 
virtual double lookupMunitionInFireRangeMap (const DtFireRangeCallbackInfo &target, const DtSimMunition &munition) const
 If the munition is found returns the maximum radius of the munition. More...
 

Protected Member Functions

virtual void processDetonation (const DtDetonationInteraction &fire)
 Process the detonation interaction by properly creating a detonation context for the interaction, and then notifying all the appropriate entities. More...
 
virtual void processFire (const DtFireInteraction &fire)
 Process the fire interaction by properly creating a fire context for the interaction, and then notifying all the appropriate entities. More...
 
virtual void processUUIDChange (const DtVrfObjectUUIDChangedCallbackInfo &change)
 
virtual void determineUnderFire (const DtDetonationInteraction &detonation)
 This is used for determining if the entity is under fire. More...
 
virtual void determineUnderFire (const DtFireInteraction &fireInter)
 This is used for determining if the entity is under fire. More...
 
virtual void removeQueuedFireTargets ()
 Unregisters all fire targets that have been registered to be removed. More...
 
virtual void fireEvent (const DtEvent &)
 Process events. More...
 
virtual void detonationEvent (const DtEvent &)
 
virtual void processFireForEntitiesInRange (const DtFireInteraction &fireInter)
 Checks all entities who've registered interest in the munition in fire interaction Checks the range of the fire to the entity against the entity's maximumRadius for that munition. More...
 
 DtFireManager (const DtFireManager &orig)
 Not defined! copy constructor. More...
 
DtFireManageroperator= (const DtFireManager &other)
 assignment operator More...
 

Static Protected Member Functions

static void uuidChangeCallback (const DtVrfObjectUUIDChangedCallbackInfo &change, void *usr)
 

Protected Attributes

DtRegisteredVrfObjects myFireTargets
 A container of vrfObjects that have registered for fire interaction processing. More...
 
DtFireCallbackFuncs myFireCallbacks
 The callback functions registered by the vrfObjects. More...
 
DtFireCallbackObjects myFireCallbackObjects
 To ensure that the callback has all the data necessary, this callback object is registered by the vrfObject and is supplied along with the detonation context to the registered detonation callback. More...
 
std::vector< DtVrfObject * > myFireTargetsToBeRemoved
 This container contains all the fire targets to be removed. More...
 
DtSimManagermySimManager
 
tbb::recursive_mutex myMutex
 
DtFireRangeInfoMap myFireRangeInfoMap
 

Detailed Description

The DtFireManager class exists to centralize the processing of fire interactions.

Components register with the manager, providing a pointer to a DtVrfObject as well as the object's global designator, and a under-fire determination function to call when the fire affects the registered vrfobject. The detonation manager determines the entity or entities the detonation affects, and notifies them and only them through the supplied callback functions.

Member Typedef Documentation

typedef bool(* DtFireManager::DtFireProcessingFunction)(const DtFireContext &fireContext, void *usr)
typedef std::map<const DtVrfObject*, void*> DtFireManager::DtFireCallbackObjects
typedef DtBoost::shared_ptr<DtFireRangeInfo> DtFireManager::DtFireRangeInfoPtr

Constructor & Destructor Documentation

DtFireManager::DtFireManager ( DtSimManager simManager)

Constructs the fire manager.

Parameters
simManagerA pointer to the simulation manager for the simulation.
virtual DtFireManager::~DtFireManager ( )
virtual

The destructor.

Removes the DtFireInteraction callback from the exercise connection.

DtFireManager::DtFireManager ( const DtFireManager orig)
protected

Not defined! copy constructor.

Member Function Documentation

virtual bool DtFireManager::init ( )
virtual

Initializes the fire manager.

  • removes any registered callbacks from the exercise connection
  • clears all managed lists
  • registers for fire interactions callbacks with the exercise connection
Returns
a boolean signifying success or failure.
virtual bool DtFireManager::reinitialize ( )
virtual

Same as init, but intended to be called after the object has already been created.

Removes the registered callbacks from the connection manager, and then calls init() to finish initialization.

Returns
a boolean representing success or failure in reseting the object to initial state.
See Also
init
virtual bool DtFireManager::registerFireTarget ( DtVrfObject entity,
DtGlobalObjectDesignator  entityId,
void *  callbackObject,
DtFireProcessingFunction  func 
)
virtual

Entities that wish to receive fire notifications (technically, it is usually the under-fire sensors which register for the entity) call this function.

By supplying the entity, the entity ID, a callback function and a pointer to the expected callback object (usually the sensor component itself, as a void*, this manager can then notify the appropriate sensor when fire interactions occur so that they can determine under-fire status.

virtual bool DtFireManager::registerFireTargetForRemoval ( DtVrfObject entity)
virtual

Registers the entity pointer for later removal from the fire targets containers.

All elements registered to be removed will be removed the next time it determines under fire status.

Detailed description: Because sensors are not ticked when the entity is destroyed, they will only discover they should be unregistered when callbacks are called. But removing the registered entity then is problematic, so they register to be removed later.

virtual bool DtFireManager::unRegisterFireTarget ( DtVrfObject entity)
virtual

Removes the entity from the fire manager's container of fire targets.

Parameters
entitythe address of the entity to be unregistered.
Note
If the entity pointer is NULL, then nothing is unregistered.
Returns
a boolean indicating the success or failure of the unregistration.
virtual void DtFireManager::sendFireInteraction ( DtFireInteraction &  fire)
virtual

Send the fully initialized fire interaction.

virtual bool DtFireManager::registerFireInArea ( const DtVrfObject entity,
DtGlobalObjectDesignator  entityId,
DtSimMunition  munition,
double  maxRadius,
void *  callbackObject,
DtFireProcessingFunction  func 
)
virtual

Use this function to register interest in fire in an area defined by a radius Supplies the entity, the entity ID, the munition being used, maximum radius, a callback function, and a pointer to the actuator (void *).

The munition and maximum radius are stored in the collateralDetonationTargetInfoPtr's damageMap keyed by munition.

virtual bool DtFireManager::unRegisterFireInAreaCallback ( const DtVrfObject entity,
void *  callbackObject,
DtFireProcessingFunction  func 
)
virtual

Removes the given entity callback from the detonation manager's container of detonation target callbacks.

virtual bool DtFireManager::isTargetInterestedInFire ( const DtFireRangeCallbackInfo target,
double  range,
DtFireContext fireContext 
) const
virtual

Returns true if the target has registered interest in the given fire at the given range.

If true, fills in the fire context with the range.

virtual double DtFireManager::lookupMunitionInFireRangeMap ( const DtFireRangeCallbackInfo target,
const DtSimMunition munition 
) const
virtual

If the munition is found returns the maximum radius of the munition.

virtual void DtFireManager::processDetonation ( const DtDetonationInteraction fire)
protectedvirtual

Process the detonation interaction by properly creating a detonation context for the interaction, and then notifying all the appropriate entities.

For entity impact and proximate fire interactions, only the specified entity is notified. For fire and ground proximate interactions, all entities within range are notified. For ground impacts, entities in range are only notified if the munition was a missile.

See Also
getDirectFireSurfaceAndAngleOfIncidence
processIndirectFire
virtual void DtFireManager::processFire ( const DtFireInteraction &  fire)
protectedvirtual

Process the fire interaction by properly creating a fire context for the interaction, and then notifying all the appropriate entities.

For entity impact and proximate fire interactions, only the specified entity is notified. For fire and ground proximate interactions, all entities within range are notified. For ground impacts, entities in range are only notified if the munition was a missile.

See Also
getDirectFireSurfaceAndAngleOfIncidence
processIndirectFire
static void DtFireManager::uuidChangeCallback ( const DtVrfObjectUUIDChangedCallbackInfo change,
void *  usr 
)
staticprotected
virtual void DtFireManager::processUUIDChange ( const DtVrfObjectUUIDChangedCallbackInfo change)
protectedvirtual
virtual void DtFireManager::determineUnderFire ( const DtDetonationInteraction detonation)
protectedvirtual

This is used for determining if the entity is under fire.

virtual void DtFireManager::determineUnderFire ( const DtFireInteraction &  fireInter)
protectedvirtual

This is used for determining if the entity is under fire.

virtual void DtFireManager::removeQueuedFireTargets ( )
protectedvirtual

Unregisters all fire targets that have been registered to be removed.

virtual void DtFireManager::fireEvent ( const DtEvent )
protectedvirtual

Process events.

virtual void DtFireManager::detonationEvent ( const DtEvent )
protectedvirtual
virtual void DtFireManager::processFireForEntitiesInRange ( const DtFireInteraction &  fireInter)
protectedvirtual

Checks all entities who've registered interest in the munition in fire interaction Checks the range of the fire to the entity against the entity's maximumRadius for that munition.

If the fire is within that range then tell that entity to process this fire.

DtFireManager& DtFireManager::operator= ( const DtFireManager other)
protected

assignment operator

Member Data Documentation

DtRegisteredVrfObjects DtFireManager::myFireTargets
protected

A container of vrfObjects that have registered for fire interaction processing.

DtFireCallbackFuncs DtFireManager::myFireCallbacks
protected

The callback functions registered by the vrfObjects.

When a fire interaction occurs, the callback associated with the appropriate entity is used.

DtFireCallbackObjects DtFireManager::myFireCallbackObjects
protected

To ensure that the callback has all the data necessary, this callback object is registered by the vrfObject and is supplied along with the detonation context to the registered detonation callback.

std::vector<DtVrfObject*> DtFireManager::myFireTargetsToBeRemoved
protected

This container contains all the fire targets to be removed.

DtSimManager& DtFireManager::mySimManager
protected
tbb::recursive_mutex DtFireManager::myMutex
protected
DtFireRangeInfoMap DtFireManager::myFireRangeInfoMap
protected

The documentation for this class was generated from the following file:

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)