WSF
WsfDisWeaponEvents.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 WSFDISWEAPONEVENTS_HPP
13#define WSFDISWEAPONEVENTS_HPP
14
15#include "wsf_mil_export.h"
16
17#include <list>
18#include <map>
19
20class DisDirectedEnergyFire;
21class DisFire;
22class DisDetonation;
23#include "DisEntityId.hpp"
24#include "DisEntityType.hpp"
25#include "DisEventId.hpp"
26class DisFire;
27
28#include "UtCallback.hpp"
29class UtInput;
30
32class WsfDisInterface;
33class WsfDisPlatform;
34class WsfGeoPoint;
38class WsfPlatform;
39class WsfTrack;
40#include "WsfTrackId.hpp"
41class WsfWeapon;
43
45class WSF_MIL_EXPORT WsfDisWeaponEvents
46{
47public:
49 virtual ~WsfDisWeaponEvents() = default;
50
51 void WeaponFired(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTrackPtr);
52
53 void DirectedEnergyWeaponFired(double aSimTime,
54 const WsfDirectedEnergyWeapon* aWeaponPtr,
55 const WsfWeaponEngagement* aEngagementPtr);
56
57 void DirectedEnergyWeaponHit(double aSimTime,
58 const WsfDirectedEnergyWeapon* aWeaponPtr,
59 const WsfWeaponEngagement* aEngagementPtr);
60
61 void ImplicitWeaponEndEngagement(double aSimTime,
62 WsfImplicitWeapon* aImplicitWeapon,
63 const WsfWeaponEngagement* aEngagementPtr);
64
65 void WeaponTerminated(double aSimTime, const WsfWeaponEngagement* aEngagementPtr);
66
67 bool InitiateWeaponTransfer(double aSimTime, DisFire* aPduPtr);
68
69 bool TransferPlatformToExternalControl(double aSimTime, WsfPlatform* aPlatformPtr);
70
71 bool TransferPlatformToInternalControl(double aSimTime,
72 WsfPlatform* aPlatformPtr,
73 DisEntityId& aEntityId,
74 DisEntityType& aEntityType);
75
76 bool IsOutgoingWeaponTransfer(double aSimTime, WsfPlatform* aPlatformPtr);
77
78 UtCallbackListN<void(DisFire&)> ProcessFirePDU;
79
80 UtCallbackListN<void(DisDetonation&)> ProcessDetonationPDU;
81
82 UtCallbackListN<void(const WsfWeapon*, WsfPlatform*, WsfDisPlatform*, DisEntityId&, bool&)> ProcessWeaponPrelaunchStatus;
83
84 UtCallbackListN<void(WsfDisPlatform*, DisEntityId&)> ProcessWeaponTerminated;
85
86 UtCallbackListN<void(std::string)> ReportErrorMessage;
87
88 UtCallbackListN<void(WsfGeoPoint&, int)> SetTrackLocationData;
89
90 UtCallbackListN<void(WsfPlatform*, const WsfWeapon*, const WsfWeaponEngagement*, DisEntityId&)> UpdateFiringPlatformSystems;
92
93private:
94 void WeaponFiredP(double aSimTime, const WsfWeaponEngagement* aEngagementPtr);
95
96 int GetWarheadEnum(const WsfWeapon* aWeaponPtr);
97
99 using CategoryToWarheadMap = std::map<int, int>;
100
102 struct WeaponEvent
103 {
104 DisEventId mDisEventId;
105 DisEntityId mFiringDisEntityId;
106 DisEntityId mWeaponDisEntityId;
107 DisEntityType mWeaponDisEntityType;
108 DisEntityId mTargetDisEntityId;
109 };
110
111 using WeaponEventList = std::map<unsigned int, WeaponEvent>;
112
114 struct PendingTransfer
115 {
116 double mFiringStartTime;
117 size_t mFiringPlatformIndex;
118 WsfTrackId mTargetTrackId;
119 WsfStringId mWeaponSystemName;
120 DisEntityId mWeaponDisEntityId;
121 DisEntityType mWeaponDisEntityType;
122 };
123
124 using PendingTransferList = std::list<PendingTransfer>;
125
126 WsfDisInterface* mInterfacePtr;
127 WsfMilDisInterface* mMilPtr;
128 WsfMilExtInterface* mExtMilPtr;
129
131 WeaponEventList mWeaponEventList;
132
134 PendingTransferList mPendingTransferList;
135};
136
137#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfDirectedEnergyWeapon.hpp:27
Definition WsfDisInterface.hpp:83
An internal class used by WsfDisInterface to maintain information about a platform.
Definition WsfDisPlatform.hpp:67
WsfDisWeaponEvents(WsfMilDisInterface *aInterfacePtr)
Definition WsfDisWeaponEvents.cpp:57
UtCallbackListN< void(WsfPlatform *, const WsfWeapon *, const WsfWeaponEngagement *, DisEntityId &)> UpdateFiringPlatformSystems
Definition WsfDisWeaponEvents.hpp:90
void DirectedEnergyWeaponHit(double aSimTime, const WsfDirectedEnergyWeapon *aWeaponPtr, const WsfWeaponEngagement *aEngagementPtr)
Definition WsfDisWeaponEvents.cpp:498
void WeaponFired(double aSimTime, const WsfWeaponEngagement *aEngagementPtr, const WsfTrack *aTrackPtr)
Definition WsfDisWeaponEvents.cpp:73
UtCallbackListN< void(WsfDisPlatform *, DisEntityId &)> ProcessWeaponTerminated
Definition WsfDisWeaponEvents.hpp:84
WsfSimulation * GetSimulation() const
Definition WsfDisWeaponEvents.cpp:1296
UtCallbackListN< void(DisFire &)> ProcessFirePDU
Definition WsfDisWeaponEvents.hpp:78
UtCallbackListN< void(DisDetonation &)> ProcessDetonationPDU
Definition WsfDisWeaponEvents.hpp:80
UtCallbackListN< void(WsfGeoPoint &, int)> SetTrackLocationData
Definition WsfDisWeaponEvents.hpp:88
UtCallbackListN< void(const WsfWeapon *, WsfPlatform *, WsfDisPlatform *, DisEntityId &, bool &)> ProcessWeaponPrelaunchStatus
Definition WsfDisWeaponEvents.hpp:82
void DirectedEnergyWeaponFired(double aSimTime, const WsfDirectedEnergyWeapon *aWeaponPtr, const WsfWeaponEngagement *aEngagementPtr)
Definition WsfDisWeaponEvents.cpp:307
bool TransferPlatformToExternalControl(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfDisWeaponEvents.cpp:1155
UtCallbackListN< void(std::string)> ReportErrorMessage
Definition WsfDisWeaponEvents.hpp:86
void WeaponTerminated(double aSimTime, const WsfWeaponEngagement *aEngagementPtr)
Definition WsfDisWeaponEvents.cpp:579
virtual ~WsfDisWeaponEvents()=default
bool IsOutgoingWeaponTransfer(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfDisWeaponEvents.cpp:1255
bool TransferPlatformToInternalControl(double aSimTime, WsfPlatform *aPlatformPtr, DisEntityId &aEntityId, DisEntityType &aEntityType)
Definition WsfDisWeaponEvents.cpp:1191
bool InitiateWeaponTransfer(double aSimTime, DisFire *aPduPtr)
Definition WsfDisWeaponEvents.cpp:821
void ImplicitWeaponEndEngagement(double aSimTime, WsfImplicitWeapon *aImplicitWeapon, const WsfWeaponEngagement *aEngagementPtr)
Definition WsfDisWeaponEvents.cpp:566
Definition WsfGeoPoint.hpp:29
Definition WsfImplicitWeapon.hpp:31
Definition WsfMilDisInterface.hpp:42
Definition WsfMilExtInterface.hpp:23
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEngagement.hpp:43
Definition WsfWeapon.hpp:63
Copyrights Multiple, All Rights Reserved