From 44c363dd3fe742fb8dbba43227ac63de1b9f48c2 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 9 May 2005 15:29:18 +0000 Subject: [PATCH] Added code to prevent ProxyNode's from been "flattened" by osgUtil::Optimizer::FlattenStaticTransforms. --- include/osgUtil/Optimizer | 1 + src/osgUtil/Optimizer.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/osgUtil/Optimizer b/include/osgUtil/Optimizer index 44618b9a2..49d92a80d 100644 --- a/include/osgUtil/Optimizer +++ b/include/osgUtil/Optimizer @@ -261,6 +261,7 @@ class OSGUTIL_EXPORT Optimizer virtual void apply(osg::Node& geode); virtual void apply(osg::Geode& geode); virtual void apply(osg::Billboard& geode); + virtual void apply(osg::ProxyNode& node); virtual void apply(osg::Transform& transform); bool removeTransforms(osg::Node* nodeWeCannotRemove); diff --git a/src/osgUtil/Optimizer.cpp b/src/osgUtil/Optimizer.cpp index 208c23cfe..393dd53b2 100644 --- a/src/osgUtil/Optimizer.cpp +++ b/src/osgUtil/Optimizer.cpp @@ -675,6 +675,7 @@ class CollectLowestTransformsVisitor : public Optimizer::BaseOptimizerVisitor { // disable if object is a light point node. if (strcmp(node->className(),"LightPointNode")==0) return false; + if (dynamic_cast(node)) return false; return BaseOptimizerVisitor::isOperationPermissibleForObject(node); } @@ -1005,6 +1006,15 @@ void Optimizer::FlattenStaticTransformsVisitor::apply(osg::Node& node) traverse(node); } + +void Optimizer::FlattenStaticTransformsVisitor::apply(osg::ProxyNode& node) +{ + _excludedNodeSet.insert(&node); + + traverse(node); +} + + void Optimizer::FlattenStaticTransformsVisitor::apply(osg::Geode& geode) { if (!_transformStack.empty())