]> git.mxchange.org Git - simgear.git/commitdiff
OSG DatabasePager interface change in 2.5.1
authortimoore <timoore>
Mon, 2 Jun 2008 20:22:16 +0000 (20:22 +0000)
committertimoore <timoore>
Mon, 2 Jun 2008 20:22:16 +0000 (20:22 +0000)
Move OSG version macro from FlightGear to simgear

simgear/scene/model/SGPagedLOD.cxx
simgear/scene/tgdb/TileEntry.hxx
simgear/structure/Makefile.am
simgear/structure/OSGVersion.hxx [new file with mode: 0644]

index bdd19c9cf7c6095cd290b9623ec8efa0103e562d..fee5dee4eb6fca67b2dea9c4aaf32bf6d4228192 100644 (file)
@@ -17,6 +17,7 @@
 #include <osgDB/ReadFile>
 
 #include <simgear/debug/logstream.hxx>
+#include <simgear/structure/OSGVersion.hxx>
 
 #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());
 }
 
index 4ebc993f1935d60567b6c46d5379d06a8481bb55..f47b89557fc67fdb859c4ea4c9e8f69f44453af2 100644 (file)
@@ -73,6 +73,9 @@ private:
 
     // pointer to ssg range selector for this tile
     osg::ref_ptr<osg::LOD> _node;
+    // Reference to DatabaseRequest object set and used by the
+    // osgDB::DatabasePager.
+    osg::ref_ptr<osg::Referenced> _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<osg::Referenced>& getDatabaseRequest()
+    {
+        return _databaseRequest;
+    }
 };
 
 class ModelLoadHelper {
index e538cfda0c1f4d806d2baa4a41d0ad5f43ff18ca..f976fe8076b5700d14085bd12a02bd8dd8e98b16 100644 (file)
@@ -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 (file)
index 0000000..e8dd8e2
--- /dev/null
@@ -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 <osg/Version>
+#define SG_OSG_VERSION \
+    ((OPENSCENEGRAPH_MAJOR_VERSION*10000)\
+     + (OPENSCENEGRAPH_MINOR_VERSION*1000) + OPENSCENEGRAPH_PATCH_VERSION)
+#endif