1 // tileentry.hxx -- routines to handle an individual scenery tile 2 // 3 // Written by Curtis Olson, started May 1998. 4 // 5 // Copyright (C) 1998 - 2001 Curtis L. Olson - http://www.flightgear.org/~curt 6 // 7 // This program is free software; you can redistribute it and/or 8 // modify it under the terms of the GNU General Public License as 9 // published by the Free Software Foundation; either version 2 of the 10 // License, or (at your option) any later version. 11 // 12 // This program is distributed in the hope that it will be useful, but 13 // WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 // General Public License for more details. 16 // 17 // You should have received a copy of the GNU General Public License 18 // along with this program; if not, write to the Free Software 19 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 21 22 #ifndef _READERWRITERSTG_HXX 23 #define _READERWRITERSTG_HXX 24 25 #include <functional> 26 27 #include <osgDB/ReaderWriter> 28 #include <simgear/math/sg_types.hxx> 29 30 class SGGeod; 31 class SGBucket; 32 33 namespace simgear { 34 35 class ReaderWriterSTG : public osgDB::ReaderWriter { 36 public: 37 ReaderWriterSTG(); 38 virtual ~ReaderWriterSTG(); 39 40 virtual const char* className() const; 41 42 virtual ReadResult 43 readNode(const std::string&, const osgDB::Options*) const; 44 45 //pitch and roll are not common, so passed in "restofline" only 46 using STGObjectCallback = std::function<bool(const std::string& token, const std::string& modelpath, const SGGeod& position, const double hdg, const string_list& restofline)>; 47 //add/remove a callback that is invoked for unknown STG token 48 static void setSTGObjectHandler(const std::string &token, STGObjectCallback callback); 49 static void removeSTGObjectHandler(const std::string &token, STGObjectCallback callback); 50 private: 51 struct _ModelBin; 52 }; 53 54 } 55 #endif // _READERWRITERSTG_HXX 56