WSF
WsfExoAtmosphericLethality Class Reference

#include <WsfExoAtmosphericLethality.hpp>

Inheritance diagram for WsfExoAtmosphericLethality:
Collaboration diagram for WsfExoAtmosphericLethality:

Public Member Functions

 WsfExoAtmosphericLethality (WsfScenario &aScenario)
 Default constructor.
 ~WsfExoAtmosphericLethality () override=default
WsfWeaponEffectsClone () const override
bool PreInitialize () override
bool Initialize (double aSimTime, const WsfWeaponEngagement *aEngagementPtr) override
bool ProcessInput (UtInput &aInput) override
void CalcInterceptPk (double aSimTime, WsfPlatform *aTargetPtr) override
void Terminate (double aSimTime) override
Public Member Functions inherited from WsfExplicitWeaponEffects
 WsfExplicitWeaponEffects (WsfScenario &aScenario)
 ~WsfExplicitWeaponEffects () override=default
WsfWeaponEffectsClone () const override
bool ProcessInput (UtInput &aInput) override
virtual double MaximumEffectiveRadiusSquared () const
 Access the miss radius squared beyond which the weapon has no effect.
virtual double MaximumEffectiveRadius () const
 Access the miss radius beyond which the weapon has no effect.
void SetMaxiumEffectiveRadius (double aRadius)
 Set the radius beyond which the weapon has no effect.
Public Member Functions inherited from WsfWeaponEffects
 WsfWeaponEffects (WsfScenario &aScenario)
 ~WsfWeaponEffects () override
bool ProcessInput (UtInput &aInput) override
UtScriptContext * GetScriptAccessibleContext () const override
Result GetTargetResult () const
Result GetIncidentalResult () const
Result GetTotalResult () const
bool UseLaunchPk () const
bool UseInterceptPk () const
double GetPkDegrade () const
 Return the current Pk degrade factor.
double GetPkConstraint () const
void SetInvincibleIndex (unsigned int aPlatformID)
 Set the ID of a platform which shall not be damaged. (Usually the launching entity.).
unsigned int GetInvincibleIndex () const
 Get the ID of a platform which will not be damaged.
void SetDamageRadius (double aDamageRadius)
 Set the maximum lethal damage radius for this effect.
double GetDamageRadius () const
 Return the maximum lethal damage radius for this effect.
double GetLaunchPk () const
 Get the Launch Pk.
double GetInterceptPk () const
 Get the Intercept Pk.
bool DrawEndgamePk ()
 Force a pk draw for an external platform target.
virtual double GetCEP () const
 Access the value for engagement Circular Error Probable (CEP).
void SetCEP (double aValue)
void SetPkDegrade (double aPkDegrade)
virtual double GetPkDrawn () const
 Access the Pk value drawn for the (intended) target hit assessment.
bool DebugEnabled () const
 Returns 'true' if debugging is enabled for this instance.
void SetDebugEnabled (bool aDebugEnabled)
 Enable or disable debugging for this instance.
unsigned int KilledPlatformCount () const
 Method returns the count of platforms killed during this engagement.
bool IsKilledPlatform (size_t aPlatformIndex) const
 Returns 'true' if the specified WSF platform index has been killed during this engagement.
WsfPk::TableGetPkTable ()
WsfScenarioGetScenario ()
virtual void ProcessEffectExplicit (double aSimTime)
virtual void ProcessEffectImplicit (double aSimTime)
void Defeat ()
bool GetIncidentalDamageAllowed () const
void SetIncidentalDamageAllowed (bool aIncidentalDamageAllowed)
bool GetParentDamageAllowed () const
void SetParentDamageAllowed (bool aParentDamageAllowed)
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)

Protected Types

using IvPkPair = std::pair<double, double>
using Points = std::vector<IvPkPair>

Protected Member Functions

 WsfExoAtmosphericLethality (const WsfExoAtmosphericLethality &aSrc)=default
WsfExoAtmosphericLethalityoperator= (const WsfExoAtmosphericLethality &aRhs)=delete
 Prevent use of operator= by declaring, but not defining.
double InterpPkArray (double aIV_Value, const Points &aArray) const
double GetVelocityPk (double aVelocityValue)
double GetAnglePk (double aAngleValue)
Protected Member Functions inherited from WsfExplicitWeaponEffects
 WsfExplicitWeaponEffects (const WsfExplicitWeaponEffects &aSrc)=default
