WSF
WsfWMSAMEngagementMod.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// The use, dissemination or disclosure of data in this file is subject to
7// limitation or restriction. See accompanying README and LICENSE for details.
8// ****************************************************************************
9/*******************************************************************************
10*
11* File: WsfWMSAMEngagementMod.hpp
12*
13* Classification: UNCLASSIFIED
14*
15* Details:
16*
17* Contract Number:
18* Contractor Name: Radiance Technologies
19* Address: 350 Wynn Drive
20* Huntsville, AL 35805
21*
22* Abstract:
23*
24*******************************************************************************/
25
26#ifndef WSF_WM_SAM_ENGAGEMENT_MOD_HPP
27#define WSF_WM_SAM_ENGAGEMENT_MOD_HPP
28
29#include <map>
30
31#include <memory>
32
33#include <UtInput.hpp>
34#include <WsfSimulation.hpp>
35#include <WsfBehaviorTree.hpp>
36#include <WsfTrackId.hpp>
37
38#include <WsfBMUtils.hpp>
39#include <WsfInterceptCalc.hpp>
40
41#include <iadsLib/weaponsManagerEngageInterface.hpp>
42#include <iadsLib/assignmentContainers.hpp>
43#include <iadsLib/assessmentRecord.hpp>
44
46class WsfSimulation;
47
48class WsfWMSAMEngagementMod : public il::WeaponsManagerEngagementInterface
49{
50 public:
51 WsfWMSAMEngagementMod(const WsfScenario& aScenario, WsfBMWeaponsManager* wm_component);
53
54 bool Initialize(const double sim_time);
55 bool Initialize2(const double sim_time);
56 bool ProcessInput(UtInput& aInput);
57
58 virtual void Run(const double sim_time_s);
59
60 protected:
61
65 typedef std::map <il::idRecord, std::shared_ptr<WsfInterceptCalculator>> tScriptInterceptCache;
67 std::shared_ptr<WsfInterceptCalculator> GetScriptCalculator(const il::evaluationAssignment& assignment);
68
69 virtual void RunDefaultEngagement(const double sim_time_s);
70 virtual bool AttemptAssignmentEngagement(const double sim_time_s, il::evaluationAssignment& assignment, WsfPlatform* owning_plat, WsfWeapon* weapon, WsfLocalTrack* track);
71 virtual il::assessmentRecord AssessEngagement(const double sim_time_s, il::evaluationAssignment& assignment, WsfPlatform* owning_plat, WsfWeapon* weapon, WsfLocalTrack* track, const double assignment_delay_time_s = 0, const double expected_execution_delay_s = 0, const bool project = false);
72 virtual void ExecuteEngagements(const double sim_time_s);
73 virtual void MonitorEngagements(const double sim_time_s);
74 virtual bool IsEngagedAgainstAssignment(const il::evaluationAssignment& assignment) const;
75 virtual bool IsEngagementComplete(const il::evaluationAssignment& assignment, bool& was_successful) const;
76 virtual int ShotsFiredForEngagement(const il::evaluationAssignment& assignment) const;
77 virtual double GetLastEngagementTime(const il::evaluationAssignment& assignment) const;
78 virtual double GetLastFireTimeForEngagement(const il::evaluationAssignment& assignment) const;
79 virtual bool EngagementExpired(const double sim_time_s, const il::evaluationAssignment& assignment) const;
80 virtual bool AssignmentHasValidTrack(const il::evaluationAssignment& eval_assignment) const;
81 virtual bool TimeForSecondSalvo(const il::evaluationAssignment& assignment, WsfWeapon* weapon) const;
82
83 private:
84
85 class PendingEngagement
86 {
87 public:
88 PendingEngagement(const double& sim_time, il::evaluationAssignment& assignment, WsfSimulation* sim, const il::assessmentRecord& assessment);
89
90 int GetShotsFiredForAssignment() const;
91 int GetWeaponsDetonatedForAssignment() const;
92 double GetLastFireTimeForAssignment() const;
93 double GetLastDetonationTimeForAssignment() const;
94
95 int GetActiveWeaponsForAssignment() const;
96 double GetCommandedTime() const;
97 il::evaluationAssignment& GetAssignment();
98
99 bool IsNextFireTimeSet() const;
100 double GetNextFireTime() const;
101 void SetNextFireTime(const double time_s);
102 void ResetNextFireTime();
103
104 WsfTrackId GetAssignedTrackID() const;
105 private:
106 WsfWeapon* GetAssignedWeapon() const;
107
108 double m_command_time;
109
110 bool m_next_fire_time_set;
111 double m_next_fire_time;
112
113 il::evaluationAssignment m_assignment;
114
115 WsfSimulation* m_sim_ptr;
116 il::assessmentRecord m_assessment;
117 // upon creation of the engagement, we record the existing counts for the
118 // weapon against the track since we can't reset these within AFSIM and it
119 // retains counts across the entire simulation run for each engagement, we
120 // bookkeep these ourselves
121 int m_wpn_initial_rounds_fired_at;
122 int m_wpn_initial_rounds_completed_for;
123 int m_wpn_initial_weapons_active_and_pending_for;
124 };
125
126 typedef il::idRecord tEngagementTrackId;
127 std::map<tEngagementTrackId, PendingEngagement> m_engagements;
128};
129
130#endif
Definition WsfBMWeaponsManager.hpp:50
Definition WsfBehaviorTree.hpp:31
Definition WsfLocalTrack.hpp:32
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
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
virtual il::assessmentRecord AssessEngagement(const double sim_time_s, il::evaluationAssignment &assignment, WsfPlatform *owning_plat, WsfWeapon *weapon, WsfLocalTrack *track, const double assignment_delay_time_s=0, const double expected_execution_delay_s=0, const bool project=false)
Definition WsfWMSAMEngagementMod.cpp:421
virtual bool EngagementExpired(const double sim_time_s, const il::evaluationAssignment &assignment) const
Definition WsfWMSAMEngagementMod.cpp:693
bool m_has_behavior_tree
Definition WsfWMSAMEngagementMod.hpp:64
bool ProcessInput(UtInput &aInput)
Definition WsfWMSAMEngagementMod.cpp:253
WsfBehaviorTree m_behavior_tree
Definition WsfWMSAMEngagementMod.hpp:63
std::shared_ptr< WsfInterceptCalculator > GetScriptCalculator(const il::evaluationAssignment &assignment)
Definition WsfWMSAMEngagementMod.cpp:457
virtual bool TimeForSecondSalvo(const il::evaluationAssignment &assignment, WsfWeapon *weapon) const
Definition WsfWMSAMEngagementMod.cpp:729
virtual bool IsEngagementComplete(const il::evaluationAssignment &assignment, bool &was_successful) const
Definition WsfWMSAMEngagementMod.cpp:597
virtual void RunDefaultEngagement(const double sim_time_s)
Definition WsfWMSAMEngagementMod.cpp:276
virtual int ShotsFiredForEngagement(const il::evaluationAssignment &assignment) const
Definition WsfWMSAMEngagementMod.cpp:644
bool Initialize(const double sim_time)
Definition WsfWMSAMEngagementMod.cpp:229
virtual bool AssignmentHasValidTrack(const il::evaluationAssignment &eval_assignment) const
Definition WsfWMSAMEngagementMod.cpp:708
virtual double GetLastFireTimeForEngagement(const il::evaluationAssignment &assignment) const
Definition WsfWMSAMEngagementMod.cpp:681
virtual bool AttemptAssignmentEngagement(const double sim_time_s, il::evaluationAssignment &assignment, WsfPlatform *owning_plat, WsfWeapon *weapon, WsfLocalTrack *track)
Definition WsfWMSAMEngagementMod.cpp:375
virtual void Run(const double sim_time_s)
Definition WsfWMSAMEngagementMod.cpp:264
virtual void MonitorEngagements(const double sim_time_s)
Definition WsfWMSAMEngagementMod.cpp:526
virtual bool IsEngagedAgainstAssignment(const il::evaluationAssignment &assignment) const
Definition WsfWMSAMEngagementMod.cpp:591
WsfBMWeaponsManager * m_wm_component
Definition WsfWMSAMEngagementMod.hpp:62
tScriptInterceptCache m_script_calculators
Definition WsfWMSAMEngagementMod.hpp:66
virtual void ExecuteEngagements(const double sim_time_s)
Definition WsfWMSAMEngagementMod.cpp:477
WsfWMSAMEngagementMod(const WsfScenario &aScenario, WsfBMWeaponsManager *wm_component)
Definition WsfWMSAMEngagementMod.cpp:216
bool Initialize2(const double sim_time)
Definition WsfWMSAMEngagementMod.cpp:238
std::map< il::idRecord, std::shared_ptr< WsfInterceptCalculator > > tScriptInterceptCache
Definition WsfWMSAMEngagementMod.hpp:65
virtual double GetLastEngagementTime(const il::evaluationAssignment &assignment) const
Definition WsfWMSAMEngagementMod.cpp:655
Definition WsfWeapon.hpp:63
Copyrights Multiple, All Rights Reserved