]> git.mxchange.org Git - simgear.git/commitdiff
spt: Introduce a third layer of paged nodes.
authorMathias Froehlich <Mathias.Froehlich@web.de>
Tue, 22 Jan 2013 05:13:10 +0000 (06:13 +0100)
committerMathias Froehlich <Mathias.Froehlich@web.de>
Tue, 29 Jan 2013 06:01:50 +0000 (07:01 +0100)
simgear/scene/tgdb/ReaderWriterSPT.cxx

index 2c0faba7c934e6e6e0db1c11d685f90bbde19570..96fbd7097fd9b2043fe255e8d66ecf211e149ec5 100644 (file)
@@ -190,9 +190,20 @@ osg::ref_ptr<osg::Node>
 ReaderWriterSPT::createTree(const BucketBox& bucketBox, const osgDB::Options* options, bool topLevel) const
 {
     if (bucketBox.getIsBucketSize()) {
+        std::string fileName;
+        fileName = bucketBox.getBucket().gen_index_str() + std::string(".stg");
+        return osgDB::readRefNodeFile(fileName, options);
+    } else if (!topLevel && bucketBox.getStartLevel() == 3) {
+        // We want an other level of indirection for paging
+        // Here we get about 12x12 deg tiles
+        return createPagedLOD(bucketBox, options);
+    } else if (!topLevel && bucketBox.getStartLevel() == 5) {
+        // We want an other level of indirection for paging
+        // Here we get about 2x2 deg tiles
         return createPagedLOD(bucketBox, options);
-    } else if (!topLevel && bucketBox.getStartLevel() == 4) {
+    } else if (!topLevel && bucketBox.getStartLevel() == 7) {
         // We want an other level of indirection for paging
+        // Here we get about 0.5x0.5 deg tiles
         return createPagedLOD(bucketBox, options);
     } else {
         BucketBox bucketBoxList[100];
@@ -238,11 +249,7 @@ ReaderWriterSPT::createPagedLOD(const BucketBox& bucketBox, const osgDB::Options
     localOptions->setPluginStringData("SimGear::PARTICLESYSTEM", "OFF");
     pagedLOD->setDatabaseOptions(localOptions.get());
         
-    float range;
-    if (bucketBox.getIsBucketSize())
-        range = 200e3;
-    else
-        range = 1e6;
+    float range = 3*sphere.getRadius();
 
     // Add the static sea level textured shell
     osg::ref_ptr<osg::Node> tile = createSeaLevelTile(bucketBox, options);