WSF
WsfDirectedEnergyWeapon Class Reference

#include <WsfDirectedEnergyWeapon.hpp>

Inheritance diagram for WsfDirectedEnergyWeapon:
Collaboration diagram for WsfDirectedEnergyWeapon:

Classes

class  Beam

Public Member Functions

 WsfDirectedEnergyWeapon (const WsfScenario &aScenario)
WsfDirectedEnergyWeaponoperator= (const WsfDirectedEnergyWeapon &)=delete
 ~WsfDirectedEnergyWeapon () override
WsfWeaponClone () const override
BeamGetBeam () const
void SetBeam (Beam *aBeamPtr)
 Set the beam structure. The instance assumes ownership of the passed object.
FireResult Fire (double aSimTime, const FireTarget &aTarget, const FireOptions &aSettings) override
void CeaseFire (double aSimTime) override
virtual bool IsFiring () const
 Return whether the weapon is firing for the last updated time.
void EngagementComplete (double aSimTime, WsfWeaponEngagement *aEngagementPtr) override
Public Member Functions inherited from WsfImplicitWeapon
 WsfImplicitWeapon (const WsfScenario &aScenario)
 ~WsfImplicitWeapon () override
WsfWeaponClone () const override
bool Initialize (double aSimTime) override
void Update (double aSimTime) override
const char * GetScriptClassName () const override
WsfStringId GetTargetName () const
 Return the current target name.
WsfStringId GetTargetOffset () const
 Return the name id of the target offset, if any.
WsfWeaponEngagementGetCurrentEngagement () const
void ClearCurrentEngagement (double aSimTime)
 Clear the current engagement.
WsfWeaponEngagementGetEngagement (int aEngagementId=0) const
void ClearEngagement (double aSimTime, int aEngagementId=0)
 Clear the current engagement.
FireResult Fire (double aSimTime, const FireTarget &aTarget, const FireOptions &aSettings) override
void CeaseFire (double aSimTime) override
ComponentListGetComponents ()
const ComponentListGetComponents () const
virtual bool AllocateTheWeapon (double aSimTime, WsfTrack *aTrackPtr, int aStoreId)
 Begin the weapon server allocation sequence.
void SetState (WeaponState aState)
WeaponState GetState () const
 Return weapon state.
 WsfWeapon (const WsfScenario &aScenario)
 ~WsfWeapon () override
WsfComponentCloneComponent () const override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override
int GetComponentInitializationOrder () const override
const char * GetScriptClassName () const override
bool PreInitialize (double aSimTime) override
bool Initialize (double aSimTime) override
bool Initialize2 (double aSimTime) override
void PreInput () override
bool ProcessInput (UtInput &aInput) override
void Update (double aSimTime) override
 Update the state of the weapon to the supplied time value.
void TurnOff (double aSimTime) override
void TurnOn (double aSimTime) override
void SetNonOperational (double aSimTime) override
void SetOperational (double aSimTime) override
void PartBroken (double aSimTime) override
void Restore (double aSimTime) override
double GetUpdateInterval () const override
 Get the update interval.
virtual size_t GetEM_RcvrCount () const
virtual WsfEM_RcvrGetEM_Rcvr (size_t aIndex)
virtual size_t GetEM_XmtrCount () const
virtual WsfEM_XmtrGetEM_Xmtr (size_t aIndex)
virtual size_t GetEM_XmtrCount (size_t aModeIndex) const
virtual WsfEM_XmtrGetEM_Xmtr (size_t aModeIndex, size_t aIndex)
virtual WsfEM_XmtrGetEM_Xmtr (size_t aModeIndex, size_t aBeamIndex, size_t aIndex)
virtual WsfStringId GetCurrentModeName () const
 Return the string ID of the string associated with the name of the current mode.
virtual WsfWeaponModeGetCurrentMode ()
virtual size_t GetModeCount ()
 Get the number of modes associated with the weapon.
virtual WsfWeaponModeGetModeEntry (size_t aModeIndex)
virtual size_t GetModeIndex (WsfStringId aModeNameId)
virtual WsfStringId GetModeName (size_t aModeIndex)
virtual void DeselectMode (double aSimTime, WsfStringId aModeNameId)
virtual void SelectMode (double aSimTime, WsfStringId aModeNameId)
WsfLaunchComputerGetLaunchComputer () const
void SetLaunchComputer (WsfLaunchComputer *aLaunchComputerPtr)
WsfStringId GetWeaponEffectsType () const
 Get the string ID of the weapon effects to be used.
