]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/model/ModelRegistry.cxx
Improved tile cache priority scheme.
[simgear.git] / simgear / scene / model / ModelRegistry.cxx
index 2bf8c878e0fa9c9b362a174fb3b3426147492c6d..a4fb94c9fc2b6561ffca032da2e56fef961d3bd5 100644 (file)
@@ -55,6 +55,8 @@
 #include <simgear/props/condition.hxx>
 
 #include "BoundingVolumeBuildVisitor.hxx"
+#include "model.hxx"
+#include "SGReaderWriterXMLOptions.hxx"
 
 using namespace std;
 using namespace osg;
@@ -207,7 +209,7 @@ ModelRegistry::readImage(const string& fileName,
     {
         if (iter != imageCallbackMap.end() && iter->second.valid())
             return iter->second->readImage(fileName, opt);
-        string absFileName = findDataFile(fileName, opt);
+        string absFileName = SGModelLib::findDataFile(fileName, opt);
         if (!fileExists(absFileName)) {
             SG_LOG(SG_IO, SG_ALERT, "Cannot find image file \""
                    << fileName << "\"");
@@ -297,7 +299,7 @@ string OSGSubstitutePolicy::substitute(const string& name,
 {
     string fileSansExtension = getNameLessExtension(name);
     string osgFileName = fileSansExtension + ".osg";
-    string absFileName = findDataFile(osgFileName, opt);
+    string absFileName = SGModelLib::findDataFile(osgFileName, opt);
     return absFileName;
 }
 
@@ -384,7 +386,7 @@ public:
 
 static SGReadCallbackInstaller readCallbackInstaller;
 
-// we get optimal geometry from the loader.
+// we get optimal geometry from the loader (Hah!).
 struct ACOptimizePolicy : public OptimizeModelPolicy {
     ACOptimizePolicy(const string& extension)  :
         OptimizeModelPolicy(extension)
@@ -408,6 +410,10 @@ struct ACOptimizePolicy : public OptimizeModelPolicy {
                 && group->getNumChildren() == 1)
                 optimized = static_cast<Node*>(group->getChild(0));
         }
+        const SGReaderWriterXMLOptions* sgopt
+            = dynamic_cast<const SGReaderWriterXMLOptions*>(opt);
+        if (sgopt && sgopt->getInstantiateEffects())
+            optimized = instantiateEffects(optimized.get(), sgopt);
         return optimized.release();
     }
 };