![]() |
VR-Forces 4.3 Class Documentation
|
The DtDetonationManager class exists to centralize the processing of detonation interactions. More...
Classes | |
| struct | DtCollateralDetonationTargetInfo |
| struct | DtDetonationCallbackInfo |
| struct | DtDirectDetonationTargetInfo |
Public Types | |
| typedef bool(* | DtDamageAdjudicationFunction )(const DtDetonationContext &detonationContext, void *usr) |
| typedef std::map < DtSimMunition, double > | DtMunitionDamageMap |
| typedef std::list < DtDetonationCallbackInfo > | DtDetonationCallbackInfoList |
| typedef DtBoost::shared_ptr < DtDirectDetonationTargetInfo > | DtDirectDetonationTargetInfoPtr |
| typedef std::list < DtDirectDetonationTargetInfoPtr > | DtDirectDetonationTargetList |
| typedef std::map< std::string, DtDirectDetonationTargetInfoPtr > | DtDirectDetonationTargetMap |
| typedef DtBoost::shared_ptr < DtCollateralDetonationTargetInfo > | DtCollateralDetonationTargetInfoPtr |
| typedef std::list < DtCollateralDetonationTargetInfoPtr > | DtCollateralDetonationTargetList |
| typedef std::map< std::string, DtCollateralDetonationTargetInfoPtr > | DtCollateralDetonationTargetMap |
Public Member Functions | |
| DtDetonationManager (DtSimManager &simManager) | |
| Constructs the detonation manager. | |
| virtual | ~DtDetonationManager () |
| The destructor. | |
| virtual bool | init () |
| Initializes the detonation manager. | |
| virtual bool | reinitialize () |
| Resets the detonation manager to initial state. | |
| virtual bool | registerDirectDetonation (DtVrfObject &entity, DtGlobalObjectDesignator entityId, void *callbackObject, DtDamageAdjudicationFunction func) |
| Entities that wish to receive detonation notifications (technically, it is usually the actuators which register for the entity) call these functions. | |
| virtual bool | registerCollateralDetonation (DtVrfObject &entity, DtGlobalObjectDesignator entityId, DtSimMunition munition, double maxDamageRadius, void *callbackObject, DtDamageAdjudicationFunction func) |
| Use this function to register interest in collateral detonations ie ground detonations from indirect fire, missile detonations or direct fire detonations that would cause collateral damage to nearby entities. | |
| virtual bool | unRegisterDirectDetonationTarget (DtVrfObject &entity) |
| Removes the entity from the detonation manager's container of detonation targets. | |
| virtual bool | unRegisterCollateralDetonationTarget (DtVrfObject &entity) |
| virtual bool | unRegisterCollateralDetonationCallback (DtVrfObject &entity, void *callbackObject, DtDamageAdjudicationFunction func) |
| Removes the given entity callback from the detonation manager's container of detonation target callbacks. | |
| virtual double | lookupMunitionInCollateralDetonationMap (const DtDetonationCallbackInfo &target, const DtSimMunition &munition) |
| If the munition is found returns the maximum damage radius of the munition. | |
| virtual void | sendDetonationInteraction (DtDetonationInteraction &detonation) |
| Send the fully initialized detonation interaction. | |
Protected Member Functions | |
| virtual void | processNameChange (const DtVrfObjectNameChangedCallbackInfo &change) |
| virtual void | processDetonation (const DtDetonationInteraction &detonation) |
| Process the detonation interaction by properly creating a detonation context for the interaction, and then notifying all the appropriate entities of the detonation. | |
| virtual const DtPhysicalWorld * | physicalWorld () const |
| virtual DtPhysicalWorld * | physicalWorld () |
| virtual Coordinate_System * | coordinateSystem () |
| virtual const Coordinate_System * | coordinateSystem () const |
| virtual void | processCollateralDetonationForEntitiesInRange (DtDetonationContext &detonationContext) |
| Checks all entities who've registered interest in the munition in detonation context Checks the range of the detonation to the entity against the entity's maximumDamageRadius for that munition. | |
| bool | testInvariant () const |
| The Detonation Manager's invariant: | |
| void | cleanOutDeadEntities () |
Static Protected Member Functions | |
| static void | detonationCallback (DtDetonationInteraction *detInter, void *usr) |
| The callback that processes detonation interactions. | |
| static void | nameChangeCallback (const DtVrfObjectNameChangedCallbackInfo &change, void *usr) |
Protected Attributes | |
| DtDirectDetonationTargetMap | myDirectDetonationTargetMap |
| DtCollateralDetonationTargetMap | myCollateralDetonationTargetMap |
| bool | myQueueEntitiesToBeRemoved |
| After all the callbacks have been made those who've been destroyed or asked to unregistered need to be removed from the collateral target map. | |
| std::list< std::string > | myEntitiesQueuedToBeRemovedList |
| DtSimManager & | mySimManager |
Private Member Functions | |
| DtDetonationManager (const DtDetonationManager &orig) | |
| Not defined! copy constructor. | |
| DtDetonationManager & | operator= (const DtDetonationManager &other) |
| assignment operator | |
The DtDetonationManager class exists to centralize the processing of detonation interactions.
Components register with the detonation manager, providing a pointer to a DtVrfObject as well as the objects global designator, and a damage adjudication function to call when the detonation 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.
With regards to detonation interactions, for a result of "entity proximate", where the entity is specified as the target, or for a result of simply "detonation", the range to the detonation is determined, and the damage probability is determined using a surface of "front" and an angle of incidence of 0. The detonation manager fills in a detonation context with all the appropriate information, and looks up the entity to see if it has registered a callback. If so, it calls the registered callback, supplying the detonation context.
When a detonation manager receives a detonation of type DtDetResDetonation (sent by the indirect fire actuator for artillery), it again fills in the detonation context, but then calls all appropriate entities with registered callbacks.
| typedef bool(* DtDetonationManager::DtDamageAdjudicationFunction)(const DtDetonationContext &detonationContext, void *usr) |
| typedef std::map<DtSimMunition,double> DtDetonationManager::DtMunitionDamageMap |
| typedef std::list<DtDetonationCallbackInfo> DtDetonationManager::DtDetonationCallbackInfoList |
| typedef DtBoost::shared_ptr<DtDirectDetonationTargetInfo> DtDetonationManager::DtDirectDetonationTargetInfoPtr |
| typedef std::list<DtDirectDetonationTargetInfoPtr> DtDetonationManager::DtDirectDetonationTargetList |
| typedef std::map<std::string, DtDirectDetonationTargetInfoPtr> DtDetonationManager::DtDirectDetonationTargetMap |
| typedef DtBoost::shared_ptr<DtCollateralDetonationTargetInfo> DtDetonationManager::DtCollateralDetonationTargetInfoPtr |
| typedef std::list<DtCollateralDetonationTargetInfoPtr> DtDetonationManager::DtCollateralDetonationTargetList |
| typedef std::map<std::string, DtCollateralDetonationTargetInfoPtr> DtDetonationManager::DtCollateralDetonationTargetMap |
| DtDetonationManager::DtDetonationManager | ( | DtSimManager & | simManager | ) |
Constructs the detonation manager.
| simManager | A pointer to the simulation manager for the simulation. |
|
virtual |
The destructor.
Removes the DtDetonationInteraction::removeCallback from the exercise connection.
|
private |
Not defined! copy constructor.
|
virtual |
Initializes the detonation manager.
|
virtual |
Resets the detonation manager to initial state.
|
virtual |
Entities that wish to receive detonation notifications (technically, it is usually the actuators which register for the entity) call these functions.
Use this function to register interest in direct detonations ie entity impact or
entity proximate detonations. Supplies the entity, the entity ID, a callback function and a pointer to the actuator (void *)
|
virtual |
Use this function to register interest in collateral detonations ie ground detonations from indirect fire, missile detonations or direct fire detonations that would cause collateral damage to nearby entities.
Supplies the entity, the entity ID, the munition being used, it's maximum radius that it can cause damage to the entity, a callback function, and a pointer to the actuator (void *). The munition and maximum damage radius are stored in the collateralDetonationTargetInfoPtr's damageMap keyed by munition.
|
virtual |
Removes the entity from the detonation manager's container of detonation targets.
| entity | the address of the entity to be unregistered. |
|
virtual |
|
virtual |
Removes the given entity callback from the detonation manager's container of detonation target callbacks.
|
virtual |
If the munition is found returns the maximum damage radius of the munition.
|
virtual |
Send the fully initialized detonation interaction.
|
staticprotected |
The callback that processes detonation interactions.
Calls processDetonation to actually process the detonation interaction.
| detInter | the detonation interaction to process |
| usr | a void pointer to a DtDetonationManager. As this is a static function, this is provided when this function is registered in order to be able to properly handle the callback. |
|
staticprotected |
|
protectedvirtual |
|
protectedvirtual |
Process the detonation interaction by properly creating a detonation context for the interaction, and then notifying all the appropriate entities of the detonation.
For entity impact and proximate detonations, only the specified entity is notified. For detonation 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.
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
Checks all entities who've registered interest in the munition in detonation context Checks the range of the detonation to the entity against the entity's maximumDamageRadius for that munition.
If the detonation is within that range then tell that entity to process this detonation and determine any collateral damage from it.
|
protected |
The Detonation Manager's invariant:
|
protected |
|
private |
assignment operator
|
protected |
|
protected |
|
protected |
After all the callbacks have been made those who've been destroyed or asked to unregistered need to be removed from the collateral target map.
|
protected |
|
protected |