WSF
WsfChaffWeapon.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// 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#ifndef WSFCHAFFWEAPON_HPP
12#define WSFCHAFFWEAPON_HPP
13
14#include "wsf_nx_export.h"
15
16#include <map>
17
19#include "WsfChaffEjector.hpp"
20#include "WsfExplicitWeapon.hpp"
21
23class WSF_NX_EXPORT WsfChaffWeapon : public WsfExplicitWeapon
24{
25public:
26 WsfChaffWeapon(WsfScenario& aScenario);
27 ~WsfChaffWeapon() override = default;
28
30 {
31 public:
32 using Ejectors = std::vector<std::string>;
33
34 ChaffOptions(int aNumberParcels, // Number of parcels requested (from each ejector)
35 double aDropInterval, // Time separation between parcels in cloud
36 const Ejectors& aEjectors)
37 : SalvoOptions(aNumberParcels, aDropInterval)
38 , mEjectors(aEjectors)
39 {
40 }
41
42 Ejectors mEjectors; // Names of ejectors that are active
43 };
44
45 virtual bool DropChaffCloud(double aSimTime, ChaffOptions& aOptions);
46
50 FireResult Fire(double aSimTime, const FireTarget& aTarget, const FireOptions& aSettings) override;
51
52 // Total number of chaff parcels remaining across all ejectors
53 double GetQuantityRemaining() const override;
54
56
57 WsfWeapon* Clone() const override;
58 bool Initialize(double aSimTime) override;
59 bool ProcessInput(UtInput& aInput) override;
60 const char* GetScriptClassName() const override;
62
63protected:
64 WsfChaffWeapon(const WsfChaffWeapon& aSrc) = default;
65 WsfChaffWeapon& operator=(const WsfChaffWeapon& aSrc) = delete;
66
67 void SetLaunchState(double aSimTime, WsfPlatform* aPlatformPtr, const FireOptions& aOptions) override;
68
69 bool WeaponPlatformUserInitialize(double aSimTime, WsfPlatform* aWeaponPlatformPtr, const WsfTrack* aTrackPtr) override;
70
71 bool AddWeaponToSimulation(double aSimTime,
72 WsfPlatform* aWeaponPlatformPtr,
73 const WsfTrack* aLaunchingTrackPtr,
74 const FireOptions& aSettings) override;
75
76private:
77 WsfChaffEjector* GetEjectorByName(WsfStringId aEjectorName) const;
78
79 using CloudMap = std::map<int, std::shared_ptr<WsfChaffCloudInterface>>; // Key is cloud id
80
81 int mNextCloudId; // The next unique ID for a chaff cloud drop
82 CloudMap mCloudMap;
83 double mCloudUpdateInterval; // Update interval for chaff mover to update parcels
84 bool mDrawCloudApproximations; // Use WsfDraw to draw cloud approximations for debugging
85};
86#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfChaffEjector.hpp:24
Definition WsfChaffWeapon.hpp:30
ChaffOptions(int aNumberParcels, double aDropInterval, const Ejectors &aEjectors)
Definition WsfChaffWeapon.hpp:34
Ejectors mEjectors
Definition WsfChaffWeapon.hpp:42
std::vector< std::string > Ejectors
Definition WsfChaffWeapon.hpp:32
WsfChaffWeapon(const WsfChaffWeapon &aSrc)=default
WsfChaffWeapon & operator=(const WsfChaffWeapon &aSrc)=delete
virtual bool DropChaffCloud(double aSimTime, ChaffOptions &aOptions)
Definition WsfChaffWeapon.cpp:34
WsfChaffWeapon(WsfScenario &aScenario)
Definition WsfChaffWeapon.cpp:23
~WsfChaffWeapon() override=default
virtual void SetLaunchState(double aSimTime, WsfPlatform *aPlatformPtr, const FireOptions &aOptions)
Definition WsfExplicitWeapon.cpp:281
virtual bool AddWeaponToSimulation(double aSimTime, WsfPlatform *aWeaponPlatformPtr, const WsfTrack *aLaunchingTrackPtr, const FireOptions &aSettings)
Definition WsfExplicitWeapon.cpp:884
bool Initialize(double aSimTime) override
Definition WsfExplicitWeapon.cpp:151
WsfWeapon * Clone() const override
Standard Clone() method.
Definition WsfExplicitWeapon.cpp:144
WsfExplicitWeapon(WsfScenario &aScenario)
Definition WsfExplicitWeapon.cpp:99
FireResult Fire(double aSimTime, const FireTarget &aTarget, const FireOptions &aSettings) override
Definition WsfExplicitWeapon.cpp:417
bool ProcessInput(UtInput &aInput) override
Definition WsfExplicitWeapon.cpp:180
double GetQuantityRemaining() const override
Definition WsfExplicitWeapon.cpp:719
virtual bool WeaponPlatformUserInitialize(double aSimTime, WsfPlatform *aWeaponPlatformPtr, const WsfTrack *aTrackPtr)
Allow for user initialization of the weapon's platform.
Definition WsfExplicitWeapon.cpp:1062
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
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Weapon firing options.
Definition WsfWeapon.hpp:275
Result of WsfWeapon::Fire().
Definition WsfWeapon.hpp:319
A target for a weapon to fire upon.
Definition WsfWeapon.hpp:243
Salvoing options.
Definition WsfWeapon.hpp:299
WsfWeapon(const WsfScenario &aScenario)
Definition WsfWeapon.cpp:48
const char * GetScriptClassName() const override
Definition WsfWeapon.cpp:164
Copyrights Multiple, All Rights Reserved