X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNavaids%2FNavDataCache.hxx;h=3a6ef313c85449f3b8277de447e887fd4f5299da;hb=487546c848ad5559760b4de4aa36f19b9b8627a7;hp=dc78d8be55cd2284c1a6239293a387c39ce89707;hpb=41481967f127cc97e6b5569925bc2b90570ae86d;p=flightgear.git diff --git a/src/Navaids/NavDataCache.hxx b/src/Navaids/NavDataCache.hxx index dc78d8be5..3a6ef313c 100644 --- a/src/Navaids/NavDataCache.hxx +++ b/src/Navaids/NavDataCache.hxx @@ -90,7 +90,7 @@ public: * This may be trivial if the object is previously loaded, or require actual * disk IO. */ - FGPositioned* loadById(PositionedID guid); + FGPositionedRef loadById(PositionedID guid); PositionedID insertAirport(FGPositioned::Type ty, const std::string& ident, const std::string& name); @@ -102,24 +102,32 @@ public: void setRunwayReciprocal(PositionedID runway, PositionedID recip); void setRunwayILS(PositionedID runway, PositionedID ils); - void updateRunwayThreshold(PositionedID runwayID, const SGGeod &aThreshold, - double aHeading, double aDisplacedThreshold, - double aStopway); - PositionedID insertNavaid(FGPositioned::Type ty, const std::string& ident, const std::string& name, const SGGeod& pos, int freq, int range, double multiuse, PositionedID apt, PositionedID runway); - void updateILS(PositionedID ils, const SGGeod& newPos, double aHdg); + + // Assign colocated DME to a navaid + void setNavaidColocated(PositionedID navaid, PositionedID colocatedDME); PositionedID insertCommStation(FGPositioned::Type ty, const std::string& name, const SGGeod& pos, int freq, int range, PositionedID apt); PositionedID insertFix(const std::string& ident, const SGGeod& aPos); - PositionedID createUserWaypoint(const std::string& ident, const SGGeod& aPos); + PositionedID createPOI(FGPositioned::Type ty, const std::string& ident, const SGGeod& aPos); + bool removePOI(FGPositioned::Type ty, const std::string& aIdent); + void dropGroundnetFor(PositionedID aAirport); + /** + * Remove all ground-nets globally from the cache. + * This includes parking and taxi-nodes and edges between them. It's useful + * when scenery paths change, since the ground-nets depend on the scenery. + * Using this we can avoid havind to rebuild the entire cache. + */ + void dropAllGroundnets(); + PositionedID insertParking(const std::string& name, const SGGeod& aPos, PositionedID aAirport, double aHeading, int aRadius, const std::string& aAircraftType, @@ -139,13 +147,16 @@ public: */ void updatePosition(PositionedID item, const SGGeod &pos); - FGPositioned::List findAllWithIdent(const std::string& ident, - FGPositioned::Filter* filter, bool exact); - FGPositioned::List findAllWithName(const std::string& ident, - FGPositioned::Filter* filter, bool exact); + FGPositionedList findAllWithIdent( const std::string& ident, + FGPositioned::Filter* filter, + bool exact ); + FGPositionedList findAllWithName( const std::string& ident, + FGPositioned::Filter* filter, + bool exact ); - FGPositionedRef findClosestWithIdent(const std::string& aIdent, - const SGGeod& aPos, FGPositioned::Filter* aFilter); + FGPositionedRef findClosestWithIdent( const std::string& aIdent, + const SGGeod& aPos, + FGPositioned::Filter* aFilter ); /** @@ -187,7 +198,7 @@ public: * Given a runway and type, find the corresponding navaid (ILS / GS / OM) */ PositionedID findNavaidForRunway(PositionedID runway, FGPositioned::Type ty); - + /** * given a navaid name (or similar) from apt.dat / nav.dat, find the * corresponding airport and runway IDs. @@ -258,6 +269,8 @@ public: NavDataCache* _instance; bool _committed; }; + + bool isReadOnly() const; private: NavDataCache();