void SetWeaponEffectsType (WsfStringId aWeaponEffect)
 Set the string ID of the weapon effects to be used.
virtual void CueToTarget (double aSimTime, const WsfTrack *aTrackPtr)
virtual bool FireSalvo (double aSimTime, const FireTarget &aTarget, const SalvoOptions &aSettings)
virtual void ContinueSalvo (double aSimTime, unsigned int aRequestId)
virtual void AbortSalvo (double aSimTime, const WsfTrackId &aTrackId)
virtual unsigned int GetActiveRequestCount () const
 Return the number of 'FireSalvo' calls that are in process.
virtual unsigned int GetMaximumRequestCount () const
double GetTimeLastFired () const
 Get the simulation time when the weapon was last fired.
virtual double GetFiringDelay ()
void SetFiringDelay (const WsfRandomVariable &aFiringDelay)
virtual double GetSalvoInterval ()
double GetFiringInterval () const
void SetFiringInterval (double aFiringInterval)
WsfStringId GetLaunchedPlatformType () const
 Get the type of the platform that will be launched.
void SetLaunchedPlatformType (WsfStringId aLaunchedPlatformType)
 Set the type of the platform that will be launched.
double GetInitialStateQuantityRemaining () const
virtual double GetQuantityRemaining () const
virtual double GetQuantityCommitted () const
 Return the quantity that is currently committed.
virtual double GetMaximumQuantity () const
 Return the maximum quantity that may be 'loaded'.
virtual double GetTotalQuantityUsed () const
 Return the cumulative running total of the quantity used (fired).
virtual void SetQuantityRemaining (double aQuantity)
void ChangeQuantity (double aDeltaQuantity)
bool IsReloading () const
bool InhibitWhileReloading () const
 Flag indicating that when a weapon reload is in progress, any firing will be inhibited.
virtual void CompleteReloading (double aSimTime, double aQuantity)
double GetReloadInventory () const
double GetReloadThreshold () const
 Returns the depleted value of inventory at which a reload is attempted.
double GetReloadIncrement () const
WsfTrackCreateTargetTrack (double aSimTime, const WsfTrack *aTrackPtr)
bool GetTargetLocationWCS (double aSimTime, const WsfTrack *aTrackPtr, double aTargetLocWCS[3])
virtual void SetTargetIndex (int aId, size_t aTargetIndex)
virtual size_t GetTargetIndex (int aId) const
virtual void SetTargetedLocationWCS (int aId, const double aTargetedLocationWCS[3])
virtual void GetTargetedLocationWCS (int aId, double aTargetedLocationWCS[3]) const
virtual bool TargetedLocationValid (int aId) const
virtual bool WithinFieldOfView (double aSimTime, WsfPlatform *aPlatformPtr)
virtual bool WithinFieldOfView (double aSimTime, WsfTrack *aTrackPtr)
virtual bool StartJamming (double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfStringId aTechniqueId, WsfTrackId aTrackId, size_t aTargetIndex)
virtual bool StartJammingTrack (double aSimTime, WsfStringId aTechniqueId, const WsfTrack *aTrackPtr)
virtual bool StopJamming (double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId)
virtual bool UpdateJamming (double aSimTime, size_t aXmtrIndex, double aFrequency, double aBandwidth, WsfStringId aTechniqueId, WsfTrackId aTrackId, size_t aTargetIndex)
virtual size_t GetActiveBeamCount () const
virtual size_t GetMaximumBeamCount () const
virtual size_t GetActiveSpotCount (size_t aBeamNumber) const
virtual size_t GetMaximumSpotCount (size_t aBeamNumber) const
virtual bool SelectEA_Technique (double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfStringId aTechniqueId, WsfTrackId aTrackId)
virtual bool DeselectEA_Technique (double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfStringId aTechniqueId, WsfTrackId aTrackId)
virtual bool SetEA_DeltaGainTechnique (double aSimTime, WsfStringId aTechniqueId, bool aOnOff, WsfStringId aEffectId, double aJammingDeltaGain_dB, WsfStringId aSystemTypeId, WsfStringId aFunctionTypeId)
virtual bool SetEA_DeltaGainTechnique (double aSimTime, WsfStringId aTechniqueId, bool aOnOff, WsfStringId aEffectId, double aJammingDeltaGain_dB, WsfStringId aSystemTypeId, WsfStringId aFunctionTypeId, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId)
void SetUpdateInterval (double aUpdateInterval) override
double TimeWeaponLastFiredFor (const WsfTrackId &aTrackId) const
 Return the simulation time of the most recent weapon firing against the specified track.
