57 virtual const char*
type()
const override;
59 virtual bool init()
override;
69 virtual void tick()
override;
72 virtual bool createTargetPointPort();
77 virtual bool createMuzzleSpeedPort();
82 virtual bool createAngleOfFirePort();
87 virtual bool createAlignedDirectlyPort();
92 virtual bool createMuzzleOffsetPort();
124 virtual bool haveAmmo(
const DtEntityType & ammoName)
const;
129 virtual int ammoAmount(
const DtEntityType & ammoName)
const;
133 virtual DtEntityType findDefaultAmmo()
const;
137 virtual void getMunitionFromResourceName(
const DtEntityType & resourceName,
142 virtual const DtSimResource * lookupMunitionResource(
const DtEntityType &
145 virtual void setMyFuzeToUse(DtDetonatorFuze fuzeToUse);
147 virtual DtDetonatorFuze fuzeToUse()
const;
150 virtual void setCurrentMuzzleSpeed(DtReal speed);
153 virtual DtReal currentMuzzleSpeed()
const;
155 virtual void addRangeItems();
161 virtual bool initializeController(
const DtEntityType& ammoType,
162 DtReal heightAboveTerrain,
const DtUUID & targetName, DtVector targetLocation,
163 bool& waitingForTerrain, DtDetonatorFuze fuseType,
164 bool generateKnownTargetPoint =
false,
const DtString& knownTargetPointName =
"");
190 virtual bool calculateTrajectory(
const DtVector& shooterLoc,
const DtVector& detonationLoc,
191 const double maxRange);
196 virtual void calculateTrajectoryWithHeight(
double horizontalDist,
double verticalDist,
197 double maxHeight,
double& muzzleSpeed,
double& launchAngle,
double& flightTime);
202 virtual bool calculateElevationAngle(
double lateralDist,
double verticalDist,
double muzzleSpeed,
203 double&
angle,
double& flightTime,
double& maxHeight)
const;
209 virtual bool checkMuzzleSpeedAndAngle(
double lateralDist,
double verticalDist,
210 double speed,
double angle,
double& flightTime,
double& maxHeight)
const;
214 virtual void getMunitionResources(std::list<DtEntityType>& resourceList);
217 virtual void updateResourceList();
220 virtual void resetResourceList();
224 static void setPreferredAltitudeCallback(
DtSimMessage * msg,
void * usrData);
225 virtual void processSetPreferredAltitude(
DtSimMessage * msg);
252 static void FFEOnTargetCallback(
DtSimMessage * msg,
void * usr);
260 virtual bool processFFEOnTargetTask(
DtSimMessage * msg);
279 static void indirectFireAtLocationTaskCallback(
DtSimMessage* msg,
void* usr);
280 virtual void processIndirectFireAtLocationTask(
DtSimMessage* msg);
283 static void indirectFireAtTargetTaskCallback(
DtSimMessage* msg,
void* usr);
284 virtual void processIndirectFireAtTargetTask(
DtSimMessage* msg);
293 virtual DtVector computeLeadPosition(
const DtVector& position,
294 const DtVector& velocity);
298 virtual const DtVector& muzzleLocalPosition();
306 virtual double preferredAltitude()
const;
318 virtual void enable()
override;
320 virtual void disable()
override;
325 virtual void restartTask();
330 virtual bool positionWithinTargetRegion(
const DtVector& localPos);
333 virtual double maximumRange();
334 virtual double minimumRange();
336 virtual void parseWeaponParams(
const DtRwString* weaponToUse,
UUID is a unique ID wrapper class.
Definition: uuid.h:59
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtMountingController; models rotation of a launcher.
Definition: mountingController.h:23
virtual void disable() override
Overridden to allow tasks controllers that can be disabled to call task complete. ...
DtBaseWeaponController is a controller that creates the ports needed to choose ammo for...
Definition: baseWeaponController.h:34
DtGenericWeaponInfo * myWeaponInfo
Definition: indirectFireWeaponController.h:415
bool myIsDirectFire
If weapon is capable of directly firing on a target like a naval gun then check if the target is with...
Definition: indirectFireWeaponController.h:413
DtIndirectWeaponComponentInterface * myWeaponComponentInterface
Interface between this weapon controller and the entity's DtIndirectFireController.
Definition: indirectFireWeaponController.h:342
DtIndirectFireControllerDescriptor; descriptor for the DtIndirectFireController compenent.
Definition: indirectFireControllerDescriptor.h:32
Instances of DtBooleanOutputPort are output ports through which data producers can send boolean data...
Definition: boolIOPort.h:45
AcceptLevel
Levels that a task controller can accept a task it has registered for.
Definition: taskControllerComponent.h:55
virtual const char * type() const override
Returns a string identifies the class type of component. Type values are defined in compTypes...
Holds a position of some form. May be an absolute position, or a reference to another object...
Definition: rwLocationReference.h:25
Definition: readerWriter.h:85
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Description: Readable, Writable DtTaitBryan.
Definition: rwTaitBryan.h:20
Definition: readerWriterRegistry.h:39
This file contains the class declaration for the.
const DtBaseWeaponController & operator=(const DtBaseWeaponController &orig)
assignment operator; not implemented
DtVectorInputPort * myMuzzleOffsetPort
Input Port Name: muzzle-offset-port Input Port Description: The entity's muzzle offset location...
Definition: indirectFireWeaponController.h:404
DtReal myCurrentElevationAngle
The elevation angle selected for the next shot.
Definition: indirectFireWeaponController.h:354
virtual bool createPorts() override
Overridden to create input & output ports.
DtReal myCurrentMunitionFlightTime
The expected flight time for the next shot.
Definition: indirectFireWeaponController.h:351
Instances of DtAnalogOutputPort are input ports through which data producers can send real numbers...
Definition: analogIOPort.h:45
virtual void lookupAndCacheProcessSR()
This function looks up a process state repository in the process state repository manager by name...
Instances of DtVectorOutputPort are output ports through which data producers can send a DtVector...
Definition: vectorIOPort.h:52
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
An implementation of DtWeaponInforInterface that allows for flexible registering of functions from ot...
Definition: genericWeaponInfo.h:17
File: simMsg.h.
Definition: simMessage.h:35
DtIndirectFireWeaponController is a controller that models firing an indirect fire weapon (e...
Definition: indirectFireWeaponController.h:39
virtual void preFirstTickInit() override
This function can be overridden to initialize a component before it is ticked for the first time...
virtual bool createMountingController()
Creates myBaseMountingController.
virtual void tick() override
Sets the current dT on the base mounting controller and ticks it.
DtBooleanOutputPort * myAlignedDirectlyPort
Output Port Name: aligned-directly-port Output Port Description: If the target is close enough for th...
Definition: indirectFireWeaponController.h:397
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=nullptr, DtReaderWriterRegistry *parentRegistry=nullptr)
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
DtDetonatorFuze myFuzeToUse
Set based on height above terrain value.
Definition: indirectFireWeaponController.h:345
Represents the interface between the DtIndirectFireController and an indirect fire weapon system...
Definition: indirectWeaponComponentInterface.h:24
virtual void enable() override
Overridden to call registerTaskMsgCallbacks().
DtIndirectFireControllerDescriptor * myIndFireDescriptor
Definition: indirectFireWeaponController.h:364
DtSimResource is a class which will define a SISO Enumeration to use as a resource and the quantity o...
Definition: simResource.h:32
bool myWeaponIsAimed
Whether the weapon is fully aimed at the target, or if adjustments still need to be made...
Definition: indirectFireWeaponController.h:358
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
virtual void clearTask() override
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtFireForEffectOnTargetTask represents an artillery task to fire for effect on the specified entity...
Definition: fireForEffectOnTargetTask.h:18
virtual void registerAttributeFunctions()
Called to register functions that provide system attribute values. Called by init(). Empty in this class. Overridden in different components to add attribute provider functions.
Definition: simComponent.h:131
virtual AcceptLevel acceptTask(const DtTaskMessage &task)
Called by the task manager when this controller is being considered to execute a task. Only tasks which already match types that this controller has registered for will be passed. This is used for the case where multiple task controllers have registered for the same task type. This gives the controller a chance to look at the parameters of the task and to reject the execution of the task based on parameters. Controllers can return any of the AcceptLevel levels. The task manager will choose a controller with the lowest AcceptLevel to execute, but will not choose any controller that returns AcceptLevel_NoAccept. Default implementation returns AcceptLevel_Accept. Override this to check parameters and conditionally return a different AccpetLevel.
DtAnalogOutputPort * myAngleOfFirePort
Output Port Name: angle-of-fire-port Output Port Description: The elevation angle of fire...
Definition: indirectFireWeaponController.h:388
DtVectorOutputPort * myTargetPointPort
Output Port Name: target-point-port Output Port Description: Local position to fire at...
Definition: indirectFireWeaponController.h:374
virtual bool init() override
Overridden to initialize values obtained from the descriptor.
File: indirectFirePSR.h.
Definition: vrfIndirectFirePSR.h:30
DtSimMunition myMunitionToUse
This could just be a stack variable in tick, but since these are expensive to construct, we create on and reuse it.
Definition: indirectFireWeaponController.h:362
DtAnalogOutputPort * myMuzzleSpeedPort
Output Port Name: muzzle-speed-port Output Port Description: Muzzle speed in m/s. Output Port Range: ...
Definition: indirectFireWeaponController.h:381
DtSimMunition class.
Definition: simMunition.h:31
DtMountingController * myMountingController
Definition: indirectFireWeaponController.h:407
File: fireForEff.h.
Definition: fireForEffectTask.h:32
A DtTaskMsg is a DtRadioMsg with a pointer to a task. The type of the taskMsg is just the type of the...
Definition: taskMessage.h:21
boost::signals2::connection myResourceChangedBySetConnection
Definition: indirectFireWeaponController.h:416
DtReal myCurrentMuzzleSpeed
The muzzle speed selected for the next shot.
Definition: indirectFireWeaponController.h:348
A locally simulated VRF object.
Definition: localObject.h:98