FlightGear next
SwiftAircraftManager.h
Go to the documentation of this file.
1/*
2 * Manger class for aircraft generated by swift
3 * SPDX-FileCopyrightText: (C) 2019-2022 swift Project Community / Contributors (https://swift-project.org/)
4 * SPDX-FileCopyrightText: (C) 2019-2022 Lars Toenning <dev@ltoenning.de>
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#pragma once
9
10#include <AIModel/AIManager.hxx>
12#include <Scenery/scenery.hxx>
13
14#include <unordered_map>
15#include <vector>
16
17namespace flightgear::swift {
18
20 std::string callsign;
21 SGGeod position;
22 SGVec3d orientation;
25};
26
28{
29 using FGAISwiftAircraftPtr = SGSharedPtr<FGAISwiftAircraft>;
30
31public:
34 bool addPlane(const std::string& callsign, const std::string& modelString);
35 void updatePlanes(const std::vector<SwiftPlaneUpdate>& updates);
36 void getRemoteAircraftData(std::vector<std::string>& callsigns, std::vector<double>& latitudesDeg, std::vector<double>& longitudesDeg,
37 std::vector<double>& elevationsM, std::vector<double>& verticalOffsets) const;
38 void removePlane(const std::string& callsign);
39 void removeAllPlanes();
40 void setPlanesTransponders(const std::vector<AircraftTransponder>& transponders);
41 double getElevationAtPosition(const std::string& callsign, const SGGeod& pos) const;
42 bool isInitialized() const;
43 void setPlanesSurfaces(const std::vector<AircraftSurfaces>& surfaces);
44
45private:
46 std::unordered_map<std::string, FGAISwiftAircraftPtr> aircraftByCallsign;
47 bool m_initialized = false;
48};
49
50} // namespace flightgear::swift
void getRemoteAircraftData(std::vector< std::string > &callsigns, std::vector< double > &latitudesDeg, std::vector< double > &longitudesDeg, std::vector< double > &elevationsM, std::vector< double > &verticalOffsets) const
bool addPlane(const std::string &callsign, const std::string &modelString)
void setPlanesSurfaces(const std::vector< AircraftSurfaces > &surfaces)
void setPlanesTransponders(const std::vector< AircraftTransponder > &transponders)
void removePlane(const std::string &callsign)
void updatePlanes(const std::vector< SwiftPlaneUpdate > &updates)
double getElevationAtPosition(const std::string &callsign, const SGGeod &pos) const