26#ifndef WSF_WM_AI_ENGAGEMENT_MOD_HPP
27#define WSF_WM_AI_ENGAGEMENT_MOD_HPP
44#include <iadsLib/weaponsManagerEngageInterface.hpp>
45#include <iadsLib/assignmentContainers.hpp>
46#include <iadsLib/assessmentRecord.hpp>
53class WeaponsManagerEngagementInterface;
66 void Run(
const double sim_time_s)
override;
83 virtual void Perform(
const double sim_time_s);
84 virtual bool isFinished(
const double sim_time_s);
104 void Perform(
const double sim_time_s)
override;
105 bool isFinished(
const double sim_time_s)
override;
108 bool BeamTimeElapsed(
const double sim_time_s)
const {
return sim_time_s >= m_end_beam_s; }
110 double m_start_beam_s;
118 void Perform(
const double sim_time_s)
override;
119 bool isFinished(
const double sim_time_s)
override;
128 void Perform(
const double sim_time_s)
override;
129 bool isFinished(
const double sim_time_s)
override;
137 il::idRecord m_assigned_id;
138 bool m_has_generated_action;
145 void Perform(
const double sim_time_s)
override;
146 bool isFinished(
const double sim_time_s)
override;
154 il::idRecord m_assigned_id;
155 bool m_has_generated_action;
161 TakeAction(
const il::idRecord& assignmentLocalTrackId,
const il::idRecord& assignmentAssignedId,
const il::eTakeAction& actionType,
const double simTime,
const double actionDuration,
WsfWMAIEngagementMod* wm_em);
162 void Perform(
const double sim_time_s)
override;
163 bool isFinished(
const double sim_time_s)
override;
167 il::idRecord m_assignment_local_track_id;
168 il::idRecord m_assignment_assigned_id;
169 il::eTakeAction m_action_type;
170 double m_action_duration_s;
171 double m_action_complete_time_s;
180 std::shared_ptr<WsfInterceptCalculator>
GetScriptCalculator(
const il::evaluationAssignment& assignment);
185 virtual il::assessmentRecord
AssessEngagement(
const double sim_time_s, il::evaluationAssignment& assignment,
const std::shared_ptr<il::weaponRecord> weapon,
const double delay_time_s = 0);
187 virtual bool IsEngagementComplete(
const il::evaluationAssignment& assignment,
bool& was_successful)
const;
192 std::stack<std::shared_ptr<Behavior>> m_behavior_stack;
193 void Push(std::shared_ptr<Behavior> behavior);
194 std::shared_ptr<Behavior> Top();
199 int RWRDetectedThreatCount()
const;
200 WsfTrackList RWRDetectedThreatsInResponseRange(
const double sim_time_s);
201 int RWRDetectedThreatCountInResponseRange(
const double sim_time_s);
204 WsfLocalTrack* RWRHighPriorityThreat(
const double sim_time_s);
205 bool RWRResponse()
const;
206 double LastLockTime()
const;
209 void LogDebugInfo(
const double sim_time_s);
210 void AssessResponse(il::moeLoggingInterface& aMOELogger,
const double sim_time_s);
211 bool AssessBeamResponse(il::moeLoggingInterface& aMOELogger,
const double sim_time_s,
const il::idRecord& attacker_unit_id,
WsfSpatialDomain domain);
212 bool AttackerEngagedOrBelievedDead(
const il::evaluationAssignment& attacker)
const;
213 bool AttackerEngaged(
const il::evaluationAssignment& attacker)
const;
214 bool AttackerEngaged(
const il::idRecord& attacker_local_track_id)
const;
215 bool AddEvadeBehavior(il::moeLoggingInterface& aMOELogger,
const double sim_time_s);
216 bool AddEvasionBehavior(
const double sim_time_s);
217 double getRWRResponseBeamDuration()
const;
218 void BeamResponse(
const double sim_time_s,
const il::idRecord& attacker_unit_id);
219 bool AddTakeActionBehavior(
const double sim_time_s);
220 double getDistanceToTrack(
const il::idRecord& local_track_id,
const double sim_time_s);
221 double getGroundRangeToTrack(
const il::idRecord& local_track_id,
const double sim_time_s);
222 void getGroundRangeAndGroundRangeDA(
const il::trackRecord* track,
const double sim_time_s,
double& ground_range,
double& ground_range_DA);
224 void Egress(
const double sim_time_s);
225 void Engage(
const double sim_time_s,
const il::evaluationAssignment& assignment);
227 WsfGeoPoint setMoveInDirection(
const vm::Vector3<double> velocity,
const double sim_time_s,
const double move_time_s);
229 bool InsideWEZRange(
double rAero,
double rMax1,
double rMax2,
double rMin,
double range);
230 bool AssessAction(
const double sim_time_s,
const il::idRecord& assignment, il::eTakeAction& actionType,
double& actionDuration);
231 void CompleteAction();
232 void PerformSelfDefense();
233 void CANTCOAllAssignments(
const std::string& reason);
235 bool EmployingActionTechniques();
238 bool TTRLock(
const il::idRecord& attacker_unit_id);
243 il::idRecord m_current_assignment_local_track_id;
244 il::idRecord m_current_assignment_assigned_id;
double simTime
Definition WsfScriptTrackClass.cpp:1880
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfTrackListT< WsfTrack > WsfTrackList
Definition WsfTrackList.hpp:88
WsfSpatialDomain
A collection of enumerations and type definitions that are used across a number of components.
Definition WsfTypes.hpp:32
Definition WsfBMWeaponsManager.hpp:50
Definition WsfBehaviorTree.hpp:31
Definition WsfGeoPoint.hpp:29
Definition WsfLocalTrack.hpp:32
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfTrackId.hpp:33
void Perform(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:322
void setLocalTrackId(const il::idRecord &local_track_id)
Definition WsfWMAIEngagementMod.hpp:107
BehaviorType getType() const override
Definition WsfWMAIEngagementMod.hpp:106
bool BeamTimeElapsed(const double sim_time_s) const
Definition WsfWMAIEngagementMod.hpp:108
Beam(const il::idRecord &local_track_id, WsfWMAIEngagementMod *wm_em, const double sim_time_s)
Definition WsfWMAIEngagementMod.cpp:312
bool isFinished(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:372
static const std::string UnknownString
Definition WsfWMAIEngagementMod.hpp:94
static std::string getBehaviorTypeString(const BehaviorType type)
Definition WsfWMAIEngagementMod.cpp:74
static const std::string TakeActionString
Definition WsfWMAIEngagementMod.hpp:94
WsfWMAIEngagementMod * m_wm_em
Definition WsfWMAIEngagementMod.hpp:92
BehaviorType
Definition WsfWMAIEngagementMod.hpp:74
@ TAKEACTION
Definition WsfWMAIEngagementMod.hpp:78
@ INTERCEPT
Definition WsfWMAIEngagementMod.hpp:79
@ DRAG
Definition WsfWMAIEngagementMod.hpp:77
@ PURSUE
Definition WsfWMAIEngagementMod.hpp:80
@ BEAM
Definition WsfWMAIEngagementMod.hpp:76
@ UNKNOWN
Definition WsfWMAIEngagementMod.hpp:75
virtual BehaviorType getType() const =0
static const std::string BeamString
Definition WsfWMAIEngagementMod.hpp:94
const il::idRecord getLocalTrackId() const
Definition WsfWMAIEngagementMod.hpp:86
static const std::string DragString
Definition WsfWMAIEngagementMod.hpp:94
static const std::string InterceptString
Definition WsfWMAIEngagementMod.hpp:94
static BehaviorType getBehaviorTypeFromString(const std::string type)
Definition WsfWMAIEngagementMod.cpp:93
il::idRecord m_local_track_id
Definition WsfWMAIEngagementMod.hpp:93
virtual bool isFinished(const double sim_time_s)
Definition WsfWMAIEngagementMod.cpp:68
static const std::string PursueString
Definition WsfWMAIEngagementMod.hpp:94
virtual void Perform(const double sim_time_s)
Definition WsfWMAIEngagementMod.cpp:63
Behavior(WsfWMAIEngagementMod *wm_em, il::idRecord local_track_id)
Definition WsfWMAIEngagementMod.cpp:57
BehaviorType getType() const override
Definition WsfWMAIEngagementMod.hpp:120
void Perform(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:385
Drag(const il::idRecord &local_track, WsfWMAIEngagementMod *wm_em)
Definition WsfWMAIEngagementMod.cpp:380
bool isFinished(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:422
void setLocalTrackId(const il::idRecord &local_track_id)
Definition WsfWMAIEngagementMod.hpp:121
const il::idRecord getAssignedId() const
Definition WsfWMAIEngagementMod.hpp:132
BehaviorType getType() const override
Definition WsfWMAIEngagementMod.hpp:130
Intercept(const il::evaluationAssignment &assignment, WsfWMAIEngagementMod *wm_em)
Definition WsfWMAIEngagementMod.cpp:118
bool hasGeneratedAction() const
Definition WsfWMAIEngagementMod.hpp:133
void setHasGeneratedAction()
Definition WsfWMAIEngagementMod.hpp:134
bool isFinished(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:157
void Perform(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:125
void setHasGeneratedAction()
Definition WsfWMAIEngagementMod.hpp:151
bool isFinished(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:232
bool hasGeneratedAction() const
Definition WsfWMAIEngagementMod.hpp:150
BehaviorType getType() const override
Definition WsfWMAIEngagementMod.hpp:147
Pursue(const il::evaluationAssignment &assignment, const bool generated_action, WsfWMAIEngagementMod *wm_em)
Definition WsfWMAIEngagementMod.cpp:190
void Perform(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:197
const il::idRecord getAssignedId() const
Definition WsfWMAIEngagementMod.hpp:149
Definition WsfWMAIEngagementMod.hpp:159
BehaviorType getType() const override
Definition WsfWMAIEngagementMod.hpp:164
TakeAction(const il::idRecord &assignmentLocalTrackId, const il::idRecord &assignmentAssignedId, const il::eTakeAction &actionType, const double simTime, const double actionDuration, WsfWMAIEngagementMod *wm_em)
Definition WsfWMAIEngagementMod.cpp:247
void Perform(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:260
bool isFinished(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:307
tScriptInterceptCache m_script_calculators
Definition WsfWMAIEngagementMod.hpp:179
virtual bool TimeForSecondSalvo(const il::evaluationAssignment &assignment, WsfWeapon *weapon, const double sim_time_s) const
Definition WsfWMAIEngagementMod.cpp:1851
void Run(const double sim_time_s) override
Definition WsfWMAIEngagementMod.cpp:529
std::map< il::idRecord, std::shared_ptr< WsfInterceptCalculator > > tScriptInterceptCache
Definition WsfWMAIEngagementMod.hpp:178
WsfBehaviorTree m_behavior_tree
Definition WsfWMAIEngagementMod.hpp:176
virtual il::assessmentRecord AssessEngagement(const double sim_time_s, il::evaluationAssignment &assignment, const std::shared_ptr< il::weaponRecord > weapon, const double delay_time_s=0)
Definition WsfWMAIEngagementMod.cpp:914
virtual bool IsEngagementComplete(const il::evaluationAssignment &assignment, bool &was_successful) const
Definition WsfWMAIEngagementMod.cpp:1777
WsfBMWeaponsManager * m_wm_component
Definition WsfWMAIEngagementMod.hpp:175
bool m_has_behavior_tree
Definition WsfWMAIEngagementMod.hpp:177
bool Initialize2(const double sim_time)
Definition WsfWMAIEngagementMod.cpp:480
virtual bool AssignmentHasValidTrack(const il::evaluationAssignment &assignment) const
Definition WsfWMAIEngagementMod.cpp:1830
void AddBehaviorsToStack(const double sim_time_s)
Definition WsfWMAIEngagementMod.cpp:563
bool Initialize(const double sim_time)
Definition WsfWMAIEngagementMod.cpp:472
virtual void RunDefaultEngagement(const double sim_time_s)
Definition WsfWMAIEngagementMod.cpp:541
std::shared_ptr< WsfInterceptCalculator > GetScriptCalculator(const il::evaluationAssignment &assignment)
Definition WsfWMAIEngagementMod.cpp:1757
WsfWMAIEngagementMod(const WsfScenario &aScenario, WsfBMWeaponsManager *wm_component)
Definition WsfWMAIEngagementMod.cpp:458
bool ProcessInput(UtInput &aInput)
Definition WsfWMAIEngagementMod.cpp:495
Definition WsfWeapon.hpp:63
Definition WsfWeaponsManagerAI.hpp:35
Definition WsfAssetManager.hpp:34