12#ifndef WSF_SA_ASSESS_HPP
13#define WSF_SA_ASSESS_HPP
15#include "wsf_air_combat_export.h"
66 bool ProcessInput(UtInput& aInput);
72 void Initialize(
double aSimTime);
78 double TryUpdateEngagements(
double aSimTime);
84 double TryUpdatePrioritizedItemData(
double aSimTime);
90 double TryUpdatePrioritizedItemCalculation(
double aSimTime);
96 void UpdateEngagements(
double aSimTime);
101 void UpdatePrioritizedItemData(
double aSimTime);
107 void UpdatePrioritizedItemCalculation(
double aSimTime);
113 void UpdateEngagementsData(
double aSimTime);
119 void UpdatePrioritizedThreatsAndTargetsData(
double aSimTime);
124 void AssessBogiesBandits(
double aSimTime);
129 void CalculatePrioritizedThreats(
double aSimTime);
134 void CalculatePrioritizedTargets(
double aSimTime);
137 void UpdateWeaponSupport(
double aSimTime);
183 double AngleOffTarget2D(
const WsfPlatform& aTargetPlatform)
const;
204 double AngleOffTarget3D(
const WsfPlatform& aTargetPlatform)
const;
223 double AspectAngleForTarget2D(
const WsfPlatform& aTargetPlatform)
const;
242 double AspectAngleForTarget3D(
const WsfPlatform& aTargetPlatform)
const;
249 static double OffBoresightAngleForTarget(
const WsfPlatform& aPlatform,
const WsfPlatform& aTargetPlatform);
255 double OffBoresightAngleForTarget(
const WsfPlatform& aTargetPlatform)
const;
261 double OffBoresightAngleForTarget(
const double aLocationWCS[3])
const;
274 double ExpectedDetectionRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
282 double ExpectedDetectionRangeAgainstTarget(
size_t aIndex)
const;
290 double ExpectedDetectionRangeByTarget(
const WsfPlatform& aTargetPlatform)
const;
298 double ExpectedDetectionRangeByTarget(
size_t aIndex)
const;
307 double ExpectedDetectionRange(
const WsfPlatform& aSourePlatform,
const WsfPlatform& aTargetPlatform)
const;
312 double ExpectedNormalizedDetectionRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
317 double ExpectedNormalizedDetectionRangeAgainstTarget(
size_t aIndex)
const;
326 double ExpectedNormalizedWezRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
331 double ExpectedNormalizedWezRangeAgainstTarget(
size_t aIndex)
const;
337 double ExpectedWezRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
343 double ExpectedWezRangeAgainstTarget(
size_t aIndex)
const;
348 double ExpectedMinimumEngagementRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
353 double ExpectedMinimumEngagementRangeAgainstTarget(
size_t aIndex)
const;
358 double ExpectedMaximumEngagementRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
363 double ExpectedMaximumEngagementRangeAgainstTarget(
size_t aIndex)
const;
368 double ExpectedNoEscapeRangeAgainstTarget(
const WsfPlatform& aTargetPlatform)
const;
373 double ExpectedNoEscapeRangeAgainstTarget(
size_t aIndex)
const;
379 double ExpectedWezRangeByTarget(
const WsfPlatform& aTargetPlatform)
const;
385 double ExpectedWezRangeByTarget(
size_t aIndex)
const;
400 double CalcSlantRange(
const WsfPlatform& aTargetPlatform)
const;
417 double CalcDeltaAltitude(
const WsfPlatform& aTargetPlatform)
const;
436 void SetSelectedWeapon(
const std::string& aSelectedWeapon) { mSelectedWeapon = aSelectedWeapon; }
455 std::vector<WsfSA_PerceivedItem*> PerceivedThreatItems(
double aSimTime);
472 return mPrioritizedThreatItems;
485 return mPrioritizedThreatEntities;
493 return mPrioritizedThreatEntities;
501 return mPrioritizedAircraftThreatEntities;
509 return mPrioritizedAircraftThreatEntities;
517 return mPrioritizedMissileThreatEntities;
525 return mPrioritizedMissileThreatEntities;
533 return mPrioritizedThreatGroups;
584 return mPrioritizedTargetItems;
595 return mPrioritizedTargetEntities;
602 return mPrioritizedTargetEntities;
609 return mPrioritizedAircraftTargetEntities;
616 return mPrioritizedAircraftTargetEntities;
623 return mPrioritizedMissileTargetEntities;
630 return mPrioritizedMissileTargetEntities;
637 return mPrioritizedTargetGroups;
680 bool IsCurrentlyBeingTracked(
size_t aPlatformId)
const;
690 const std::list<WsfSA_Group*>&
FocusedGroups()
const {
return mFocusedGroups; }
696 void UpdateGroupFocusLists();
702 void SortedGroups(
int aSortingEnum, std::vector<WsfSA_Group*>& aGroups)
const;
707 WsfSA_Group* GetGroup(
const std::string& aName)
const;
730 double Risk()
const {
return mRisk; }
783 double aEngineInletArea,
784 double aEngineExitArea,
786 double aSignatureReductionFactorOverall,
787 double aSignatureReductionFactorNose,
788 double aNoseSignatureReductionAngle)
1017 struct MissilePkParameters
1019 MissilePkParameters(
double aNominalPk,
double aHeadOnReduction,
double aBroadsideReduction)
1020 : nominalPk(aNominalPk)
1021 , headOnReduction(aHeadOnReduction)
1022 , broadsideReduction(aBroadsideReduction)
1025 double nominalPk = 0.0;
1026 double headOnReduction = 0.0;
1027 double broadsideReduction = 0.0;
1030 struct MissileWezParameters
1032 MissileWezParameters(
double aAvgSpeed,
1033 double aMaxTimeFlight,
1034 double aMaxOffBoresightAngle,
1035 double aMinTimeFlight,
1036 const MissilePkParameters& aPkData)
1037 : avgSpeed(aAvgSpeed)
1038 , maxTimeFlight(aMaxTimeFlight)
1039 , maxOffBoresightAngle(aMaxOffBoresightAngle)
1040 , minTimeFlight(aMinTimeFlight)
1044 MissileWezParameters(
double aAvgSpeed,
1045 double aMaxTimeFlight,
1046 double aMaxOffBoresightAngle,
1047 double aMinTimeFlight,
1049 double aHeadOnReduction,
1050 double aBroadsideReduction)
1051 : avgSpeed(aAvgSpeed)
1052 , maxTimeFlight(aMaxTimeFlight)
1053 , maxOffBoresightAngle(aMaxOffBoresightAngle)
1054 , minTimeFlight(aMinTimeFlight)
1055 , pkData(aNominalPk, aHeadOnReduction, aBroadsideReduction)
1058 double avgSpeed = 0.0;
1059 double maxTimeFlight = 0.0;
1060 double maxOffBoresightAngle = UtMath::cPI;
1061 double minTimeFlight = 0.0;
1062 MissilePkParameters pkData;
1065 struct MissileRangeParameters
1067 MissileRangeParameters()
1073 MissileRangeParameters(
double aRange,
double aTime,
double aPk)
1093 bool SimpleWezCalculationAircraft(
const WsfPlatform& aTargetPlatform,
1094 MissileRangeParameters& aRmax,
1095 MissileRangeParameters& aRne,
1096 MissileRangeParameters& aRmin,
1097 double& aCurrentRange,
1098 bool& aEngageable)
const;
1110 bool SimpleWezCalculationAircraft(
const WsfPlatform& aAircraftPlatform,
1111 const WsfPlatform& aTargetPlatform,
1112 MissileRangeParameters& aRmax,
1113 MissileRangeParameters& aRne,
1114 MissileRangeParameters& aRmin,
1115 double& aCurrentRange,
1116 bool& aEngageable)
const;
1128 bool SimpleMissileWezCalculation(
const WsfPlatform& aTargetPlatform,
1129 const MissileWezParameters& aMissileParameters,
1130 MissileRangeParameters& aRmax,
1131 MissileRangeParameters& aRne,
1132 MissileRangeParameters& aRmin,
1133 double& aCurrentRange,
1134 bool& aEngageable)
const;
1147 bool SimpleMissileWezCalculation(
const WsfPlatform& aAircraftPlatform,
1148 const WsfPlatform& aTargetPlatform,
1149 const MissileWezParameters& aMissileParameters,
1150 MissileRangeParameters& aRmax,
1151 MissileRangeParameters& aRne,
1152 MissileRangeParameters& aRmin,
1153 double& aCurrentRange,
1154 bool& aEngageable)
const;
1167 bool LaunchComputerMissileWezLookup(
const WsfPlatform& aAircraftPlatform,
1168 const WsfPlatform& aTargetPlatform,
1169 const MissileWezParameters& aMissileParameters,
1170 MissileRangeParameters& aRmax,
1171 MissileRangeParameters& aRne,
1172 MissileRangeParameters& aRmin,
1173 double& aCurrentRange,
1174 bool& aEngageable)
const;
1185 bool SimpleMissileWezCalculationInflight(
const WsfPlatform& aMissilePlatform,
1186 WsfPlatform& aTargetPlatform,
1187 const MissileWezParameters& aMissileParameters,
1188 double& aRemainingRange,
1189 double& aRemainingTime,
1199 double SimpleCalcPkBasedOnAngleOff(
const MissilePkParameters& aParameters,
double aAngleOff)
const;
1205 bool IsMediumRangeMissile(
const std::string& aName)
const;
1211 bool IsShortRangeMissile(
const std::string& aName)
const;
1218 double TargetCrossSection(
const WsfPlatform& aTargetPlatform,
double aAzimuth,
double aElevation)
const;
1223 UtScript* mCalculateRiskScriptPtr{
nullptr};
1224 UtScript* mCalculateSelfRiskScriptPtr{
nullptr};
1225 UtScript* mCalculateFlightRiskScriptPtr{
nullptr};
1226 UtScript* mCalculatePackageRiskScriptPtr{
nullptr};
1227 UtScript* mCalculateMissionRiskScriptPtr{
nullptr};
1228 UtScript* mCalculateDefensivenessScriptPtr{
nullptr};
1229 UtScript* mCalculateUrgencyScriptPtr{
nullptr};
1230 UtScript* mCalculateEntityThreatLevelScriptPtr{
1232 UtScript* mCalculateEntityTargetValueScriptPtr{
1234 UtScript* mCalculateMissileThreatLevelScriptPtr{
1236 UtScript* mCalculateMissileTargetValueScriptPtr{
1238 UtScript* mCalculateGroupThreatLevelScriptPtr{
1240 UtScript* mCalculateGroupTargetValueScriptPtr{
1242 UtScript* mCalculateRiskPosedByEntityScriptPtr{
1244 UtScript* mCalculateDefensivenessInducedByEntityScriptPtr{
1246 UtScript* mCalculateUrgencyInducedByEntityScriptPtr{
1252 WsfP6DOF_Mover* mP6DofMover{
nullptr};
1253 wsf::six_dof::Mover* mSixDOF_Mover{
nullptr};
1254 WsfBrawlerMover* mBrawlerMover{
nullptr};
1255 WsfBrawlerFuel* mBrawlerFuel{
nullptr};
1256 WsfAirMover* mAirMover{
nullptr};
1257 WsfFuel* mAirMoverFuel{
nullptr};
1262 UtScript* mCalculateWeaponSupport{
nullptr};
1263 std::string mSelectedWeapon;
1264 bool mWeaponBayOpen{
false};
1265 bool mSupportingWeapon{
false};
1270 const WsfSA_Processor::PerceiveData* mPerceivedDataSummary{
1272 std::list<WsfSA_Group*> mFocusedGroups;
1273 std::list<WsfSA_Group*> mUnfocusedGroups;
1278 std::string mMissionTask;
1279 AcceptableRiskLevel mAcceptableLevelOfRisk{LOW};
1281 double mDefensiveness{0.0};
1282 double mUrgency{0.0};
1283 double mSelfRisk{0.0};
1284 double mFlightRisk{0.0};
1285 double mPackageRisk{0.0};
1286 double mMissionRisk{0.0};
1291 unsigned int mMaxPrioritizedThreats{0};
1292 unsigned int mMaxPrioritizedThreatsInitial{0};
1293 unsigned int mMaxPrioritizedTargets{0};
1294 unsigned int mMaxPrioritizedTargetsInitial{0};
1296 std::list<UtWeakReference<WsfSA_PerceivedItem>> mPrioritizedThreatItems;
1297 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedThreatEntities;
1298 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedAircraftThreatEntities;
1300 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedMissileThreatEntities;
1302 std::list<UtWeakReference<WsfSA_Group>> mPrioritizedThreatGroups;
1303 std::list<UtWeakReference<WsfSA_PerceivedItem>> mPrioritizedTargetItems;
1304 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedTargetEntities;
1305 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedAircraftTargetEntities;
1307 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedMissileTargetEntities;
1309 std::list<UtWeakReference<WsfSA_Group>> mPrioritizedTargetGroups;
1311 double mBogieThreatScoreMultiplier{1.0};
1312 double mBogieTargetScoreMultiplier{1.0};
1318 std::vector<size_t> mPrioritizedThreatIds;
1319 std::vector<std::string> mPrioritizedThreatNames;
1322 std::vector<size_t> mPrioritizedTargetIds;
1323 std::vector<std::string> mPrioritizedTargetNames;
1326 std::vector<size_t> mCurrentlyTrackedPlatformIds;
1327 std::vector<std::string> mCurrentlyTrackedPlatformNames;
1330 std::vector<AssessEngagementData> mEngagementDataList;
1335 MissileWezParameters mBlueMissileParametersMRM;
1336 MissileWezParameters mBlueMissileParametersSRM;
1337 MissileWezParameters mRedMissileParametersMRM;
1338 MissileWezParameters mRedMissileParametersSRM;
1339 AircraftSignatureParameters mBlueAircraftSignature;
1340 AircraftSignatureParameters mRedAircraftSignature;
1345 bool mIgnoreMissilesAsThreats{
false};
1346 bool mIgnoreBogiesAsThreats{
false};
1347 bool mIgnoreMissilesAsTargets{
true};
1348 bool mIgnoreBogiesAsTargets{
true};
1349 double mLastTimeCalculatedTrackedPlatforms{0.0};
Definition WsfAirMover.hpp:32
Definition WsfFuel.hpp:30
Definition WsfLocalTrack.hpp:32
const std::list< WsfSA_Group * > & FocusedGroups() const
This returns a list of WsfSA_Groups that are focused.
Definition WsfSA_Assess.hpp:690
double CalculateRisk(double aSimTime, WsfSA_EntityPerception *aThreatItem)
Calculate the risk posed by the specified threat SA entity to the current platform Risk is normalized...
Definition WsfSA_Assess.cpp:3023
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedThreatEntities() const
This returns a const list of prioritized threat perceived entities, beginning with the highest priori...
Definition WsfSA_Assess.hpp:483
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftThreatEntities() const
This returns a const list of prioritized aircraft threat entity perceptions, beginning with the highe...
Definition WsfSA_Assess.hpp:499
std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedTargetGroups()
This returns a list of prioritized target unfocused groups, beginning with the highest priority targe...
Definition WsfSA_Assess.hpp:642
std::vector< size_t > PrioritizedTargetIds() const
This returns a list of prioritized target platform ids, beginning with the highest priority target an...
Definition WsfSA_Assess.hpp:573
void SetSelectedWeapon(const std::string &aSelectedWeapon)
This sets the name of the current selected weapon.
Definition WsfSA_Assess.hpp:436
double ExecuteCalculateGroupTargetValue(double aSimTime, WsfSA_Group *aTargetItem, bool aIsBogie)
This will call an AFSIM script function "CalculateGroupTargetValue".
Definition WsfSA_Assess.cpp:3478
double ExecuteCalculateUrgency(double aSimTime)
This will call an AFSIM script function "CalculateUrgency".
Definition WsfSA_Assess.cpp:3318
double Urgency() const
This returns a normalized urgency level, ranging from 0 (no urgency) to 1 (maximum urgency).
Definition WsfSA_Assess.hpp:736
const std::list< WsfSA_Group * > & UnfocusedGroups() const
This returns a list of WsfSA_Groups that are unfocused.
Definition WsfSA_Assess.hpp:693
unsigned int MaxPrioritizedThreats()
Return the max prioritized threat count the platform can handle.
Definition WsfSA_Assess.hpp:140
std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedThreatGroups()
This returns a list of prioritized threat unfocused groups, beginning with the highest priority threa...
Definition WsfSA_Assess.hpp:539
std::vector< std::string > PrioritizedTargetNames() const
This returns a list of prioritized target platform names, beginning with the highest priority target ...
Definition WsfSA_Assess.hpp:578
std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedTargetItems()
This returns a list of prioritized target perceived items, beginning with the highest priority target...
Definition WsfSA_Assess.hpp:589
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftThreatEntities()
This returns a list of prioritized aircraft threat entity perceptions, beginning with the highest pri...
Definition WsfSA_Assess.hpp:507
bool ExecuteCalcWeaponSupport(double aSimTime)
This will call an AFSIM script function "CalcWeaponSupport".
Definition WsfSA_Assess.cpp:3504
const std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedThreatGroups() const
This returns a const list of prioritized threat unfocused groups, beginning with the highest priority...
Definition WsfSA_Assess.hpp:531
bool IgnoreBogiesAsTargets() const
This returns true if bogies should be ignored as targets.
Definition WsfSA_Assess.hpp:763
std::vector< std::size_t > CurrentlyTrackedPlatformIds() const
This returns a list of platform ids that are currently being tracked.
Definition WsfSA_Assess.hpp:674
double ExecuteCalculateMissileThreatLevel(double aSimTime, WsfSA_EntityPerception *aThreatItem, bool aIsBogie)
This will call an AFSIM script function "CalculateMissileThreatLevel".
Definition WsfSA_Assess.cpp:3398
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileThreatEntities()
This returns a list of prioritized missile threat entity perceptions, beginning with the highest prio...
Definition WsfSA_Assess.hpp:523
double MissionRisk() const
This returns a normalized mission-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:748
double ExecuteCalculateDefensiveness(double aSimTime)
This will call an AFSIM script function "CalculateDefensiveness".
Definition WsfSA_Assess.cpp:3292
void CalculateOverallRisks(double aSimTime)
Calculate the overall risk, self-risk, flight-risk, package-risk, and mission-risk level for the curr...
Definition WsfSA_Assess.cpp:2374
double FlightRisk() const
This returns a normalized flight-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:742
std::string GetSelectedWeapon()
This returns the name of the current selected weapon.
Definition WsfSA_Assess.hpp:433
friend class WsfSA_Processor
Definition WsfSA_Assess.hpp:32
WsfSA_Assess(const WsfSA_Assess &)=default
bool PlatformIsCurrentlyBeingTracked(size_t aTgtPlatformIndex) const
This returns true if the specified target platform index is in the list of currently tracked platform...
Definition WsfSA_Assess.cpp:2085
bool SupportingWeapon() const
This returns true if at least one weapon is being supported.
Definition WsfSA_Assess.hpp:751
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftTargetEntities() const
This returns a const list of prioritized aircraft target entity perceptions, beginning with the highe...
Definition WsfSA_Assess.hpp:607
double CalculateThreatLevel(double aSimTime, WsfSA_PerceivedItem *aThreatItem, bool aIsBogie)
Calculate the threat level posed by the specified threat SA entity to the current platform.
Definition WsfSA_Assess.cpp:2591
bool IgnoreMissilesAsThreats() const
This returns true if missiles should be ignored as threats.
Definition WsfSA_Assess.hpp:754
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedTargetEntities() const
This returns a const list of prioritized target perceived entities, beginning with the highest priori...
Definition WsfSA_Assess.hpp:593
double ExecuteCalculateSelfRisk(double aSimTime)
This will call an AFSIM script function "CalculateSelfRisk".
Definition WsfSA_Assess.cpp:3188
double ExecuteCalculateEntityTargetValue(double aSimTime, WsfSA_EntityPerception *aTargetItem, bool aIsBogie)
This will call an AFSIM script function "CalculateTargetValue".
Definition WsfSA_Assess.cpp:3371
WsfSA_Assess & operator=(const WsfSA_Assess &)=delete
const std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedTargetItems() const
This returns a const list of prioritized target perceived items, beginning with the highest priority ...
Definition WsfSA_Assess.hpp:582
unsigned int MaxPrioritizedTargets()
Return the max prioritized target count the platform can handle.
Definition WsfSA_Assess.hpp:151
bool WeaponBayDoorsOpen() const
A placeholder function that, in the future, will return whether a platform's weapon bay doors are ope...
Definition WsfSA_Assess.hpp:424
const std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedThreatItems() const
This returns a const list of prioritized threat perceived items, beginning with the highest priority ...
Definition WsfSA_Assess.hpp:470
double ExecuteCalculateMissileTargetValue(double aSimTime, WsfSA_EntityPerception *aTargetItem, bool aIsBogie)
This will call an AFSIM script function "CalculateMissileTargetValue".
Definition WsfSA_Assess.cpp:3425
static bool CompareScore(const PlatormScorePairing &first, const PlatormScorePairing &second)
Definition WsfSA_Assess.cpp:3152
double CalculateMissileThreatLevel(double aSimTime, WsfSA_EntityPerception *aThreatItem, bool aIsBogie)
Calculate the threat level posed by the specified missile threat SA entity to the current platform.
Definition WsfSA_Assess.cpp:2859
double CalculateMissileTargetValue(double aSimTime, WsfSA_EntityPerception *aTargetItem, bool aIsBogie)
Calculate the target value presented by the specified missile SA entity to the current platform Targe...
Definition WsfSA_Assess.cpp:2937
double ExecuteCalculateRisk(double aSimTime)
This will call an AFSIM script function "CalculateRisk".
Definition WsfSA_Assess.cpp:3162
std::vector< size_t > PrioritizedThreatIds() const
This returns a list of prioritized threat platform ids, beginning with the highest priority threat an...
Definition WsfSA_Assess.hpp:460
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftTargetEntities()
This returns a list of prioritized aircraft target entity perceptions, beginning with the highest pri...
Definition WsfSA_Assess.hpp:614
WsfLocalTrack * GetPerceivedTrackedPlatformWithTarget(size_t aTgtPlatformIndex)
This returns a pointer to the first track containing the specified target platform index,...
Definition WsfSA_Assess.cpp:2098
bool GetWeaponBayOpen()
This returns the state of the weapon bay doors.
Definition WsfSA_Assess.hpp:427
void ResetMaxPrioritizedTargets()
Set the max prioritized target to the value provided during initialization (default is 0 where not pr...
Definition WsfSA_Assess.hpp:159
void SetMaxPrioritizedTargets(unsigned int aMax)
Set the prioritized target maximum.
Definition WsfSA_Assess.hpp:156
bool IgnoreMissilesAsTargets() const
This returns true if missiles should be ignored as targets.
Definition WsfSA_Assess.hpp:760
double GetCornerSpeed_KCAS() const
A placeholder function that, in the future, will return the minimum speed required to reach the platf...
Definition WsfSA_Assess.hpp:445
void SetWeaponBayOpen(bool aWeaponBayOpen)
This sets the state of the weapon bay doors.
Definition WsfSA_Assess.hpp:430
double CalculateTargetValue(double aSimTime, WsfSA_PerceivedItem *aTargetItem, bool aIsBogie)
Calculate the target value presented by the specified threat SA entity to the current platform Target...
Definition WsfSA_Assess.cpp:2721
void ResetMaxPrioritizedThreats()
Set the max prioritized target to the value provided during initialization (default is 0 where not pr...
Definition WsfSA_Assess.hpp:148
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedThreatEntities()
This returns a list of prioritized threat perceived entities, beginning with the highest priority thr...
Definition WsfSA_Assess.hpp:491
void CalculateOverallDefensiveness(double aSimTime)
Calculate the overall defensiveness level for the current platform Defensiveness is normalized,...
Definition WsfSA_Assess.cpp:2521
double ExecuteCalculatePackageRisk(double aSimTime)
This will call an AFSIM script function "CalculatePackageRisk".
Definition WsfSA_Assess.cpp:3240
double ExecuteCalculateGroupThreatLevel(double aSimTime, WsfSA_Group *aThreatItem, bool aIsBogie)
This will call an AFSIM script function "CalculateGroupThreatLevel".
Definition WsfSA_Assess.cpp:3452
double ExecuteCalculateMissionRisk(double aSimTime)
This will call an AFSIM script function "CalculateMissionRisk".
Definition WsfSA_Assess.cpp:3266
uint8_t AcceptableLevelOfRiskByte() const
This returns the acceptable level of risk, expressed as an uint8_t.
Definition WsfSA_Assess.hpp:727
double Risk() const
This returns a normalized risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:730
AcceptableRiskLevel
Definition WsfSA_Assess.hpp:717
@ MEDIUM
Definition WsfSA_Assess.hpp:719
@ LOW
Definition WsfSA_Assess.hpp:718
@ HIGH
Definition WsfSA_Assess.hpp:720
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileTargetEntities() const
This returns a const list of prioritized missile target entity perceptions, beginning with the highes...
Definition WsfSA_Assess.hpp:621
double PackageRisk() const
This returns a normalized package-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:745
void CalculateTrackedPlatforms(double aSimTime)
Calculate the currently tracked platforms for the current platform.
Definition WsfSA_Assess.cpp:2036
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileThreatEntities() const
This returns a const list of prioritized missile threat entity perceptions, beginning with the highes...
Definition WsfSA_Assess.hpp:515
double SelfRisk() const
This returns a normalized self-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:739
void SetMaxPrioritizedThreats(unsigned int aMax)
Set the prioritized threat maximum.
Definition WsfSA_Assess.hpp:145
std::vector< std::string > CurrentlyTrackedPlatformNames() const
This returns a list of platform names that are currently being tracked.
Definition WsfSA_Assess.hpp:677
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedTargetEntities()
This returns a list of prioritized target perceived entities, beginning with the highest priority tar...
Definition WsfSA_Assess.hpp:600
double ExecuteCalculateFlightRisk(double aSimTime)
This will call an AFSIM script function "CalculateFlightRisk".
Definition WsfSA_Assess.cpp:3214
AcceptableRiskLevel AcceptableLevelOfRisk() const
This returns the acceptable level of risk, expressed as an enum.
Definition WsfSA_Assess.hpp:724
std::vector< std::string > PrioritizedThreatNames() const
This returns a list of prioritized threat platform names, beginning with the highest priority threat ...
Definition WsfSA_Assess.hpp:465
const std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedTargetGroups() const
This returns a const list of prioritized target unfocused groups, beginning with the highest priority...
Definition WsfSA_Assess.hpp:635
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileTargetEntities()
This returns a list of prioritized missile target entity perceptions, beginning with the highest prio...
Definition WsfSA_Assess.hpp:628
std::string MissionTask() const
This returns a string indicating the primary mission task.
Definition WsfSA_Assess.hpp:714
WsfSA_Assess(WsfSA_Processor *aSA_ProcPtr, WsfSA_Processor::PerceiveData *aDataPtr)
Definition WsfSA_Assess.cpp:132
double CalculateDefensiveness(double aSimTime, WsfSA_EntityPerception *aThreatItem)
Calculate the defensiveness caused by the specified threat SA entity to the current platform.
Definition WsfSA_Assess.cpp:3066
double ExecuteCalculateEntityThreatLevel(double aSimTime, WsfSA_EntityPerception *aThreatItem, bool aIsBogie)
This will call an AFSIM script function "CalculateThreatLevel".
Definition WsfSA_Assess.cpp:3344
double CalculateUrgency(double aSimTime, WsfSA_EntityPerception *aThreatItem)
Calculate the urgency created by the specified threat SA entity to the current platform Urgency is no...
Definition WsfSA_Assess.cpp:3109
double Defensiveness() const
This returns a normalized defensiveness level, ranging from 0 (fully non-defensive) to 1 (fully defen...
Definition WsfSA_Assess.hpp:733
void CalculateOverallUrgency(double aSimTime)
Calculate the overall sense of urgency for the current platform Urgency is normalized,...
Definition WsfSA_Assess.cpp:2556
const std::list< WsfSA_Group * > & PerceivedGroups() const
This returns a list of SA_PerceivedGroups that are currently perceived and assessed.
Definition WsfSA_Assess.hpp:687
std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedThreatItems()
This returns a list of prioritized threat perceived items, beginning with the highest priority threat...
Definition WsfSA_Assess.hpp:478
bool IgnoreBogiesAsThreats() const
This returns true if bogies should be ignored as threats.
Definition WsfSA_Assess.hpp:757
Definition WsfSA_EntityPerception.hpp:37
Definition WsfSA_Group.hpp:24
WsfSA_Processor * GetSAP() const
Return a pointer to the SA Processor that owns this module.
Definition WsfSA_Module.hpp:34
WsfSA_Module(WsfSA_Processor *aSA_ProcPtr, WsfSA_Processor::PerceiveData *aDataPtr)
Definition WsfSA_Module.cpp:14
The WsfSA_PerceivedItem class is used as a base class for WsfSA_EntityPerception and WsfSA_Group,...
Definition WsfSA_PerceivedItem.hpp:38
Definition WsfSA_Processor.hpp:60
const WsfSA_Processor::PerceiveData * GetData() const
Return a const reference to the perceive data.
Definition WsfSA_Processor.hpp:274
AircraftSignatureParameters()
Definition WsfSA_Assess.hpp:767
double fuselageFrontalArea
Definition WsfSA_Assess.hpp:800
double engineInletArea
Definition WsfSA_Assess.hpp:803
double engineExitArea
Definition WsfSA_Assess.hpp:804
double wingArea
Definition WsfSA_Assess.hpp:801
double tailArea
Definition WsfSA_Assess.hpp:802
double sweepAngle
Definition WsfSA_Assess.hpp:805
double signatureReductionFactorNose
Definition WsfSA_Assess.hpp:807
double signatureReductionFactorOverall
Definition WsfSA_Assess.hpp:806
AircraftSignatureParameters(double aFuselageFrontalArea, double aWingArea, double aTailArea, double aEngineInletArea, double aEngineExitArea, double aSweepAngle, double aSignatureReductionFactorOverall, double aSignatureReductionFactorNose, double aNoseSignatureReductionAngle)
Definition WsfSA_Assess.hpp:780
double noseSignatureReductionAngle
Definition WsfSA_Assess.hpp:808
Definition WsfSA_Assess.hpp:39
bool tgtTracked
Definition WsfSA_Assess.hpp:59
float currentRange_nm
Definition WsfSA_Assess.hpp:45
float wezMaximum_nm
Definition WsfSA_Assess.hpp:54
std::string targetType
Definition WsfSA_Assess.hpp:42
float targetValue
Definition WsfSA_Assess.hpp:50
float aspectAngle_deg
Definition WsfSA_Assess.hpp:44
float risk
Definition WsfSA_Assess.hpp:56
float wezNoEscape_nm
Definition WsfSA_Assess.hpp:55
std::string targetName
Definition WsfSA_Assess.hpp:41
float threatLevel
Definition WsfSA_Assess.hpp:49
float urgency
Definition WsfSA_Assess.hpp:58
float detectionRange_nm
Definition WsfSA_Assess.hpp:51
float currentDeltaAlt_ft
Definition WsfSA_Assess.hpp:46
float defensiveness
Definition WsfSA_Assess.hpp:57
float wezDesiredRange_nm
Definition WsfSA_Assess.hpp:52
float trackQuality
Definition WsfSA_Assess.hpp:47
float wezMinimum_nm
Definition WsfSA_Assess.hpp:53
bool acceptableWez
Definition WsfSA_Assess.hpp:60
std::string targetCID
Definition WsfSA_Assess.hpp:48
size_t targetIndex
Definition WsfSA_Assess.hpp:40
float angleOff_deg
Definition WsfSA_Assess.hpp:43
Definition WsfSA_Assess.hpp:906
PlatormScorePairing(WsfPlatform *aPlatform)
Definition WsfSA_Assess.hpp:908
PlatormScorePairing()
Definition WsfSA_Assess.hpp:907
WsfPlatform * platform
Definition WsfSA_Assess.hpp:915
PlatormScorePairing(WsfPlatform *aPlatform, double aScore)
Definition WsfSA_Assess.hpp:909
double score
Definition WsfSA_Assess.hpp:916
Definition WsfSA_Processor.hpp:86
std::list< WsfSA_Group * > mCurrentlyPerceivedGroups
Perceived groups (these persist).
Definition WsfSA_Processor.hpp:119