double TimeWeaponLastTerminatedFor (const WsfTrackId &aTrackId) const
 Return the simulation time of the most recent weapon termination against the specified track.
int WeaponsPendingFor (const WsfTrackId &aTrackId) const
int WeaponsActiveFor (const WsfTrackId &aTrackId) const
int RoundsCompleteFor (const WsfTrackId &aTrackId) const
 Returns number of weapons that were fired at the track and are now terminated.
int WeaponsActiveAndPendingFor (const WsfTrackId &aTrackId) const
int RoundsFiredAt (const WsfTrackId &aTrackId) const
int SalvosFiredAt (const WsfTrackId &aTrackId) const
std::vector< size_t > ActiveWeaponPlatformsFor (const WsfTrackId &aTrackId) const
void SetIFCEnabled (bool aEnabled)
 Set to true is IFC is supported.
bool GetIFCEnabled () const
 Returns 'true' if the platform supports IFC (Integrated Fire Control).
Public Member Functions inherited from WsfArticulatedPart
 WsfArticulatedPart (const WsfScenario &aScenario, int aPartType)
 WsfArticulatedPart (const WsfArticulatedPart &aSrc)
 ~WsfArticulatedPart () override
void SetPositionRateECS (const double aDX, const double aDY, const double aDZ)
void GetCurrentPositionRateECS (double &aDX, double &aDY, double &aDZ) const
double GetDX () const
double GetDY () const
double GetDZ () const
void EnableArticulationUpdates (double aSimTime, double aInterval)
void DisableArticulationUpdates (double aSimTime)
void SetArticulationUpdateInterval (double aUpdateInterval)
double GetArticulationUpdateInterval () const
unsigned int GetArticulationUpdateEventEpoch () const
void IncrementArticulationUpdateEventEpoch ()
bool ArticulationUpdateEventActive () const
 Is an 'Update' event active?
void SetArticulationUpdateEventActive (bool aUpdateEventActive)
 Indicate if the 'Update' event is active.
virtual double TimeToCue (double aDesiredAz, double aDesiredEl) const
const char * GetScriptClassName () const override
void SetPlatform (WsfPlatform *aPlatformPtr) override
virtual void UpdatePosition (double aSimTime)
void OnPlatformUpdated (double, WsfPlatform *) override
SlewMode GetSlewMode () const
 Get the allowed slewing mode.
double GetAzSlewRate () const
 Get the current azimuth slew rate.
double GetElSlewRate () const
 Get the current elevation slew rate.
double GetMaxAzSlewRate () const
 Get the maximum allowable azimuth slew rate.
double GetMaxElSlewRate () const
 Get the maximum allowable elevation slew rate.
double GetMinAzSlew () const
 Gets the minimum azimuth slew limit.
double GetMaxAzSlew () const
 Gets the maximum azimuth slew limit.
double GetMinElSlew () const
 Gets the minimum elevation slew limit.
double GetMaxElSlew () const
 Gets the maximum elevation slew limit.
int GetSlewState () const
 Get the slew limit state.
void SetSlewMode (SlewMode aSlewMode)
 Set the allowed slewing mode.
void SetSlewRates (double aAzSlewRate, double aElSlewRate)
 Set the angular slew rates, limited by the maximum slew rates.
void SetAzSlewLimits (double aMinAzSlew, double aMaxAzSlew)
 Set the azimuth slew limits.
void SetElSlewLimits (double aMinElSlew, double aMaxElSlew)
 Set the elevation slew limits.
void SetAzimuthSlewDirection (SlewDirection aAzSlewDirection)
 Set the azimuth slew direction.
bool IsSlewing () const
bool WithinSlewLimits (double aThisToTgtAz, double aThisToTgtEl) const
SlewMode GetCueMode () const
 Get the allowed cueing mode.
double GetAzCueRate () const
 Get the azimuth cue rate.
double GetElCueRate () const
 Get the elevation cue rate.
double GetMinAzCue () const
 Gets the minimum azimuth cue limit.
double GetMaxAzCue () const
 Gets the maximum azimuth cue limit.
double GetMinElCue () const
 Gets the minimum elevation cue limit.
double GetMaxElCue () const
 Gets the maximum elevation cue limit.
void SetCueMode (SlewMode aCueMode)
 Set the allowed cueing mode.
void SetCueRates (double aAzCueRate, double aElCueRate)
 Set the angular cueing rates.
void SetAzCueLimits (double aMinAzCue, double aMaxAzCue)
 Set the azimuth cueing limits.
