14#include <simgear/sg_inlines.h>
15#include <simgear/structure/SGSharedPtr.hxx>
16#include <simgear/math/SGMath.hxx>
110 virtual const std::string&
name()
const
113 virtual const SGGeod&
geod()
const
114 {
return mPosition; }
122 virtual const SGVec3d&
cart()
const;
125 {
return geod().getLatitudeDeg(); }
128 {
return geod().getLongitudeDeg(); }
131 {
return geod().getElevationFt(); }
134 {
return geod().getElevationM(); }
159 {
return pass(aPos); }
167 TypeFilter(std::initializer_list<Type> types);
190 std::vector<Type> types;
256 assert(index >= 0 && index < id_vec.size());
263 std::vector<SGSharedPtr<T> > vec(id_vec.size());
265 for(
size_t i = 0;
i < id_vec.size(); ++
i)
283 bool isTemporary =
false,
284 const std::string& aName = {});
304 const SGGeod mPosition;
313 if (T::isType(
p->type())) {
314 return static_cast<T*
>(
p);
323 if (!
p)
return nullptr;
325 if (T::isType(
p->type())) {
326 return static_cast<T*
>(
p.ptr());
335 POI(
PositionedID aGuid,
Type ty,
const std::string& aIdent,
const SGGeod& aPos,
const std::string& aName);
337 const std::string&
name()
const override
SGSharedPtr< FGPositioned > FGPositionedRef
Predicate class to support custom filtering of FGPositioned queries Default implementation of this pa...
bool operator()(FGPositioned *aPos) const
virtual Type maxType() const
virtual Type minType() const
virtual bool pass(FGPositioned *aPos) const
Over-rideable filter method.
Type minType() const override
bool pass(FGPositioned *aPos) const override
Over-rideable filter method.
TypeFilter(Type aTy=INVALID)
static TypeFilter fromString(const std::string &aFilterSpec)
Type maxType() const override
static Type typeFromName(const std::string &aName)
Map a candidate type string to a real type.
static FGPositionedList findAllWithName(const std::string &aName, Filter *aFilter=NULL, bool aExact=true)
As above, but searches names instead of idents.
static bool isRunwayType(FGPositioned *pos)
FGPositioned(PositionedID aGuid, Type ty, const std::string &aIdent, const SGGeod &aPos)
static FGPositionedRef createWaypoint(FGPositioned::Type aType, const std::string &aIdent, const SGGeod &aPos, bool isTemporary=false, const std::string &aName={})
static SGSharedPtr< T > loadById(const PositionedIDVec &id_vec, size_t index)
virtual const std::string & name() const
Return the name of this positioned.
PositionedID guid() const
static FGPositionedRef findClosestWithIdent(const std::string &aIdent, const SGGeod &aPos, Filter *aFilter=NULL)
void modifyPosition(const SGGeod &newPos)
const char * typeString() const
static std::vector< SGSharedPtr< T > > loadAllById(const PositionedIDVec &id_vec)
static FGPositionedList findWithinRange(const SGGeod &aPos, double aRangeNm, Filter *aFilter)
static FGPositionedList findClosestNPartial(const SGGeod &aPos, unsigned int aN, double aCutoffNm, Filter *aFilter, bool &aPartial)
Same as above, but with a time-bound in msec too.
virtual const SGGeod & geod() const
virtual const SGVec3d & cart() const
The cartesian position associated with this object.
static FGPositionedRef findFirstWithIdent(const std::string &aIdent, Filter *aFilter)
static void sortByRange(FGPositionedList &, const SGGeod &aPos)
Sort an FGPositionedList by distance from a position.
static FGPositionedRef loadByIdImpl(PositionedID id)
void invalidatePosition()
static bool isAirportType(FGPositioned *pos)
static SGSharedPtr< T > loadById(PositionedID id)
@ TOWER
an actual airport tower - not a radio comms facility!
@ PARKING
parking position - might be a gate, or stand
@ DME
important that DME & TACAN are adjacent to keep the TacanFilter efficient - DMEs are proxies for TACA...
static FGPositionedList findAllWithIdent(const std::string &aIdent, Filter *aFilter=NULL, bool aExact=true)
Find all items with the specified ident.
static const char * nameForType(Type aTy)
Map a type to a human-readable string.
double elevationM() const
static bool isNavaidType(FGPositioned *pos)
static FGPositionedList findClosestN(const SGGeod &aPos, unsigned int aN, double aCutoffNm, Filter *aFilter=NULL)
Find the closest N items to a position, which pass the specified filter A cutoff range in NM must be ...
static FGPositionedList findWithinRangePartial(const SGGeod &aPos, double aRangeNm, Filter *aFilter, bool &aPartial)
const std::string & ident() const
static bool deleteWaypoint(FGPositionedRef aWpt)
static FGPositionedRef findClosest(const SGGeod &aPos, double aCutoffNm, Filter *aFilter=NULL)
Find the closest item to a position, which pass the specified filter A cutoff range in NM must be spe...
static bool isType(FGPositioned::Type ty)
const std::string & name() const override
Return the name of this positioned.
POI(PositionedID aGuid, Type ty, const std::string &aIdent, const SGGeod &aPos, const std::string &aName)
FlightPlan.hxx - defines a full flight-plan object, including departure, cruise, arrival information ...
SGSharedPtr< FGPositioned > FGPositionedRef
std::vector< PositionedID > PositionedIDVec
T * fgpositioned_cast(FGPositioned *p)
std::vector< FGPositionedRef > FGPositionedList