59 virtual const char*
type()
const override;
61 virtual bool init()
override;
71 virtual void tick()
override;
74 virtual bool createTargetPointPort();
79 virtual bool createMuzzleSpeedPort();
84 virtual bool createAngleOfFirePort();
89 virtual bool createAlignedDirectlyPort();
94 virtual bool createMuzzleOffsetPort();
126 virtual bool haveAmmo(
const DtString & ammoName)
const;
131 virtual int ammoAmount(
const DtString & ammoName)
const;
135 virtual const DtString & findDefaultAmmo()
const;
139 virtual void getMunitionFromResourceName(
const DtString & resourceName,
147 virtual void setMyFuzeToUse(DtDetonatorFuze fuzeToUse);
149 virtual DtDetonatorFuze fuzeToUse()
const;
152 virtual void setCurrentMuzzleSpeed(DtReal speed);
155 virtual DtReal currentMuzzleSpeed()
const;
157 virtual void addRangeItems();
163 virtual bool initializeController(
const DtString& ammoType,
164 DtReal heightAboveTerrain,
const DtUUID & targetName,
DtVector targetLocation,
165 bool& waitingForTerrain, DtDetonatorFuze fuseType,
166 bool generateKnownTargetPoint =
false,
const DtString& knownTargetPointName =
"");
192 virtual bool calculateTrajectory(
const DtVector& shooterLoc,
const DtVector& detonationLoc,
193 const double maxRange);
198 virtual void calculateTrajectoryWithHeight(
double horizontalDist,
double verticalDist,
199 double maxHeight,
double& muzzleSpeed,
double& launchAngle,
double& flightTime);
204 virtual bool calculateElevationAngle(
double lateralDist,
double verticalDist,
double muzzleSpeed,
205 double&
angle,
double& flightTime,
double& maxHeight)
const;
211 virtual bool checkMuzzleSpeedAndAngle(
double lateralDist,
double verticalDist,
212 double speed,
double angle,
double& flightTime,
double& maxHeight)
const;
216 virtual void getMunitionResources(std::list<DtString>& resourceList);
219 virtual void updateResourceList();
224 static void setResourceCallback(
DtSimMessage * msg,
void * usrData);
231 static void setRestoreCallback(
DtSimMessage * msg,
void * usrData);
237 static void setPreferredAltitudeCallback(
DtSimMessage * msg,
void * usrData);
238 virtual void processSetPreferredAltitude(
DtSimMessage * msg);
265 static void FFEOnTargetCallback(
DtSimMessage * msg,
void * usr);
267 static void FFEOnEntityCallback(
DtSimMessage * msg,
void * usr);
269 static void FFEOnLocationCallback(
DtSimMessage * msg,
void * usr);
277 virtual bool processFFEOnTargetTask(
DtSimMessage * msg);
278 virtual bool processFFEOnLocationTask(
DtSimMessage * msg);
279 virtual bool processFFEOnEntityTask(
DtSimMessage * msg);
295 static void indirectFireAtLocationTaskCallback(
DtSimMessage* msg,
void* usr);
296 virtual void processIndirectFireAtLocationTask(
DtSimMessage* msg);
299 static void indirectFireAtTargetTaskCallback(
DtSimMessage* msg,
void* usr);
300 virtual void processIndirectFireAtTargetTask(
DtSimMessage* msg);
314 virtual const DtVector& muzzleLocalPosition();
322 virtual double preferredAltitude()
const;
334 virtual void enable()
override;
336 virtual void disable()
override;
341 virtual void restartTask();
346 virtual bool positionWithinTargetRegion(
const DtVector& localPos);
349 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:428
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:426
DtIndirectWeaponComponentInterface * myWeaponComponentInterface
Interface between this weapon controller and the entity's DtIndirectFireController.
Definition: indirectFireWeaponController.h:355
DtIndirectFireControllerDescriptor; descriptor for the DtIndirectFireController compenent.
Definition: indirectFireControllerDescriptor.h:31
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
DtFireForEffectOnTargetTask represents an artillery task to fire for effect on the specified entity...
Definition: fireForEffectOnLocationTask.h:27
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
DtFireForEffectOnEntityTask represents an artillery task to fire for effect on the specified entity...
Definition: fireForEffectOnEntityTask.h:22
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:417
DtReal myCurrentElevationAngle
The elevation angle selected for the next shot.
Definition: indirectFireWeaponController.h:367
virtual bool createPorts() override
Overridden to create input & output ports.
DtReal myCurrentMunitionFlightTime
The expected flight time for the next shot.
Definition: indirectFireWeaponController.h:364
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:41
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:410
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:94
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:91
DtDetonatorFuze myFuzeToUse
Set based on height above terrain value.
Definition: indirectFireWeaponController.h:358
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:377
bool myWeaponIsAimed
Whether the weapon is fully aimed at the target, or if adjustments still need to be made...
Definition: indirectFireWeaponController.h:371
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:22
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:133
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:401
DtVectorOutputPort * myTargetPointPort
Output Port Name: target-point-port Output Port Description: Local position to fire at...
Definition: indirectFireWeaponController.h:387
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:375
DtAnalogOutputPort * myMuzzleSpeedPort
Output Port Name: muzzle-speed-port Output Port Description: Muzzle speed in m/s. Output Port Range: ...
Definition: indirectFireWeaponController.h:394
DtSimMunition class.
Definition: simMunition.h:31
DtMountingController * myMountingController
Definition: indirectFireWeaponController.h:420
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
DtReal myCurrentMuzzleSpeed
The muzzle speed selected for the next shot.
Definition: indirectFireWeaponController.h:361
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86
Contains the DtMunitionResource class declaration.
Definition: munitionResource.h:24