VR-Forces 4.0.4 Class Documentation
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
DtIndirectFireController Class Reference

DtIndirectFireController is responsible for processing the fire for effect tasks including fire for effect on entity, target, and location. More...

Inheritance diagram for DtIndirectFireController:
Inheritance graph
[legend]

List of all members.

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 DtVectorcurrentTargetLocation ()
 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 DtStringfindDefaultAmmo () 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 DtMunitionResourcelookupMunitionResource (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 DtSimComponentcreator (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 DtIndirectFireControlleroperator= (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.
DtIndirectFireWeaponControllermyWeaponController
DtIndirectFireControllerDescriptormyIndFireDescriptor
bool myFirstTick
 Set to true after first tick.

Detailed Description

DtIndirectFireController is responsible for processing the fire for effect tasks including fire for effect on entity, target, and location.

Uses Descriptor Type: DtIndirectFireControllerDescriptor


Constructor & Destructor Documentation

DtIndirectFireController::DtIndirectFireController ( const DtString name,
DtVrfObject owner,
DtSimManager simManager,
DtComponentDescriptor desc = 0,
DtReaderWriterRegistry parentRegistry = 0 
)

(const DtString&,DtVrfObject*,DtSimManager*,

Parameters:
nameReader writer name of this component.
ownerThe DtVrfObject that owns this component
simManagerThe simulation manager (provides access to terrain, message interface, simulation clock).
descThe component descriptor used to initialize this component.
parentRegistryPointer to the parent reader writer registry (the containing object that reads/writes this object).
(const DtString&,DtVrfObject*,DtSimManager*, DtComponentDescriptor*,DtReaderWriterRegistry* parentRegistry)

destructor

default constructor; not implemented

copy constructor; not implemented


Member Function Documentation

virtual bool DtIndirectFireController::init ( ) [virtual]

Overridden to call createWeaponController()

Reimplemented from DtControllerComponent.

Override to invoke postAddComponentsInit() for our weapon controller we're managing directly.

Reimplemented from DtSimComponent.

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.

Returns:
DtIndirectFireControllerType

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.

Finds azimuth angle and calls setDesiredAzimuth on myWeaponController's mounting controller.

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.

Get the current target location from the DtVrfIndirectFirePSR.

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.

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.

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.

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*,

Parameters:
nameReader writer name of this component.
ownerThe DtVrfObject that owns this component
simManagerThe simulation manager (provides access to terrain, message interface, simulation clock).
descThe component descriptor used to initialize this component.
parentRegistryPointer to the parent reader writer registry (the containing object that reads/writes this object).
(const DtString&,DtVrfObject*,DtSimManager*, DtComponentDescriptor*,DtReaderWriterRegistry* parentRegistry)

Returns:
New instance of this class.
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


Member Data Documentation

DtDetonatorFuze DtIndirectFireController::myFuzeToUse [protected]

Set based on height above terrain value.

This could just be a stack variable in tick, but since these are expensive to construct, we create on and reuse it.

Set to true after first tick.


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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)