12#ifndef XWSFAIRTRAFFIC_HPP
13#define XWSFAIRTRAFFIC_HPP
15#include "wsf_export.h"
200 bool ProcessInput(UtInput& aInput);
201 void ProcessAirbaseBlock(UtInput& aInput);
202 void ProcessAircraftTypeBlock(UtInput& aInput);
204 static double NormalizeHeading(
double aHeading);
205 bool IsRequested()
const;
245 , mAirTrafficPtr(aAirTrafficPtr)
251 double nextEventTime = mAirTrafficPtr->ProcessEvent(
GetTime());
253 if (nextEventTime >= 0.0)
270 , mAirTrafficPtr(aAirTrafficPtr)
271 , mFlightStatus(aFlightStatus)
279 mAirTrafficPtr->UpdateFlightStatus(aSimTime, aPlatformPtr, mFlightStatus);
296 , mPlatformId(aPlatformId)
321 void AddToSimulation(
const Aircraft& aAircraft,
324 const Destination& aDestination,
327 double ComputeHeadingChange(
double aCurrentHeading,
double aTargetHeading)
const;
329 void ComputeRunwayParameters(Runway& aRunway);
332 void DivertFlight(
double aSimTime, Flight& aFlight);
334 unsigned int FindAirbase(
WsfStringId aAirbaseNameId)
const;
336 void GenerateAscentPath(
const Airbase& aOrigination,
337 const Airbase& aDestination,
342 void GenerateAscentPath(
const Airbase& aAirbase,
float aCruiseSpeed,
WsfRoute& aRoute);
344 void GenerateLoiterPath(
const std::vector<WsfStringId>& aRouteIds,
345 const Destination& aDestination,
350 void GenerateDescentPath(
WsfRoute& aRoute,
354 double aCurrentSpeed,
355 const Airbase& aDestination);
357 void GenerateDiversionPath(Flight& aFlight);
359 bool GetRandomDestination(
const Airbase& aAirbase,
const Destinations& aDestinations, Destination& aDestination);
361 bool GetRandomAircraft(
const Airbase& aAirbase,
const Airbase& aDestAirbase, Aircraft& aAircraft);
363 bool GetRandomLocalAircraft(
const Airbase& aAirbase, Aircraft& aAircraft);
365 bool DrawLocalOrRemote(
const Airbase& aAirbase);
367 void GetRandomWaypoint(
const Destination& aDestination,
WsfWaypoint& aWaypoint);
369 double GetRandomLoiterTime(
const AircraftType& aAircraftType);
371 bool DoesAirbaseExist(
WsfStringId aTypeId)
const {
return (mAirbases.find(aTypeId) != mAirbases.end()); }
372 bool DoesAircraftTypeExist(
WsfStringId aTypeId)
const
374 return (mAircraftTypes.find(aTypeId) != mAircraftTypes.end());
387 std::vector<Flight> mFlights;
WsfPlatform * platformPtr
Definition WsfScriptTrackClass.cpp:507
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfCallback()
Definition WsfCallback.cpp:21
double GetTime() const
Definition WsfEvent.hpp:71
WsfSimulation * GetSimulation() const
Definition WsfEvent.hpp:103
void SetTime(double aSimTime)
Definition WsfEvent.hpp:86
EventDisposition
Definition WsfEvent.hpp:37
@ cRESCHEDULE
Reschedule the event. WsfEvent::SetTime should have been called with the new time.
Definition WsfEvent.hpp:39
@ cDELETE
Delete the event from the event queue.
Definition WsfEvent.hpp:38
Definition WsfMover.hpp:37
A collection of WsfWaypoint objects that represent a path to be followed.
Definition WsfRoute.hpp:40
WsfSimulationExtension()
Definition WsfSimulationExtension.cpp:23
friend class WsfSimulation
Definition WsfSimulationExtension.hpp:43
Definition WsfWaypoint.hpp:57
std::vector< Aircraft > mAircrafts
Definition XWsfAirTraffic.hpp:131
WsfStringId mNameId
Definition XWsfAirTraffic.hpp:123
Destinations mLocalDestinations
Definition XWsfAirTraffic.hpp:130
Airbase()
Definition XWsfAirTraffic.hpp:108
unsigned int mFlightNumber
Definition XWsfAirTraffic.hpp:133
double mLat
Definition XWsfAirTraffic.hpp:124
bool mIsActive
Definition XWsfAirTraffic.hpp:134
Destinations mDestinations
Definition XWsfAirTraffic.hpp:129
double mDepartureInterval
Definition XWsfAirTraffic.hpp:126
Runway mRunway
Definition XWsfAirTraffic.hpp:128
double mLon
Definition XWsfAirTraffic.hpp:125
double mDeactivationTime
Definition XWsfAirTraffic.hpp:127
double mNextDepartureTime
Definition XWsfAirTraffic.hpp:132
double mSigmaLoiterTime
Definition XWsfAirTraffic.hpp:163
double mDefaultLoiterTime
Definition XWsfAirTraffic.hpp:164
std::vector< WsfStringId > mRouteIds
Definition XWsfAirTraffic.hpp:165
float mMinimumRunwayLength
Definition XWsfAirTraffic.hpp:161
float mSigmaCruiseSpeed
Definition XWsfAirTraffic.hpp:159
float mMaximumOperatingRange
Definition XWsfAirTraffic.hpp:160
bool mLocal
Definition XWsfAirTraffic.hpp:155
AircraftType()
Definition XWsfAirTraffic.hpp:140
double mLoiterTime
Definition XWsfAirTraffic.hpp:162
WsfStringId mTypeId
Definition XWsfAirTraffic.hpp:154
float mMaximumCruiseAltitude
Definition XWsfAirTraffic.hpp:157
float mMeanCruiseSpeed
Definition XWsfAirTraffic.hpp:158
float mMinimumCruiseAltitude
Definition XWsfAirTraffic.hpp:156
Aircraft()
Definition XWsfAirTraffic.hpp:61
double mFraction
Definition XWsfAirTraffic.hpp:67
WsfStringId mAircraftTypeId
Definition XWsfAirTraffic.hpp:66
Destination()
Definition XWsfAirTraffic.hpp:41
double mLatitude
Definition XWsfAirTraffic.hpp:49
double mRadius
Definition XWsfAirTraffic.hpp:51
double mLongitude
Definition XWsfAirTraffic.hpp:50
double mFraction
Definition XWsfAirTraffic.hpp:53
WsfStringId mAirbaseNameId
Definition XWsfAirTraffic.hpp:47
WsfStringId mStatus
Definition XWsfAirTraffic.hpp:188
WsfStringId mDestinationId
Definition XWsfAirTraffic.hpp:184
bool mDiversionPending
Definition XWsfAirTraffic.hpp:189
size_t mPlatformIndex
Definition XWsfAirTraffic.hpp:182
WsfStringId mAircraftTypeId
Definition XWsfAirTraffic.hpp:185
WsfStringId mOriginationId
Definition XWsfAirTraffic.hpp:183
double mCruiseAltitude
Definition XWsfAirTraffic.hpp:186
double mCruiseSpeed
Definition XWsfAirTraffic.hpp:187
Flight()
Definition XWsfAirTraffic.hpp:171
Definition XWsfAirTraffic.hpp:71
double mLength
Definition XWsfAirTraffic.hpp:92
double mEndLon
Definition XWsfAirTraffic.hpp:89
double mLatLeftIAF
Definition XWsfAirTraffic.hpp:101
double mLonFAF
Definition XWsfAirTraffic.hpp:94
double mBegLon
Definition XWsfAirTraffic.hpp:86
double mLatIAF
Definition XWsfAirTraffic.hpp:96
double mLonIAF
Definition XWsfAirTraffic.hpp:97
double mBegLat
Definition XWsfAirTraffic.hpp:85
float mAltIAF
Definition XWsfAirTraffic.hpp:98
double mMidLat
Definition XWsfAirTraffic.hpp:83
float mAltFAF
Definition XWsfAirTraffic.hpp:95
double mLonLeftIAF
Definition XWsfAirTraffic.hpp:102
double mLonRightIAF
Definition XWsfAirTraffic.hpp:100
double mLatFAF
Definition XWsfAirTraffic.hpp:93
float mEndHeight
Definition XWsfAirTraffic.hpp:90
double mLatRightIAF
Definition XWsfAirTraffic.hpp:99
double mMidLon
Definition XWsfAirTraffic.hpp:84
double mEndLat
Definition XWsfAirTraffic.hpp:88
float mBegHeight
Definition XWsfAirTraffic.hpp:87
Runway()
Definition XWsfAirTraffic.hpp:73
double mHeading
Definition XWsfAirTraffic.hpp:91
std::map< WsfStringId, Airbase > Airbases
Definition XWsfAirTraffic.hpp:192
std::vector< Destination > Destinations
Definition XWsfAirTraffic.hpp:56
std::map< WsfStringId, AircraftType > AircraftTypes
Definition XWsfAirTraffic.hpp:193
double mEveryoneLandTime
Definition XWsfAirTraffic.hpp:207
XWsfAirTrafficData()
Definition XWsfAirTraffic.hpp:195
Airbases mAirbases
Definition XWsfAirTraffic.hpp:208
AircraftTypes mAircraftTypes
Definition XWsfAirTraffic.hpp:209
AirTrafficEvent(double aSimTime, XWsfAirTraffic *aAirTrafficPtr)
Definition XWsfAirTraffic.hpp:243
EventDisposition Execute() override
Definition XWsfAirTraffic.hpp:249
EventDisposition Execute() override
Definition XWsfAirTraffic.hpp:300
ExitLoiterEvent(WsfStringId aPlatformId, double aSimTime)
Definition XWsfAirTraffic.hpp:294
bool Execute(double aSimTime, WsfPlatform *aPlatformPtr) override
Definition XWsfAirTraffic.hpp:277
UpdateFlightStatusCallback(XWsfAirTraffic *aAirTrafficPtr, WsfStringId &aFlightStatus)
Definition XWsfAirTraffic.hpp:268
WsfCallback * Clone() const override
Definition XWsfAirTraffic.hpp:275
bool Initialize() override
Initialize the air traffic object.
Definition XWsfAirTraffic.cpp:97
void UpdateFlightStatus(double aSimTime, WsfPlatform *aPlatformPtr, WsfStringId &aFlightStatus)
Process a waypoint callback.
Definition XWsfAirTraffic.cpp:405
double ProcessEvent(double aSimTime)
Process airbase deactivations and takeoffs as required.
Definition XWsfAirTraffic.cpp:213
XWsfAirTraffic(WsfSimulation &aSimulation, XWsfAirTrafficData &aData)
Definition XWsfAirTraffic.cpp:71
void ProcessDivertFlights(double aSimtime)
Definition XWsfAirTraffic.cpp:308
Template specialization for wsf::comm::Address. Allows usage of Address in std::unordered_map/set.
Definition WsfCommAddress.hpp:185