void SetElCueLimits (double aMinElCue, double aMaxElCue)
 Set the elevation cueing limits.
double GetRoll () const
void SetRoll (double aRoll)
 Set the platform-relative (ECS) roll angle of the articulated part.
double GetPitch () const
void SetPitch (double aPitch)
double GetYaw () const
void SetYaw (double aYaw)
 Set the platform-relative (ECS) yaw angle of the articulated part.
double GetTilt () const
void SetTilt (double aTilt)
void GetCurrentOrientationECS (double &aYaw, double &aPitch, double &aRoll)
void GetLOS_UnitVectorWCS (double aUnitLOS_WCS[3])
 Get the current WCS Frame Line-Of-Sight unit vector.
CueType GetCueType () const
bool IsCued () const
 Get the cued status.
void ClearCueing ()
bool GetActualCuedOrientation (double &aAzimuth, double &aElevation) const
void GetCurrentCuedOrientation (double &aAzimuth, double &aElevation) const
bool GetCuedLocationWCS (double aCuedLocationWCS[3]) const
void SetCuedLocationWCS (const double aCuedLocationWCS[3])
bool GetCuedOrientation (double &aAzimuth, double &aElevation) const
void SetCuedOrientation (double aAzimuth, double aElevation)
void GetAbsoluteCuedOrientation (double &aAzimuth, double &aElevation, double aBaseNED[3])
void ClearTransientCue ()
bool TransientCueActive () const
bool GetTransientCuedLocationWCS (double aCuedLocationWCS[3]) const
void SetTransientCuedLocationWCS (const double aCuedLocationWCS[3])
WsfStringId GetMaskingPatternState () const
void SetMaskingPatternState (WsfStringId aMaskingPatternStateId)
double GetMaskingPatternFactor (double aViewAzPCS, double aViewElPCS, const double aViewVecWCS[3])
void SetIsPrivate (bool aIsPrivate)
bool IsPrivate () const
Public Member Functions inherited from WsfPlatformPart
 WsfPlatformPart (const WsfScenario &aScenario, int aPartType)
WsfPlatformPartoperator= (const WsfPlatformPart &aRhs)=delete
 ~WsfPlatformPart () override
bool DebugEnabled () const
 Returns 'true' if debugging is enabled for this instance.
void SetDebugEnabled (bool aDebugEnabled)
unsigned int GetDebugMask ()
bool IsExternallyControlled () const
virtual void SetExternallyControlled (double aSimTime, bool aIsExternallyControlled)
int GetPartType () const
const char * GetScriptClassName () const override
WsfSimulationGetSimulation () const
const WsfScenarioGetScenario () const
WsfStringId GetComponentName () const override
void ComponentParentChanged (WsfPlatform *aPlatformPtr) override
WsfPlatformGetPlatform () const
virtual void PlatformAdded (double aSimTime, WsfPlatform *aPlatformPtr)
virtual void PlatformDeleted (WsfPlatform *aPlatformPtr)
double GetLastStatusChangeTime () const
void SetLastStatusChangeTime (double aSimTime)
 Allows a system to set the time at which the device was initialized.
bool CanBeMadeOperational () const
 Returns an indication that this system can be made operational.
bool CanBeMadeNonOperational () const
 Returns an indication that this system can be made non-operational.
bool CanBeTurnedOn () const
 Returns an indication that this system can be turned on.
bool CanBeTurnedOff () const
 Returns an indication that this system can be turned off.
bool IsTurnedOn () const
bool InitiallyTurnedOn () const
 Is the system to be turned 'on' when added to the simulation?
void SetInitiallyTurnedOn (bool aInitiallyTurnedOn)
 Sets if the system is turned on when added to the simulation.
bool IsOperational () const
bool SetOperational (double aSimTime, bool aMakeOperational)
double GetDamageFactor () const
bool SetDamageFactor (double aSimTime, double aDamageFactor)
bool IsCritical () const
void SetCritical (bool aValue)
virtual void OnPlatformBrokenEvent (double aSimTime)
 Owning platform has issued a broken event.
bool IsBroken () const
WsfInternalLinksGetInternalLinks ()
 Return the internal links for this part.
virtual bool HasInternalLinks () const
 Does this platform part have a communication link to other platform parts?
virtual bool ProcessMessage (double aSimTime, const WsfMessage &aMessage)
virtual bool ReceiveMessage (double aSimTime, const WsfMessage &aMessage)
virtual void SendMessage (double aSimTime, const WsfMessage &aMessage)
virtual void SendMessageTo (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId)
void SendMessageToProcessor (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId)
virtual void SendQueuedMessages (double aSimTime)
const WsfCategoryListGetCategories () const
 Get the categories to which this part belongs.
