1 // Copyright (C) 2009 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de 2 // 3 // This library is free software; you can redistribute it and/or 4 // modify it under the terms of the GNU Library General Public 5 // License as published by the Free Software Foundation; either 6 // version 2 of the License, or (at your option) any later version. 7 // 8 // This library is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 // Library General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with this program; if not, write to the Free Software 15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 16 // 17 18 #ifndef _AIBVHPAGER_HXX 19 #define _AIBVHPAGER_HXX 20 21 #include <string> 22 #include <simgear/bvh/BVHNode.hxx> 23 #include <simgear/bvh/BVHPager.hxx> 24 25 namespace fgai { 26 27 class AIBVHPager : public simgear::BVHPager { 28 public: 29 AIBVHPager(); 30 ~AIBVHPager(); 31 32 /// Load the flightgear scenery into the pager 33 void setScenery(const std::string& fg_root, const std::string& fg_scenery); 34 35 /// Get a bounding volume subtree contained in sphere. 36 /// This is similar to the not so well known ground cache. 37 SGSharedPtr<simgear::BVHNode> getBoundingVolumes(const SGSphered& sphere); 38 39 private: 40 class ReadFileCallback; 41 class SubTreeCollector; 42 43 /// The possibly paged root node 44 SGSharedPtr<simgear::BVHNode> _node; 45 }; 46 47 } // namespace fgai 48 49 #endif 50