#include <simgear/math/SGMath.hxx>
class FGPositioned;
+class SGPropertyNode;
typedef SGSharedPtr<FGPositioned> FGPositionedRef;
+namespace flightgear
+{
+ class PositionedBinding;
+}
+
class FGPositioned : public SGReferenced
{
public:
TAXIWAY,
PAVEMENT,
PARK_STAND,
+ WAYPOINT,
FIX,
VOR,
NDB,
DME,
TACAN,
OBSTACLE,
- WAYPOINT, // user-defined waypoint
- FREQ_GND,
- FREQ_TWR,
+ FREQ_GROUND,
+ FREQ_TOWER,
FREQ_ATIS,
+ FREQ_AWOS,
+ FREQ_APP_DEP,
+ FREQ_ENROUTE,
+ FREQ_CLEARANCE,
+ FREQ_UNICOM,
LAST_TYPE
} Type;
double elevation() const
{ return mPosition.getElevationFt(); }
+
+ virtual flightgear::PositionedBinding* createBinding(SGPropertyNode* nd) const;
+
/**
* Predicate class to support custom filtering of FGPositioned queries
* Default implementation of this passes any FGPositioned instance.
class TypeFilter : public Filter
{
public:
- TypeFilter(Type aTy) : mType(aTy) { ; }
- virtual bool pass(FGPositioned* aPos) const
- { return (mType == aPos->type()); }
+ TypeFilter(Type aTy);
+ virtual bool pass(FGPositioned* aPos) const;
+ void addType(Type aTy);
private:
- const Type mType;
+ std::vector<Type> types;
};
+ static void installCommands();
+
static List findWithinRange(const SGGeod& aPos, double aRangeNm, Filter* aFilter = NULL);
static FGPositionedRef findClosestWithIdent(const std::string& aIdent, const SGGeod& aPos, Filter* aFilter = NULL);
* Find all items with the specified ident
* @param aFilter - optional filter on items
*/
- static List findAllWithIdent(const std::string& aIdent, Filter* aFilter = NULL);
+ static List findAllWithIdent(const std::string& aIdent, Filter* aFilter = NULL, bool aExact = true);
/**
* As above, but searches names instead of idents
*/
- static List findAllWithName(const std::string& aName, Filter* aFilter = NULL);
+ static List findAllWithName(const std::string& aName, Filter* aFilter = NULL, bool aExact = true);
/**
* Sort an FGPositionedList by distance from a position