void AddCategory (WsfStringId aCategoryId)
 Adds the provided category to the platform part's category list.
bool IsCategoryMember (WsfStringId aCategoryId) const
const WsfGroupListGetGroups () const
 Get the groups to which this platform part belongs.
void JoinGroup (WsfGroup *aGroupPtr)
 Join the given group.
void LeaveGroup (WsfGroup *aGroupPtr)
 Leave the given group.
bool IsGroupMember (WsfStringId aGroupId)
unsigned int GetUpdateEventEpoch () const
void IncrementUpdateEventEpoch ()
bool UpdateEventActive () const
 Is an 'Update' event active?
void SetUpdateEventActive (bool aUpdateEventActive)
 Indicate if the 'Update' event is active.
Public Member Functions inherited from WsfObject
 WsfObject ()
 This is the constructor for the WsfObject class.
 ~WsfObject () override
 This is the destructor for the WsfObject class.
const char * GetScriptClassName () const override
const std::string & GetType () const
WsfStringId GetTypeId () const
 Get the string ID of the 'type' of the object.
void SetType (WsfStringId aType)
const std::string & GetBaseType () const
WsfStringId GetBaseTypeId () const
const TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (const WsfObject &aRhs)
 Assignment operator.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)
Public Member Functions inherited from WsfComponentT< WsfPlatform >
 WsfComponentT ()
 WsfComponentT (const WsfComponentT &) noexcept
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
Public Member Functions inherited from WsfUniqueId
 WsfUniqueId ()
 Construtor initializes the unique identifier to 0.
 WsfUniqueId (const WsfUniqueId &)
 Copy constructor initializes the unique identifier to 0.
WsfUniqueIdoperator= (const WsfUniqueId &)
unsigned int GetUniqueId () const
 Get the unique identifier assigned to this object.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
Public Member Functions inherited from WsfAuxDataEnabled
 WsfAuxDataEnabled ()=default
 WsfAuxDataEnabled (const WsfAuxDataEnabled &aSrc)=default
WsfAuxDataEnabledoperator= (const WsfAuxDataEnabled &aRhs)
 WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default
WsfAuxDataEnabledoperator= (WsfAuxDataEnabled &&)=default
virtual ~WsfAuxDataEnabled () noexcept
void SetAuxData (const WsfAttributeContainer &aAuxData)
void DeleteAuxData ()
 Delete the aux data container from the object.
void MergeAuxData (const WsfAuxDataEnabled &aSrc)
 Merge the object's aux data with aux data from an existing object.
void UpdateAuxData (const WsfAuxDataEnabled &aSrc)
 Update the object's aux data with aux data from an existing object.
bool HasAuxData () const
 Returns true if this object has aux data.
bool ProcessInput (UtInput &aInput)
template<typename T>
void Serialize (T &aBuff)
 (De)serialization for XIO
WsfAttributeContainerGetAuxData ()
const WsfAttributeContainerGetAuxData () const noexcept
const WsfAttributeContainerGetAuxDataConst () const noexcept
Public Member Functions inherited from WsfSinglePlatformObserver
virtual ~WsfSinglePlatformObserver ()
virtual void OnPlatformDeleting (double aSimTime, WsfPlatform *aPlatformPtr)
 Called before the platform is actually deleted.
virtual void OnPlatformDeleted (double aSimTime, WsfPlatform *aPlatformPtr)
 Called just before the platform is removed from the simulation.

Component infrastructure methods not provided by WsfWeapon.

WsfComponentCloneComponent () const override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override
 WsfDirectedEnergyWeapon (const WsfDirectedEnergyWeapon &aSrc)
virtual bool BeginEngagement (double aSimTime, EngagementData *aEngagementDataPtr)

Additional Inherited Members

