WSF
Events.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// ****************************************************************************
12// Updated by Infoscitex, a DCS Company
13// ****************************************************************************
14
15#ifndef EVENTS_HPP
16#define EVENTS_HPP
17
18#include <sstream>
19#include <string>
20#include <vector>
21
22
23class WsfPlatform;
24class WsfSensor;
25#include "WsfSensorResult.hpp"
26class WsfTrack;
28class WsfWeapon;
29
30namespace engage
31{
32
33class Simulation;
34
36class Events
37{
38public:
39 class Event
40 {
41 public:
42 Event() = delete; // protect from creation
43 Event(const std::string& aType)
44 : mEventType(aType)
45 , mEventTime(-1.0)
46 {
47 }
48
49 virtual void Write(std::ostream& aStream, Simulation& aSimulation) const {}
50 virtual ~Event() = default;
51
52 std::string mEventType;
53 double mEventTime;
54 };
55
56 using EventList = std::vector<Event*>;
57
58 Events();
59
60 void PushEvent(Event* aEvent) { mEventList.push_back(aEvent); }
61 EventList& GetEventList() { return mEventList; }
62 void ClearAllEvents();
63
65 {
66 public:
68 SensorDetectionAttempt(double aSimTime, WsfSensor* aSensorPtr, WsfPlatform* aTargetPtr, WsfSensorResult& aResult);
69
70 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
71
72 private:
73 const WsfSensor* mSensorPtr;
74 const WsfPlatform* mTargetPtr;
75 const WsfSensorResult mResult;
76 };
77
79 {
80 public:
82 SensorDetectionChanged(double aSimTime, WsfSensor* aSensorPtr, size_t aTargetIndex, WsfSensorResult& aResult);
83
84 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
85
86 private:
87 const WsfSensor* mSensorPtr;
88 const size_t mTargetIndex;
89 const WsfSensorResult mResult;
90 };
91
93 {
94 public:
96 SensorFrequencyChanged(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr);
97
98 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
99
100 private:
101 WsfSensor* mSensorPtr;
102 const WsfSensorMode* mModePtr;
103 };
104
106 {
107 public:
109 SensorModeActivated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr);
110
111 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
112
113 private:
114 WsfSensor* mSensorPtr;
115 const WsfSensorMode* mModePtr;
116 };
117
119 {
120 public:
122 SensorModeDeactivated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr);
123
124 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
125
126 private:
127 WsfSensor* mSensorPtr;
128 const WsfSensorMode* mModePtr;
129 };
130
132 {
133 public:
135 SensorNonOperational(double aSimTime, WsfSensor* aSensorPtr);
136
137 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
138
139 private:
140 WsfSensor* mSensorPtr;
141 };
142
144 {
145 public:
147 SensorOperational(double aSimTime, WsfSensor* aSensorPtr);
148
149 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
150
151 private:
152 WsfSensor* mSensorPtr;
153 };
154
156 {
157 public:
159 SensorRequestCanceled(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
160
161 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
162
163 private:
164 WsfSensor* mSensorPtr;
165 const WsfTrack* mTrackPtr;
166 };
167
169 {
170 public:
172 SensorRequestInitiated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr, const WsfTrack* aTrackPtr);
173
174 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
175
176 private:
177 WsfSensor* mSensorPtr;
178 const WsfSensorMode* mModePtr;
179 WsfStringId mTrackTargetId;
180 };
181
183 {
184 public:
186 SensorRequestUpdated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr, const WsfTrack* aTrackPtr);
187
188 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
189
190 private:
191 WsfSensor* mSensorPtr;
192 const WsfSensorMode* mModePtr;
193 WsfStringId mTargetId;
194 };
195
197 {
198 public:
200 SensorTrackCoasted(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
201
202 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
203
204 private:
205 WsfSensor* mSensorPtr;
206 const WsfTrack* mTrackPtr;
207 };
208
210 {
211 public:
213 SensorTrackDropped(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
214
215 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
216
217 private:
218 WsfSensor* mSensorPtr;
219 const WsfTrack* mTrackPtr;
220 };
221
223 {
224 public:
226 SensorTrackInitiated(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
227
228 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
229
230 private:
231 WsfSensor* mSensorPtr;
232 const WsfTrack* mTrackPtr;
233 };
234
236 {
237 public:
239 SensorTrackUpdated(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
240
241 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
242
243 private:
244 WsfSensor* mSensorPtr;
245 const WsfTrack* mTrackPtr;
246 };
247
248 class SensorTurnedOff : public Event
249 {
250 public:
251 SensorTurnedOff() = delete;
252 SensorTurnedOff(double aSimTime, WsfSensor* aSensorPtr);
253
254 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
255
256 private:
257 WsfSensor* mSensorPtr;
258 };
259
260 class SensorTurnedOn : public Event
261 {
262 public:
263 SensorTurnedOn() = delete;
264 SensorTurnedOn(double aSimTime, WsfSensor* aSensorPtr);
265
266 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
267
268 private:
269 WsfSensor* mSensorPtr;
270 };
271
273 {
274 public:
276 SimulationComplete(double aSimTime);
277
278 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
279 };
280
282 {
283 public:
285 WeaponFireAborted(double aSimTime, WsfWeapon* aWeaponPtr, const WsfTrack* aTargetTrackPtr, double aQuantity);
286
287 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
288
289 private:
290 WsfWeapon* mWeaponPtr;
291 const WsfTrack* mTargetTrackPtr;
292 double mQuantity;
293 };
294
296 {
297 public:
299 WeaponFireRequested(double aSimTime, WsfWeapon* aWeaponPtr, const WsfTrack* aTargetTrackPtr, double aQuantity);
300
301 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
302
303 private:
304 WsfWeapon* mWeaponPtr;
305 WsfStringId mTargetId;
306 double mQuantity;
307 };
308
309 class WeaponFired : public Event
310 {
311 public:
312 WeaponFired() = delete;
313 WeaponFired(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTargetTrackPtr);
314
315 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
316
317 private:
318 const WsfWeaponEngagement* mEngagementPtr;
319 WsfStringId mTargetId;
320 };
321
322 class WeaponHit : public Event
323 {
324 public:
325 WeaponHit() = delete;
326 WeaponHit(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, WsfPlatform* aTargetPtr);
327
328 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
329
330 private:
331 const WsfWeaponEngagement* mEngagementPtr;
332 WsfPlatform* mTargetPtr;
333 };
334
335 class WeaponKilled : public Event
336 {
337 public:
338 WeaponKilled() = delete;
339 WeaponKilled(double aSimTime, WsfWeapon* aWeaponPtr);
340
341 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
342
343 private:
344 WsfWeapon* mWeaponPtr;
345 };
346
347 class WeaponMissed : public Event
348 {
349 public:
350 WeaponMissed() = delete;
351 WeaponMissed(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, WsfPlatform* aTargetPtr);
352
353 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
354
355 private:
356 const WsfWeaponEngagement* mEngagementPtr;
357 WsfPlatform* mTargetPtr;
358 };
359
360 class WeaponTerminated : public Event
361 {
362 public:
364 WeaponTerminated(double aSimTime, const WsfWeaponEngagement* aEngagementPtr);
365
366 void Write(std::ostream& aStream, Simulation& aSimulation) const override;
367
368 private:
369 const WsfWeaponEngagement* mEngagementPtr;
370 };
371
372private:
373 EventList mEventList;
374};
375
376} // namespace engage
377
378#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Definition WsfSensorMode.hpp:36
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:92
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEngagement.hpp:43
Definition WsfWeapon.hpp:63
Definition Events.hpp:40
Event(const std::string &aType)
Definition Events.hpp:43
virtual void Write(std::ostream &aStream, Simulation &aSimulation) const
Definition Events.hpp:49
virtual ~Event()=default
double mEventTime
Definition Events.hpp:53
std::string mEventType
Definition Events.hpp:52
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:77
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:109
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:147
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:192
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:210
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:227
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:243
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:260
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:282
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:305
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:324
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:342
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:360
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:378
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:394
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:410
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:425
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:445
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:468
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:503
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:541
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:486
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:522
void Write(std::ostream &aStream, Simulation &aSimulation) const override
Definition Events.cpp:559
std::vector< Event * > EventList
Definition Events.hpp:56
Events()
Definition Events.cpp:48
EventList & GetEventList()
Definition Events.hpp:61
void PushEvent(Event *aEvent)
Definition Events.hpp:60
void ClearAllEvents()
Definition Events.cpp:54
Definition Simulation.hpp:34
Definition ApplicationExtension.cpp:26
Copyrights Multiple, All Rights Reserved