From: timoore Date: Mon, 2 Jun 2008 20:22:16 +0000 (+0000) Subject: OSG DatabasePager interface change in 2.5.1 X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=4fe43c3e50bc0ed882aeb1336883676f7f242c1c;p=simgear.git OSG DatabasePager interface change in 2.5.1 Move OSG version macro from FlightGear to simgear --- diff --git a/simgear/scene/model/SGPagedLOD.cxx b/simgear/scene/model/SGPagedLOD.cxx index bdd19c9c..fee5dee4 100644 --- a/simgear/scene/model/SGPagedLOD.cxx +++ b/simgear/scene/model/SGPagedLOD.cxx @@ -17,6 +17,7 @@ #include #include +#include #include "modellib.hxx" #include "SGReaderWriterXMLOptions.hxx" @@ -68,9 +69,15 @@ bool SGPagedLOD::addChild(osg::Node *child) void SGPagedLOD::forceLoad(osgDB::DatabasePager *dbp) { - //SG_LOG(SG_GENERAL, SG_ALERT, "SGPagedLOD::forceLoad(" << getFileName(getNumChildren()) << ")"); - setTimeStamp(getNumChildren(),0); + //SG_LOG(SG_GENERAL, SG_ALERT, "SGPagedLOD::forceLoad(" << + //getFileName(getNumChildren()) << ")"); + unsigned childNum = getNumChildren(); + setTimeStamp(childNum, 0); double priority=1.0; - dbp->requestNodeFile(getFileName(getNumChildren()),this,priority,0, _readerWriterOptions.get()); + dbp->requestNodeFile(getFileName(childNum),this,priority,0, +#if SG_OSG_VERSION >= 25001 + getDatabaseRequest(childNum), +#endif + _readerWriterOptions.get()); } diff --git a/simgear/scene/tgdb/TileEntry.hxx b/simgear/scene/tgdb/TileEntry.hxx index 4ebc993f..f47b8955 100644 --- a/simgear/scene/tgdb/TileEntry.hxx +++ b/simgear/scene/tgdb/TileEntry.hxx @@ -73,6 +73,9 @@ private: // pointer to ssg range selector for this tile osg::ref_ptr _node; + // Reference to DatabaseRequest object set and used by the + // osgDB::DatabasePager. + osg::ref_ptr _databaseRequest; static bool obj_load( const std::string& path, osg::Group* geometry, @@ -169,6 +172,13 @@ public: inline bool get_inner_ring() const { return is_inner_ring; } inline void set_inner_ring( bool val ) { is_inner_ring = val; } + + // Get the ref_ptr to the DatabaseRequest object, in order to pass + // this to the pager. + osg::ref_ptr& getDatabaseRequest() + { + return _databaseRequest; + } }; class ModelLoadHelper { diff --git a/simgear/structure/Makefile.am b/simgear/structure/Makefile.am index e538cfda..f976fe80 100644 --- a/simgear/structure/Makefile.am +++ b/simgear/structure/Makefile.am @@ -8,6 +8,7 @@ include_HEADERS = \ exception.hxx \ event_mgr.hxx \ subsystem_mgr.hxx \ + OSGVersion.hxx \ SGAtomic.hxx \ SGBinding.hxx \ SGExpression.hxx \ diff --git a/simgear/structure/OSGVersion.hxx b/simgear/structure/OSGVersion.hxx new file mode 100644 index 00000000..e8dd8e26 --- /dev/null +++ b/simgear/structure/OSGVersion.hxx @@ -0,0 +1,26 @@ +// OSGVersion.hxx - transform OpenSceneGraph version to something useful +// +// Copyright (C) 2008 Tim Moore timoore@redhat.com +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +#ifndef SIMGEAR_OSGVERSION_HXX +#define SIMGEAR_OSGVERSION_HXX 1 +#include +#define SG_OSG_VERSION \ + ((OPENSCENEGRAPH_MAJOR_VERSION*10000)\ + + (OPENSCENEGRAPH_MINOR_VERSION*1000) + OPENSCENEGRAPH_PATCH_VERSION) +#endif