Move node when inserting into a nodes map

esm4-texture
elsid 8 months ago
parent aecdf04705
commit d9d8802f3a
No known key found for this signature in database
GPG Key ID: 4DE04C198CBA7625

@ -711,15 +711,15 @@ namespace MWRender
continue; continue;
} }
auto emplaced = nodes.emplace(cnode, InstanceList()); const auto emplaced = nodes.emplace(std::move(cnode), InstanceList());
if (emplaced.second) if (emplaced.second)
{ {
analyzeVisitor.mDistances = LODRange{ smallestDistanceToChunk, higherDistanceToChunk } / ref.mScale; analyzeVisitor.mDistances = LODRange{ smallestDistanceToChunk, higherDistanceToChunk } / ref.mScale;
const_cast<osg::Node*>(cnode.get()) const osg::Node* const nodePtr = emplaced.first->first.get();
->accept( // const-trickery required because there is no const version of NodeVisitor
analyzeVisitor); // const-trickery required because there is no const version of NodeVisitor const_cast<osg::Node*>(nodePtr)->accept(analyzeVisitor);
emplaced.first->second.mAnalyzeResult = analyzeVisitor.retrieveResult(); emplaced.first->second.mAnalyzeResult = analyzeVisitor.retrieveResult();
emplaced.first->second.mNeedCompile = compile && cnode->referenceCount() <= 3; emplaced.first->second.mNeedCompile = compile && nodePtr->referenceCount() <= 2;
} }
else else
analyzeVisitor.addInstance(emplaced.first->second.mAnalyzeResult); analyzeVisitor.addInstance(emplaced.first->second.mAnalyzeResult);

Loading…
Cancel
Save