]> git.mxchange.org Git - simgear.git/commitdiff
optimize groups from .AC file optimizer run
authortimoore <timoore>
Fri, 21 Dec 2007 06:25:40 +0000 (06:25 +0000)
committertimoore <timoore>
Fri, 21 Dec 2007 06:25:40 +0000 (06:25 +0000)
simgear/scene/model/ModelRegistry.cxx

index 1b9eebeb3817d89f7fd6e0b2d3cc49008f50db8a..a4cef6abab10f086dbd586edb99e2cb24f98f302 100644 (file)
@@ -441,6 +441,24 @@ struct ACOptimizePolicy : public OptimizeModelPolicy {
     {
         _osgOptions &= ~Optimizer::TRISTRIP_GEOMETRY;
     }
+    Node* optimize(Node* node, const string& fileName,
+                   const ReaderWriter::Options* opt)
+    {
+        ref_ptr<Node> optimized
+            = OptimizeModelPolicy::optimize(node, fileName, opt);
+        MatrixTransform* transform
+            = dynamic_cast<MatrixTransform*>(optimized.get());
+        if (transform && transform->getMatrix().isIdentity()
+            && transform->getName().empty()
+            && transform->getNumChildren() == 1) {
+            optimized = static_cast<Node*>(transform->getChild(0));
+            Group* group = dynamic_cast<Group*>(optimized.get());
+            if (group && group->getName().empty()
+                && group->getNumChildren() == 1)
+                optimized = static_cast<Node*>(group->getChild(0));
+        }
+        return optimized.release();
+    }
 };
 
 struct ACProcessPolicy {