Merge branch 'activewetshoes' into 'master'

Preserve node level data variance when merging objects in the active grid

Closes #8231

See merge request OpenMW/openmw!4456
master
AnyOldName3 1 month ago
commit 4a911a647d

@ -202,6 +202,7 @@
Bug #8206: Moving away from storm wind origin should make you faster
Bug #8207: Using hand-to-hand while sneaking plays the critical hit sound when the target is not getting hurt
Bug #8208: The launcher's view distance option's minimum value isn't capped to Vanilla's minimum
Bug #8231: AGOP doesn't like NiCollisionSwitch
Feature #1415: Infinite fall failsafe
Feature #2566: Handle NAM9 records for manual cell references
Feature #3501: OpenMW-CS: Instance Editing - Shortcuts for axial locking

@ -133,11 +133,18 @@ namespace MWRender
{
public:
bool mOptimizeBillboards = true;
bool mActiveGrid = false;
LODRange mDistances = { 0.f, 0.f };
osg::Vec3f mViewVector;
osg::Node::NodeMask mCopyMask = ~0u;
mutable std::vector<const osg::Node*> mNodePath;
CopyOp(bool activeGrid, osg::Node::NodeMask copyMask)
: mActiveGrid(activeGrid)
, mCopyMask(copyMask)
{
}
void copy(const osg::Node* toCopy, osg::Group* attachTo)
{
const osg::Group* groupToCopy = toCopy->asGroup();
@ -203,7 +210,8 @@ namespace MWRender
mNodePath.push_back(node);
osg::Node* cloned = static_cast<osg::Node*>(node->clone(*this));
cloned->setDataVariance(osg::Object::STATIC);
if (!mActiveGrid)
cloned->setDataVariance(osg::Object::STATIC);
cloned->setUserDataContainer(nullptr);
cloned->setName("");
@ -720,8 +728,7 @@ namespace MWRender
osg::ref_ptr<osg::Group> mergeGroup = new osg::Group;
osg::ref_ptr<Resource::TemplateMultiRef> templateRefs = new Resource::TemplateMultiRef;
osgUtil::StateToCompile stateToCompile(0, nullptr);
CopyOp copyop;
copyop.mCopyMask = copyMask;
CopyOp copyop(activeGrid, copyMask);
for (const auto& pair : nodes)
{
const osg::Node* cnode = pair.first;

Loading…
Cancel
Save