void CalcInterceptPk (double aSimTime, WsfPlatform *aTargetPtr) override
void CalcPkParameters (WsfPlatform *aTargetPtr, double &aAzimuth, double &aElevation, double &aMissileSpeed, double &aTargetSpeed) override
bool IsVulnerable (WsfPlatform *aTargetPtr) override
double LastTestRadiusSquared () const
void CalcInterceptGeometry (WsfPlatform *aTargetPtr, double &aRangeRate, double &aApproachAngle)
Protected Member Functions inherited from WsfWeaponEffects
 WsfWeaponEffects (const WsfWeaponEffects &aSrc)
 Copy Constructor for Clone().
WsfWeaponEffectsoperator= (const WsfWeaponEffects &aRhs)
virtual void ApplyEffectIncrement (double aSimTime, WsfPlatform *aOtherPlatformPtr, double aDamageAmount)
virtual void ApplyEffectTo (double aSimTime, WsfPlatform *aOtherPlatformPtr)
virtual void ApplyDamageResultToOtherPlatform (double aSimTime, WsfPlatform *aOtherPlatformPtr, double aDamage, Result aResult)
virtual void CalcLaunchPk (double aSimTime)
virtual void CalcPkDegradation (double aSimTime, WsfPlatform *aTargetPtr)
bool IsIntendedTargetValid ()
 This protected method assures that a specified target index does exist.
void AddToKilledPlatforms (unsigned int aKilledIndex)
double DrawUniformPk ()
 Draw a uniform value for Pk determination.
void ProcessEffectCommon (double aSimTime, WsfPlatform *aRefPlatformPtr)
bool Defeated () const
 Return a flag to indicate that this effect has been annulled by outside influences.
const WsfWeaponEngagementGetEngagement () const
 Return the Engagement that this effect was instantiated to support.
void SetUseLaunchPk ()
 Indicate that you wish to use the Launch Pk value (in lieu of the Intercept Pk value).
void SetUseInterceptPk ()
 Indicate that you wish to use the Intercept Pk value (in lieu of the Launch Pk value).
void SetLaunchPk (double aValue)
void SetInterceptPk (double aValue)
void SetPkDrawn (double aValue)
 Set the Pk value used in the intended target hit assessment.
void SetIncidentalResult (const WsfWeaponEffects::Result &aResult)
void SetTargetResult (const WsfWeaponEffects::Result &aResult)
void SetResult (const WsfWeaponEffects::Result &aResult, bool aIsIntended)
size_t KilledPlatform (size_t aIndex)
 Method returns an index of one of the platforms killed during this engagement.
const WsfWeaponEngagementGetEngagementPtr () const
WsfSimulationGetSimulation () const
WsfScriptContextGetScriptContext () const
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).

Additional Inherited Members

Public Types inherited from WsfWeaponEffects
enum  Result { cINVALID , cMISSED , cDAMAGED , cKILLED }
Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
Static Public Member Functions inherited from WsfWeaponEffects
static WsfStringId GetWeaponEffectsType (WsfPlatform &aPlatform)
 Return the weapon effects type for the associated platform.
static std::string GetResultString (WsfWeaponEffects::Result aResult)
Static Public Attributes inherited from WsfWeaponEffects
static const char * cTYPE_KIND = "weapon_effect"
static const double cUNHARMED = 0.0
 Value indicating no damage to a player, the weapon had no effect.
static const double cMORTALLY_WOUNDED = 1.0

Detailed Description

A weapon effect that maps Probability of Kill (Pk) into terminal velocity conditions.

This class is a specialization of WsfExplicitWeaponEffects that implements linearly varying target kill probabilities onto the terminal velocities of an engagement. The independent variable choices are: Impact Velocity and Impact Angle. A Pk contribution of each of these may be combined into a final Pk, against which a random draw is made for kill determination.

Member Typedef Documentation

◆ IvPkPair

using WsfExoAtmosphericLethality::IvPkPair = std::pair<double, double>
protected

◆ Points

using WsfExoAtmosphericLethality::Points = std::vector<IvPkPair>
protected

Constructor & Destructor Documentation

◆ WsfExoAtmosphericLethality() [1/2]

WsfExoAtmosphericLethality::WsfExoAtmosphericLethality ( WsfScenario & aScenario)

◆ ~WsfExoAtmosphericLethality()

WsfExoAtmosphericLethality::~WsfExoAtmosphericLethality ( )
overridedefault

◆ WsfExoAtmosphericLethality() [2/2]