Public Types inherited from WsfWeapon
enum  WeaponState {
  cWEAPON_STATE_UNALLOCATED , cWEAPON_STATE_ALLOCATED , cWEAPON_STATE_DEALLOCATE , cWEAPON_STATE_NACK ,
  cWEAPON_STATE_READY
}
using ComponentList = WsfComponentListT<WsfWeaponComponent>
Public Types inherited from WsfArticulatedPart
enum  SlewMode { cSLEW_FIXED = 0 , cSLEW_AZ = 1 , cSLEW_EL = 2 , cSLEW_AZ_EL = 3 }
enum  SlewDirection { cUNDEFINED = 0 , cPOSITIVE = 1 , cNEGATIVE = 2 }
enum  {
  cNOT_CUED = 0x0000 , cMIN_AZ = 0x0001 , cMAX_AZ = 0x0002 , cMIN_EL = 0x0004 ,
  cMAX_EL = 0x0008 , cAT_LIMIT_AZ_MASK = 0x0003 , cAT_LIMIT_EL_MASK = 0x000B , cAT_LIMIT_MASK = 0x000F ,
  cCUED_AZ = 0x0010 , cCUED_EL = 0x0020 , cCUED_AZ_EL = 0x0030 , cCUED_MASK = 0x0030
}
enum  CueType { cCUED_TO_NOTHING , cCUED_TO_LOCATION , cCUED_TO_ANGLE }
Public Types inherited from WsfPlatformPart
enum  { cLEVEL_ONE_DEBUG = 0x00000001 , cLEVEL_TWO_DEBUG = 0x00000002 }
using InternalMessageQueue = std::queue<WsfMessage*>
using RecipientMessageQueue = std::queue<std::pair<WsfPlatformPart*, WsfMessage*>>
Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
Public Types inherited from WsfComponentT< WsfPlatform >
typedef WsfPlatform ParentType
 This is needed to support the WsfComponentList template.
static double TimeWeaponLastFiredFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
static double TimeWeaponLastTerminatedFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
static int WeaponsPendingFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
static int WeaponsActiveFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
 Returns number of weapons that have been fired at the track and are still alive.
static int RoundsCompleteFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
 Returns number of weapons that were fired at the track and are now terminated.
static int WeaponsActiveAndPendingFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
 Equivalent to WeaponsActiveFor() plus WeaponsPendingFor().
