WSF
WsfEW_RadiusEffect.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEW_RADIUSEFFECT_HPP
13#define WSFEW_RADIUSEFFECT_HPP
14
15#include "wsf_mil_export.h"
16
17#include <iosfwd>
18#include <map>
19
20class UtInput;
21
22#include "WsfEM_Interaction.hpp"
23class WsfEW_EA;
24class WsfEW_EP;
25#include "WsfEW_Effect.hpp"
26#include "WsfEW_Types.hpp"
27
28
32
33class WSF_MIL_EXPORT WsfEW_RadiusEffect : public WsfEW_Effect
34{
35public:
46
47 using RadiusTypeToValueMap = std::map<RadiusLimitType, double>;
48
51 ~WsfEW_RadiusEffect() override = default;
52 WsfEW_Effect* Clone() const override;
53 bool Initialize(WsfSimulation& aSimulation) override;
54 bool ProcessInput(UtInput& aInput) override;
55
56 void ApplyUnmitigatedEffect(WsfEW_Effects& aEW_Effects) const override;
57
58 void ApplyMitigatedEffect(WsfEW_Effect* aEW_EffectPtr, WsfEW_Effects& aEW_Effects) const override;
59
60 void UpdateEffects(double aSimTime,
61 const WsfEM_Interaction& aTargetInteraction,
62 const WsfEM_Interaction& aJammerToTgtInteraction,
63 const ut::optional<WsfEM_Interaction>& aTgtToJammerInteraction,
64 WsfEW_Effects& aEW_Effects,
65 WsfEW_Effect* aEW_EffectPtr = nullptr) override;
66
68
69 int GetRadiusLimitMask(WsfStringId aSystemTypeId) const;
70
71 double GetRadiusFactor(WsfStringId aSystemTypeId) const;
72 double GetRadiusFactor(WsfStringId aSystemTypeId, RadiusLimitType aJRL_Type) const;
74
75protected:
76 class WSF_MIL_EXPORT RadiusData : public WsfEW_Effect::EffectData
77 {
78 public:
79 RadiusData();
80 RadiusData& operator=(const RadiusData&) = delete;
81 ~RadiusData() override = default;
82
83 bool ProcessInput(UtInput& aInput) override;
84 bool Initialize(WsfSimulation& aSimulation) override;
85
86 EW_EffectData* Clone() const override;
87
88 void Reset() override;
89
90 // double GetRadiusFactor() const;
91 double GetRadiusFactor(RadiusLimitType aJRL_Type) const;
92 void SetRadiusFactor(unsigned int aJRL_Mask, double aRadiusFactor);
93
94 int GetRadiusLimitMask() const { return mRadiusLimitMask; }
95
96 protected:
97 RadiusData(const RadiusData& aSrc) = default;
98
99 private:
100 int mRadiusLimitMask;
101 RadiusTypeToValueMap mRadiusFactorMap;
102 };
103
105
107
108 EffectData* NewEffectData() override { return new RadiusData(); }
109 EffectData* PropagateEffectDataPtr(WsfStringId aSystemTypeId) override;
111
112private:
113 using RadiusDataMap =
114 std::map<WsfStringId, RadiusData*>;
115
116 RadiusDataMap mRadiusDataMap;
117
118 RadiusLimitType mCurrentJRL_Type;
119};
120
121#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfEM_Interaction.hpp:68
Definition WsfEW_EA.hpp:37
Definition WsfEW_EP.hpp:36
Base effect data used to derive from in inheriting effect classes.
Definition WsfEW_Effect.hpp:317
WsfEW_Effect * Clone() const override=0
virtual void UpdateEffects(double aSimTime, const WsfEM_Interaction &aTargetInteraction, const WsfEM_Interaction &aJammerToTgtInteraction, const ut::optional< WsfEM_Interaction > &aTgtToJammerInteraction, WsfEW_Effects &aEW_Effects, WsfEW_Effect *aEW_EffectPtr=nullptr)
Definition WsfEW_Effect.cpp:374
virtual bool Initialize(WsfSimulation &aSimulation)
Definition WsfEW_Effect.cpp:69
virtual EffectData * PropagateEffectDataPtr(WsfStringId aSystemTypeId)
Definition WsfEW_Effect.cpp:619
virtual void ApplyUnmitigatedEffect(WsfEW_Effects &aEW_Effects) const =0
virtual void ApplyMitigatedEffect(WsfEW_Effect *aEW_EffectPtr, WsfEW_Effects &aEW_Effects) const =0
bool ProcessInput(UtInput &aInput) override
Definition WsfEW_Effect.cpp:110
WsfEW_Effect()=default
Definition WsfEW_Effects.hpp:41
Definition WsfEW_RadiusEffect.hpp:77
void SetRadiusFactor(unsigned int aJRL_Mask, double aRadiusFactor)
Definition WsfEW_RadiusEffect.cpp:360
void Reset() override
Definition WsfEW_RadiusEffect.cpp:343
int GetRadiusLimitMask() const
Definition WsfEW_RadiusEffect.hpp:94
RadiusData()
Definition WsfEW_RadiusEffect.cpp:261
double GetRadiusFactor(RadiusLimitType aJRL_Type) const
Definition WsfEW_RadiusEffect.cpp:353
RadiusData & operator=(const RadiusData &)=delete
RadiusData(const RadiusData &aSrc)=default
~RadiusData() override=default
double GetRadiusFactor(WsfStringId aSystemTypeId) const
Definition WsfEW_RadiusEffect.cpp:240
WsfEW_RadiusEffect()
Definition WsfEW_RadiusEffect.cpp:26
std::map< RadiusLimitType, double > RadiusTypeToValueMap
Definition WsfEW_RadiusEffect.hpp:47
EffectData * NewEffectData() override
Definition WsfEW_RadiusEffect.hpp:108
WsfEW_RadiusEffect & operator=(const WsfEW_RadiusEffect &)=delete
~WsfEW_RadiusEffect() override=default
RadiusLimitType
Definition WsfEW_RadiusEffect.hpp:39
@ cJRL_OUTSIDE
Limitation for target range OUTSIDE jammer range wrt receiver.
Definition WsfEW_RadiusEffect.hpp:42
@ cJRL_EQUAL
Limitation for target range EQUAL to jammer range wrt receiver.
Definition WsfEW_RadiusEffect.hpp:44
@ cJRL_BOTH
Limitation for target range INSIDE & OUTSIDE jammer range wrt to receiver.
Definition WsfEW_RadiusEffect.hpp:43
@ cJRL_INSIDE
Limitation for target range INSIDE jammer range wrt receiver.
Definition WsfEW_RadiusEffect.hpp:41
@ cJRL_NONE
No target jammer range limitations defined.
Definition WsfEW_RadiusEffect.hpp:40
int GetRadiusLimitMask(WsfStringId aSystemTypeId) const
Definition WsfEW_RadiusEffect.cpp:230
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Copyrights Multiple, All Rights Reserved