![]() |
VR-Forces 4.0.4 Class Documentation
|
DtIndirectFireController is responsible for processing the fire for effect tasks including fire for effect on entity, target, and location. More...

Public Member Functions | |
| DtIndirectFireController (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0) | |
| (const DtString&,DtVrfObject*,DtSimManager*, | |
| virtual | ~DtIndirectFireController () |
| destructor | |
| virtual bool | init () |
| Overridden to call createWeaponController() | |
| virtual bool | postAddComponentsInit () |
| Override to invoke postAddComponentsInit() for our weapon controller we're managing directly. | |
| virtual bool | createWeaponController () |
| Initializes myWeaponController. | |
| virtual DtString | type () const |
| Returns a string identifies the class type of component. | |
| virtual void | tick () |
| Determines if the weapon is ready to fire based on speed and the state of the munition loader. | |
| virtual void | clearTask () |
| Overridden to deactivate the port group on myWeaponController when this controller completes a task. | |
| virtual void | setMyFuzeToUse (DtDetonatorFuze fuzeToUse) |
| mutator for myFuzeToUse | |
| virtual DtDetonatorFuze | fuzeToUse () const |
| accessor for myFuzeToUse | |
| virtual void | calculateDesiredElevation (double rangeToTarget) |
| Finds elevation angle for gun based on distance and max range (which implies a muzzle velocity). | |
| virtual void | calculateDesiredAzimuth () |
| Finds azimuth angle and calls setDesiredAzimuth on myWeaponController's mounting controller. | |
| double | findBodyHeadingToLocalPosition (DtVector localTargetPosition) const |
| Calculates and returns the body heading to the target local position. | |
| virtual void | chooseMaxRange (DtReal rangeToTarget) |
| Sets myCurrentMaxRange to the appropriate maxRange for the given range to target (essentially choosing the size of the charge to use). | |
| virtual void | setCurrentMaxRange (DtReal currentMaxRange) |
| Set the current max range. | |
| virtual DtReal | currentMaxRange () const |
| Get the current max range. | |
| virtual DtReal | absoluteMaxRange () const |
| Returns the largest max range in max range list. | |
| virtual bool | initializeController (const DtString &ammoType, int numberOfRounds, DtReal heightAboveTerrain) |
| Sets up the controller with the given parameters. | |
| virtual void | setCurrentTargetLocation (const DtVector &location) |
| Set the current target location in the DtVrfIndirectFirePSR. | |
| virtual const DtVector & | currentTargetLocation () |
| Get the current target location from the DtVrfIndirectFirePSR. | |
| virtual void | registerTaskMsgCallbacks () |
| Overrides this so it can register its interest in fire for effect commands. | |
| virtual void | processUserTask (DtSimMessage *msg) |
| Called by userTaskCallback. | |
| virtual void | processFFETask (DtTaskMessage *tm) |
| Called by each of the processFFE methods to process the arguments in the base class of each of the FFE types, DtFireForEffectTask. | |
| virtual bool | haveAmmo (const DtString &ammoName) const |
| Returns true if lookupMunitionResource() can locate a resource with the given ammoName && the resource is not empty. | |
| virtual const DtString & | findDefaultAmmo () const |
| Goes through the ammo list in myIndFireDescriptor and returns the first ammo type for which haveAmmo() returns true. | |
| virtual void | getMunitionFromResourceName (const DtString &resourceName, DtSimMunition &munition) const |
| If lookupMunitionResource is able to locate the given resourceName, the given munition parameter will be assigned it's munitionType(). | |
| virtual DtMunitionResource * | lookupMunitionResource (const DtString &resource) const |
| Attempts to locate the given resource in the entity's state repository, and if it is a DtMunitionResource, it will be returned. | |
| virtual bool | processFFEOnTargetTask (DtSimMessage *msg) |
| Processes the given FFE task. | |
| virtual bool | processFFEOnLocationTask (DtSimMessage *msg) |
| Processes the given FFE task. | |
| virtual bool | processFFEOnEntityTask (DtSimMessage *msg) |
| Processes the given FFE task. | |
Static Public Member Functions | |
| static void | FFEOnTargetCallback (DtSimMessage *msg, void *usr) |
| Registered by registerTaskMsgCallbacks, calls processFFEOnTargetTask. | |
| static void | FFEOnEntityCallback (DtSimMessage *msg, void *usr) |
| Registered by registerTaskMsgCallbacks, calls processFFEOnEntityTask. | |
| static void | FFEOnLocationCallback (DtSimMessage *msg, void *usr) |
| Registered by registerTaskMsgCallbacks, calls processFFEOnLocationTask. | |
| static void | userTaskCallback (DtSimMessage *msg, void *usr) |
| Registered by registerTaskMsgCallbacks, calls processUserTask. | |
| static DtSimComponent * | creator (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0) |
| (const DtString&,DtVrfObject*,DtSimManager*, | |
Protected Member Functions | |
| virtual bool | createPortGroups () |
| Overridden to add port groups from myWeaponController, allowing OPD connections to be specified using the name of this component. | |
| virtual void | addRangeItems () |
| Adds all items that have a range to the object state repository. | |
| DtIndirectFireController () | |
| default constructor; not implemented | |
| DtIndirectFireController (const DtIndirectFireController &orig) | |
| copy constructor; not implemented | |
| const DtIndirectFireController & | operator= (const DtIndirectFireController &orig) |
| assignment operator; not implemented | |
Protected Attributes | |
| DtDetonatorFuze | myFuzeToUse |
| Set based on height above terrain value. | |
| DtReal | myCurrentMaxRange |
| DtSimMunition | myMunitionToUse |
| This could just be a stack variable in tick, but since these are expensive to construct, we create on and reuse it. | |
| DtIndirectFireWeaponController * | myWeaponController |
| DtIndirectFireControllerDescriptor * | myIndFireDescriptor |
| bool | myFirstTick |
| Set to true after first tick. | |
DtIndirectFireController is responsible for processing the fire for effect tasks including fire for effect on entity, target, and location.
Uses Descriptor Type: DtIndirectFireControllerDescriptor
| DtIndirectFireController::DtIndirectFireController | ( | const DtString & | name, |
| DtVrfObject * | owner, | ||
| DtSimManager * | simManager, | ||
| DtComponentDescriptor * | desc = 0, |
||
| DtReaderWriterRegistry * | parentRegistry = 0 |
||
| ) |
(const DtString&,DtVrfObject*,DtSimManager*,
| name | Reader writer name of this component. |
| owner | The DtVrfObject that owns this component |
| simManager | The simulation manager (provides access to terrain, message interface, simulation clock). |
| desc | The component descriptor used to initialize this component. |
| parentRegistry | Pointer to the parent reader writer registry (the containing object that reads/writes this object). |
| virtual DtIndirectFireController::~DtIndirectFireController | ( | ) | [virtual] |
destructor
| DtIndirectFireController::DtIndirectFireController | ( | ) | [protected] |
default constructor; not implemented
| DtIndirectFireController::DtIndirectFireController | ( | const DtIndirectFireController & | orig | ) | [protected] |
copy constructor; not implemented
| virtual bool DtIndirectFireController::init | ( | ) | [virtual] |
Overridden to call createWeaponController()
Reimplemented from DtControllerComponent.
| virtual bool DtIndirectFireController::postAddComponentsInit | ( | ) | [virtual] |
Override to invoke postAddComponentsInit() for our weapon controller we're managing directly.
Reimplemented from DtSimComponent.
| virtual bool DtIndirectFireController::createWeaponController | ( | ) | [virtual] |
Initializes myWeaponController.
| virtual DtString DtIndirectFireController::type | ( | ) | const [virtual] |
Returns a string identifies the class type of component.
Type values are defined in compTypes.h. DtSimComponent creation functions are registered with the DtSimComponentFactory using the type values as the key.
Implements DtTaskControllerComponent.
| virtual void DtIndirectFireController::tick | ( | ) | [virtual] |
Determines if the weapon is ready to fire based on speed and the state of the munition loader.
For a detailed description, please see the developer's guide. If myFirstTick is true, the checkpointed state of the controller is copied from the DtVrfIndirectFirePSR.
Reimplemented from DtSimComponent.
| virtual void DtIndirectFireController::clearTask | ( | ) | [virtual] |
Overridden to deactivate the port group on myWeaponController when this controller completes a task.
Reimplemented from DtSingleTaskControllerComponent.
| virtual void DtIndirectFireController::setMyFuzeToUse | ( | DtDetonatorFuze | fuzeToUse | ) | [virtual] |
mutator for myFuzeToUse
| virtual DtDetonatorFuze DtIndirectFireController::fuzeToUse | ( | ) | const [virtual] |
accessor for myFuzeToUse
| virtual void DtIndirectFireController::calculateDesiredElevation | ( | double | rangeToTarget | ) | [virtual] |
Finds elevation angle for gun based on distance and max range (which implies a muzzle velocity).
Calls setDesiredElevation on myWeaponController's mounting controller.
| virtual void DtIndirectFireController::calculateDesiredAzimuth | ( | ) | [virtual] |
Finds azimuth angle and calls setDesiredAzimuth on myWeaponController's mounting controller.
| double DtIndirectFireController::findBodyHeadingToLocalPosition | ( | DtVector | localTargetPosition | ) | const |
Calculates and returns the body heading to the target local position.
| virtual void DtIndirectFireController::chooseMaxRange | ( | DtReal | rangeToTarget | ) | [virtual] |
Sets myCurrentMaxRange to the appropriate maxRange for the given range to target (essentially choosing the size of the charge to use).
| virtual void DtIndirectFireController::setCurrentMaxRange | ( | DtReal | currentMaxRange | ) | [virtual] |
Set the current max range.
| virtual DtReal DtIndirectFireController::currentMaxRange | ( | ) | const [virtual] |
Get the current max range.
| virtual DtReal DtIndirectFireController::absoluteMaxRange | ( | ) | const [virtual] |
Returns the largest max range in max range list.
Assumes the maxRangeList is sorted in ascending order.
| virtual bool DtIndirectFireController::initializeController | ( | const DtString & | ammoType, |
| int | numberOfRounds, | ||
| DtReal | heightAboveTerrain | ||
| ) | [virtual] |
Sets up the controller with the given parameters.
Should be called by processFFETask() when a task is received, or by tick() when a task is being restored by a checkpoint.
| virtual void DtIndirectFireController::setCurrentTargetLocation | ( | const DtVector & | location | ) | [virtual] |
Set the current target location in the DtVrfIndirectFirePSR.
| virtual const DtVector& DtIndirectFireController::currentTargetLocation | ( | ) | [virtual] |
Get the current target location from the DtVrfIndirectFirePSR.
| virtual void DtIndirectFireController::registerTaskMsgCallbacks | ( | ) | [virtual] |
Overrides this so it can register its interest in fire for effect commands.
Instances of this component will register its callbacks with their own 'this' pointer as user data with the msg executive requesting notification of wait tasks.
Reimplemented from DtTaskControllerComponent.
| static void DtIndirectFireController::FFEOnTargetCallback | ( | DtSimMessage * | msg, |
| void * | usr | ||
| ) | [static] |
Registered by registerTaskMsgCallbacks, calls processFFEOnTargetTask.
| static void DtIndirectFireController::FFEOnEntityCallback | ( | DtSimMessage * | msg, |
| void * | usr | ||
| ) | [static] |
Registered by registerTaskMsgCallbacks, calls processFFEOnEntityTask.
| static void DtIndirectFireController::FFEOnLocationCallback | ( | DtSimMessage * | msg, |
| void * | usr | ||
| ) | [static] |
Registered by registerTaskMsgCallbacks, calls processFFEOnLocationTask.
| static void DtIndirectFireController::userTaskCallback | ( | DtSimMessage * | msg, |
| void * | usr | ||
| ) | [static] |
Registered by registerTaskMsgCallbacks, calls processUserTask.
| virtual bool DtIndirectFireController::processFFEOnTargetTask | ( | DtSimMessage * | msg | ) | [virtual] |
Processes the given FFE task.
Returns true if the message is processed, even if the processing is unsuccessful. Returns false if the processing cannot be immediately completed due to the required terrain not having yet been paged in. In that case the task will be stored in the PSR and the tick() function will keep re-trying the task until it returns true.
| virtual bool DtIndirectFireController::processFFEOnLocationTask | ( | DtSimMessage * | msg | ) | [virtual] |
Processes the given FFE task.
Returns true if the message is processed, even if the processing is unsuccessful. Returns false if the processing cannot be immediately completed due to the required terrain not having yet been paged in. In that case the task will be stored in the PSR and the tick() function will keep re-trying the task until it returns true.
| virtual bool DtIndirectFireController::processFFEOnEntityTask | ( | DtSimMessage * | msg | ) | [virtual] |
Processes the given FFE task.
Returns true if the message is processed, even if the processing is unsuccessful. Returns false if the processing cannot be immediately completed due to the required terrain not having yet been paged in. In that case the task will be stored in the PSR and the tick() function will keep re-trying the task until it returns true.
| virtual void DtIndirectFireController::processUserTask | ( | DtSimMessage * | msg | ) | [virtual] |
Called by userTaskCallback.
Accepts user task names of "ffe", "fft" and "ffl" for firing for effect on entity, target and location respectively. The first argument is the entity/target/location to shoot at. Creates a new task and forwards it to the appropriate "processFFE" method.
| virtual void DtIndirectFireController::processFFETask | ( | DtTaskMessage * | tm | ) | [virtual] |
Called by each of the processFFE methods to process the arguments in the base class of each of the FFE types, DtFireForEffectTask.
| virtual bool DtIndirectFireController::haveAmmo | ( | const DtString & | ammoName | ) | const [virtual] |
Returns true if lookupMunitionResource() can locate a resource with the given ammoName && the resource is not empty.
| virtual const DtString& DtIndirectFireController::findDefaultAmmo | ( | ) | const [virtual] |
Goes through the ammo list in myIndFireDescriptor and returns the first ammo type for which haveAmmo() returns true.
| virtual void DtIndirectFireController::getMunitionFromResourceName | ( | const DtString & | resourceName, |
| DtSimMunition & | munition | ||
| ) | const [virtual] |
If lookupMunitionResource is able to locate the given resourceName, the given munition parameter will be assigned it's munitionType().
| virtual DtMunitionResource* DtIndirectFireController::lookupMunitionResource | ( | const DtString & | resource | ) | const [virtual] |
Attempts to locate the given resource in the entity's state repository, and if it is a DtMunitionResource, it will be returned.
| static DtSimComponent* DtIndirectFireController::creator | ( | const DtString & | name, |
| DtVrfObject * | owner, | ||
| DtSimManager * | simManager, | ||
| DtComponentDescriptor * | desc = 0, |
||
| DtReaderWriterRegistry * | parentRegistry = 0 |
||
| ) | [static] |
(const DtString&,DtVrfObject*,DtSimManager*,
| name | Reader writer name of this component. |
| owner | The DtVrfObject that owns this component |
| simManager | The simulation manager (provides access to terrain, message interface, simulation clock). |
| desc | The component descriptor used to initialize this component. |
| parentRegistry | Pointer to the parent reader writer registry (the containing object that reads/writes this object). |
| virtual bool DtIndirectFireController::createPortGroups | ( | ) | [protected, virtual] |
Overridden to add port groups from myWeaponController, allowing OPD connections to be specified using the name of this component.
Reimplemented from DtSimComponent.
| virtual void DtIndirectFireController::addRangeItems | ( | ) | [protected, virtual] |
Adds all items that have a range to the object state repository.
| const DtIndirectFireController& DtIndirectFireController::operator= | ( | const DtIndirectFireController & | orig | ) | [protected] |
assignment operator; not implemented
DtDetonatorFuze DtIndirectFireController::myFuzeToUse [protected] |
Set based on height above terrain value.
DtReal DtIndirectFireController::myCurrentMaxRange [protected] |
This could just be a stack variable in tick, but since these are expensive to construct, we create on and reuse it.
bool DtIndirectFireController::myFirstTick [protected] |
Set to true after first tick.