static int RoundsFiredAt (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
 Equivalent to WeaponsActiveFor() plus RoundsCompleteFor().
static int SalvosFiredAt (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
 Returns number of salvo fire requests requested, and not the actual number of salvos fired.
static std::vector< size_t > ActiveWeaponPlatformsFor (const WsfPlatform &aPlatform, const WsfTrackId &aTrackId, WsfStringId aWeaponName=WsfStringId())
static void DetermineFirepowerStatus (WsfPlatform &aPlatform)
 Decide whether to set or clear the Firepower appearance bit.
UtCallbackListN< void(double)> SlewComplete
Static Public Attributes inherited from WsfWeapon
static const double cUNDEFINED_DOUBLE = 1.0E+30
Static Public Attributes inherited from WsfArticulatedPart
static constexpr double cINFINITE_SLEW_RATE = 1.0E+12 * UtMath::cRAD_PER_DEG
static constexpr double cALMOST_FULL_CIRCLE = 359.999 * UtMath::cRAD_PER_DEG
Static Public Attributes inherited from WsfAuxDataEnabled
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataAccessed
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataDestroyed
using WeaponStatusMap = std::map<WsfTrackId, WeaponStatus>
using WeaponStatusMapIter = WeaponStatusMap::iterator
using WeaponStatusMapConstIter = WeaponStatusMap::const_iterator
using WeaponStatusVal = std::pair<WsfTrackId, WeaponStatus>
Protected Member Functions inherited from WsfImplicitWeapon
 WsfImplicitWeapon (const WsfImplicitWeapon &aSrc)
WsfImplicitWeaponoperator= (const WsfImplicitWeapon &)=delete
void DeleteEngagementData (EngagementData *aEngagementDataPtr)
bool BeginEngagement (double aSimTime, EngagementData *aEngagementDataPtr)
void EngagementComplete (double aSimTime, WsfWeaponEngagement *aEngagementPtr) override
 WsfWeapon (const WsfWeapon &aSrc)
 Copy constructor (for Clone()).
WsfWeaponoperator= (const WsfWeapon &)=delete
bool IsQuantitySpecified () const
virtual void ProcessReloading (double aSimTime)
void SetIsReloading (bool aValue)
 Method used for derived classes to set or clear the IsReloading Flag.
void SetModeList (WsfModeList *aModeListPtr)
void SetTimeLastFired (double aTimeLastFired)
void SetMaximumRequestCount (unsigned int aMaximumRequestCount)
double GetReloadInterval () const
virtual void WeaponFireAborted (double aSimTime, const WsfTrack *aTargetTrackPtr, double aQuantity)
bool FullCircle () const
virtual double GetAzimuthRotationRate () const
virtual double GetElevationRotationRate () const
void SlewToOrientation (double aSimTime, double aDesiredAz, double aDesiredEl)
virtual void TimeToRotate (double &aDeltaAz, double &aDeltaEl, double &aAzRate, double &aElRate, double &aTimeToAz, double &aTimeToEl) const
void UpdateCuedOrientation (double aSimTime)
bool UpdateOrientation (double aSimTime)
 WsfPlatformPart (const WsfPlatformPart &aSrc)
 Copy constructor (for Clone()).
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).
Protected Member Functions inherited from WsfUniqueId
void AssignUniqueId (WsfSimulation *aSimulationPtr)
WsfModeListmModeListPtr
 The pointer to the list of modes (for things like jammers).
WeaponStatusMap mWeaponStatusMap
WsfMaskingPatternmMaskingPatternPtr
 The masking factor.
WsfStringId mMaskingPatternName
WsfStringId mMaskingPatternStateId
double mYaw
 The orientation of the device coordinate system.
double mPitch
double mRoll
double mDX
 The velocity of the part.
double mDY
double mDZ
double mTilt
 The tilt angle above below the scan plane.
double mAzSlewRate
 The slewing rates and limits of the device with respect to the device coordinate system.
double mElSlewRate
double mMaxAzSlewRate
double mMaxElSlewRate
double mMinAzSlew
double mMaxAzSlew
double mMinElSlew
double mMaxElSlew
SlewMode mSlewMode
SlewDirection mAzSlewDirection
int mSlewState
double mAzCueRate
 The cueing rates and limits of the device with respect to the device coordinate system.
double mElCueRate
double mMinAzCue
double mMaxAzCue
double mMinElCue
double mMaxElCue
SlewMode mCueMode
 The directions (az and/or el) in which cueing can be performed.
CueType mCueType
bool mTransientCueActive
 'true' if the transient cue is defined
double mCuedLocationWCS [3]
 The cued location if mCueType is cCUED_TO_LOCATION.
double mCuedAz
 The cued azimuth if mCueType == cCUED_TO_ANGLE.
double mCuedEl
 The cued elevation if mCueType == cCUED_TO_ANGLE.
double mTransientCuedLocationWCS [3]
 The transient cue, if mTransientCueActive is true.
double mActualCuedAz
 The actual cued location, subject to the slewing limits.
double mActualCuedEl
double mCurrentAz
double mCurrentEl
double mLastAzElUpdateTime
 The time when the current az/el were last updated.
double mLastUpdateTime
 The time when the x/y/z position was last updated.
bool mSlewMethodCoordinated
 'true' if slcue rates are dynamically adjusted so the target angles are reached simultaneously.
bool mIsSlewing
 'true' if the part is slewing to satisfy a cueing request.
bool mIsPrivate
 'true' if the part is considered 'private' and not to visible to external simulations.

Detailed Description

An interface for directed energy weapons. Currently directed-energy weapons are modeled as an implicit weapon with an optional "beam" object. This object is suitable for HEL modeling. For HPM modeling another structure should be added and used instead of the beam object.

Constructor & Destructor Documentation

◆ WsfDirectedEnergyWeapon() [1/2]

WsfDirectedEnergyWeapon::WsfDirectedEnergyWeapon ( const WsfScenario & aScenario)

◆ ~WsfDirectedEnergyWeapon()

WsfDirectedEnergyWeapon::~WsfDirectedEnergyWeapon ( )
override

◆ WsfDirectedEnergyWeapon() [2/2]

WsfDirectedEnergyWeapon::WsfDirectedEnergyWeapon ( const WsfDirectedEnergyWeapon & aSrc)
protected

Member Function Documentation

◆ BeginEngagement()

◆ CeaseFire()

void WsfDirectedEnergyWeapon::CeaseFire ( double aSimTime)
overridevirtual

Reimplemented from WsfWeapon.

Reimplemented in WsfLaserWeapon.

References WsfImplicitWeapon::CeaseFire().

Referenced by WsfDisDirectedEnergyFire::Process().

◆ Clone()

WsfWeapon * WsfDirectedEnergyWeapon::Clone ( ) const
inlineoverridevirtual

Clone this object.

Returns
a pointer to the new object.

Implements WsfWeapon.

Reimplemented in WsfLaserWeapon.

References WsfDirectedEnergyWeapon(), and WsfWeapon::WsfWeapon().

◆ CloneComponent()

WsfComponent * WsfDirectedEnergyWeapon::CloneComponent ( ) const
inlineoverridevirtual

Clones a component. May return null if component does not support clone.

Implements WsfComponent.

References WsfImplicitWeapon::Clone().

◆ EngagementComplete()

void WsfDirectedEnergyWeapon::EngagementComplete ( double aSimTime,
WsfWeaponEngagement * aEngagementPtr )
overridevirtual

Method used by the weapon engagement when the weapon platform terminates or the engagement is about to be marked "complete" (which is not the same as "ended"). This is not an observer callback but is used to update weapon and engagement status prior to the WsfObserver::WeaponTerminated call.

Reimplemented from WsfWeapon.

References WsfWeapon::EngagementComplete(), WsfWeaponEngagement::GetFiringPlatform(), WsfWeaponEngagement::GetTargetPlatform(), WsfWeaponEngagement::SetTargetLocationWCS(), and WsfWeaponEngagement::SetWeaponVelocityWCS().

◆ Fire()

WsfWeapon::FireResult WsfDirectedEnergyWeapon::Fire ( double aSimTime,
const FireTarget & aTarget,
const FireOptions & aSettings )
overridevirtual

Attempt to fire a weapon. WsfPlatform::GetCurrentTarget() will be used as the target if it is defined.

Parameters
aSimTimeThe current simulation time.
aTargetThe target of the weapon.
aSettingsOptions for firing the weapon.
Note
This is the only virtual Fire() method, it should be implemented by derived classes.

Reimplemented from WsfWeapon.

Reimplemented in WsfLaserWeapon.

References WsfObserver::DirectedEnergyWeaponFired(), WsfImplicitWeapon::Fire(), WsfImplicitWeapon::GetEngagement(), WsfPlatformPart::GetPlatform(), WsfPlatformPart::GetSimulation(), WsfWeapon::FireResult::mSuccess, WsfWeapon::FireTarget::mTargetName, WsfWeapon::FireTarget::mTrackPtr, and success.

Referenced by WsfLaserWeapon::Fire().

◆ GetBeam()

Beam * WsfDirectedEnergyWeapon::GetBeam ( ) const
inline

◆ GetComponentRoles()

const int * WsfDirectedEnergyWeapon::GetComponentRoles ( ) const
overridevirtual

Returns a zero-terminated array of component roles. Note that the array should be in decreasing order of specificity and should generally the inheritance hierarchy. The first entry should be the components 'primary' role. For example a sensor would do the following:

return roles;
@ cWSF_COMPONENT_SENSOR
A 'sensor' component (WsfSensor).
Definition WsfComponentRoles.hpp:105
@ cWSF_COMPONENT_PLATFORM_PART
The component derives from WsfPlatformPart.
Definition WsfComponentRoles.hpp:98
@ cWSF_COMPONENT_ARTICULATED_PART
The component derives from WsfArticulatedPart.
Definition WsfComponentRoles.hpp:99

Reimplemented from WsfArticulatedPart.

References cWSF_COMPONENT_ARTICULATED_PART, cWSF_COMPONENT_DIRECTED_ENERGY_WEAPON, cWSF_COMPONENT_NULL, cWSF_COMPONENT_PLATFORM_PART, and cWSF_COMPONENT_WEAPON.

◆ IsFiring()

bool WsfDirectedEnergyWeapon::IsFiring ( ) const
virtual

Return whether the weapon is firing for the last updated time.

Return whether the weapon is currently firing. The default implementation returns true if the weapon currently has an engagement.

Reimplemented in WsfLaserWeapon.

Referenced by WsfDisWeaponEvents::DirectedEnergyWeaponFired().

◆ operator=()

WsfDirectedEnergyWeapon & WsfDirectedEnergyWeapon::operator= ( const WsfDirectedEnergyWeapon & )
delete

◆ QueryInterface()

void * WsfDirectedEnergyWeapon::QueryInterface ( int aRole)
overridevirtual

Requests a component's role interface. A component can support one or more roles.

Parameters
aRoleThe role whose interface is to be returned.
Returns
A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);

Reimplemented from WsfArticulatedPart.

References cWSF_COMPONENT_ARTICULATED_PART, cWSF_COMPONENT_DIRECTED_ENERGY_WEAPON, cWSF_COMPONENT_PLATFORM_PART, cWSF_COMPONENT_WEAPON, WsfArticulatedPart::WsfArticulatedPart(), and WsfWeapon::WsfWeapon().

◆ SetBeam()

void WsfDirectedEnergyWeapon::SetBeam ( WsfDirectedEnergyWeapon::Beam * aBeamPtr)

Set the beam structure. The instance assumes ownership of the passed object.

Referenced by WsfDisDirectedEnergyFire::Process(), and WsfLaserWeapon::SetHEL().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved