From 81e9212db9369028427235f4a8c26bbb9222a503 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 6 Apr 2022 05:44:03 +0300 Subject: [PATCH 1/2] Slightly optimize MergeGroupsVisitor's xenophobia --- components/sceneutil/optimizer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/sceneutil/optimizer.cpp b/components/sceneutil/optimizer.cpp index 748ceee952..ae0985d57c 100644 --- a/components/sceneutil/optimizer.cpp +++ b/components/sceneutil/optimizer.cpp @@ -1935,8 +1935,8 @@ bool Optimizer::MergeGroupsVisitor::isOperationPermissible(osg::Group& node) return !node.getCullCallback() && !node.getEventCallback() && !node.getUpdateCallback() && - isOperationPermissibleForObject(&node) && - typeid(node)==typeid(osg::Group); + typeid(node)==typeid(osg::Group) && + isOperationPermissibleForObject(&node); } void Optimizer::MergeGroupsVisitor::apply(osg::LOD &lod) From eafa66ff40eabc8006ea221da64470a63ed5d047 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 6 Apr 2022 06:42:06 +0300 Subject: [PATCH 2/2] Don't consider NiCollisionSwitch unoptimizeable --- components/nifosg/nifloader.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index 3007bc6cf2..8ed17f3901 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -517,13 +517,6 @@ namespace NifOsg if (!node) node = new NifOsg::MatrixTransform(nifNode->trafo); - if (nifNode->recType == Nif::RC_NiCollisionSwitch && !(nifNode->flags & Nif::NiNode::Flag_ActiveCollision)) - { - node->setNodeMask(Loader::getIntersectionDisabledNodeMask()); - // This node must not be combined with another node. - dataVariance = osg::Object::DYNAMIC; - } - node->setDataVariance(dataVariance); return node; @@ -639,6 +632,9 @@ namespace NifOsg node->setNodeMask(Loader::getHiddenNodeMask()); } + if (nifNode->recType == Nif::RC_NiCollisionSwitch && !(nifNode->flags & Nif::NiNode::Flag_ActiveCollision)) + node->setNodeMask(Loader::getIntersectionDisabledNodeMask()); + osg::ref_ptr composite = new SceneUtil::CompositeStateSetUpdater; applyNodeProperties(nifNode, node, composite, imageManager, boundTextures, animflags);