WsfExoAtmosphericLethality::WsfExoAtmosphericLethality ( const WsfExoAtmosphericLethality & aSrc)
protecteddefault

Member Function Documentation

◆ CalcInterceptPk()

void WsfExoAtmosphericLethality::CalcInterceptPk ( double aSimTime,
WsfPlatform * aTargetPtr )
overridevirtual

Method to calculate the Intercept Pk, in response to engagement conditions at intercept. Will be called at the beginning of ProcessEffectExplicit().

Parameters
aSimTimesimulated time for the weapon effect.
aTargetPtrTarget under consideration for damage.

Reimplemented from WsfWeaponEffects.

References WsfExplicitWeaponEffects::CalcInterceptGeometry(), WsfWeaponEffects::Defeated(), GetAnglePk(), GetVelocityPk(), and WsfWeaponEffects::SetInterceptPk().

◆ Clone()

WsfWeaponEffects * WsfExoAtmosphericLethality::Clone ( ) const
overridevirtual

Create a clone of the object.

Returns
A pointer to the new object.

Implements WsfWeaponEffects.

References WsfExoAtmosphericLethality(), and WsfWeaponEffects::WsfWeaponEffects().

◆ GetAnglePk()

double WsfExoAtmosphericLethality::GetAnglePk ( double aAngleValue)
protected

References InterpPkArray().

Referenced by CalcInterceptPk(), and operator=().

◆ GetVelocityPk()

double WsfExoAtmosphericLethality::GetVelocityPk ( double aVelocityValue)
protected

References InterpPkArray().

Referenced by CalcInterceptPk(), and operator=().

◆ Initialize()

bool WsfExoAtmosphericLethality::Initialize ( double aSimTime,
const WsfWeaponEngagement * aEngagementPtr )
overridevirtual

Initializes the effect at the time of weapon firing. May be used to set the anticipated launch Pk or CEP for the engagement, if needed. Calls virtual CalcLaunchPk()

Parameters
aSimTimesimulated time at the beginning of the engagement.
aEngagementPtrThe engagement that owns and controls this effect.
Returns
'true' if the weapon effect was initialized successfully.

Reimplemented from WsfWeaponEffects.

References WsfWeaponEffects::GetSimulation(), WsfWeaponEffects::Initialize(), WsfSimulation::LockRandom(), and WsfSimulation::UnlockRandom().

◆ InterpPkArray()

double WsfExoAtmosphericLethality::InterpPkArray ( double aIV_Value,
const Points & aArray ) const
protected

◆ operator=()

WsfExoAtmosphericLethality & WsfExoAtmosphericLethality::operator= ( const WsfExoAtmosphericLethality & aRhs)
protecteddelete

Prevent use of operator= by declaring, but not defining.

References GetAnglePk(), GetVelocityPk(), InterpPkArray(), and WsfExoAtmosphericLethality().

◆ PreInitialize()

bool WsfExoAtmosphericLethality::PreInitialize ( )
overridevirtual

Method will initialize any data required by the object prior to first use. (The type loader must call this method on each object after the data input stream is read and parsed.)

Reimplemented from WsfWeaponEffects.

References WsfWeaponEffects::GetEngagement(), WsfObject::GetName(), WsfWeaponEngagement::GetWeaponPlatform(), WsfWeaponEffects::PreInitialize(), sort(), and success.

◆ ProcessInput()

bool WsfExoAtmosphericLethality::ProcessInput ( UtInput & aInput)
overridevirtual

Process input from a generic source.

Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.
Exceptions
UtInput::ExceptionBase(or an object derived from it) if the command was recognized but contains some sort of error.
Note
If a derived class does not recognize the command (i.e.: the return value is false) then it should call the base class ProcessInput method. This chain should continue until either the command is recognized or the top-level base class is encountered.

Reimplemented from WsfObject.

References WsfExplicitWeaponEffects::ProcessInput().

◆ Terminate()

void WsfExoAtmosphericLethality::Terminate ( double aSimTime)
overridevirtual

Method to complete the effect at the end of a weapon engagement. The first action is to inform the WsfObservers of WsfWeaponEngagement termination. For an explicit engagement, the next action is to remove the weapon platform from the simulation. For both implicit and explicit engagements, killed players are then removed.

Parameters
aSimTimeCurrent simulated time value.

Reimplemented from WsfWeaponEffects.

References WsfWeaponEffects::GetEngagement(), WsfWeaponEngagement::GetWeaponPlatform(), and WsfWeaponEffects::Terminate().


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