mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 15:29:55 +00:00
Preserve node level data variance when merging objects in the active grid
This commit is contained in:
parent
43f25fea5d
commit
0a07b1eb3a
2 changed files with 11 additions and 3 deletions
|
@ -202,6 +202,7 @@
|
||||||
Bug #8206: Moving away from storm wind origin should make you faster
|
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 #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 #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 #1415: Infinite fall failsafe
|
||||||
Feature #2566: Handle NAM9 records for manual cell references
|
Feature #2566: Handle NAM9 records for manual cell references
|
||||||
Feature #3501: OpenMW-CS: Instance Editing - Shortcuts for axial locking
|
Feature #3501: OpenMW-CS: Instance Editing - Shortcuts for axial locking
|
||||||
|
|
|
@ -133,11 +133,18 @@ namespace MWRender
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool mOptimizeBillboards = true;
|
bool mOptimizeBillboards = true;
|
||||||
|
bool mActiveGrid = false;
|
||||||
LODRange mDistances = { 0.f, 0.f };
|
LODRange mDistances = { 0.f, 0.f };
|
||||||
osg::Vec3f mViewVector;
|
osg::Vec3f mViewVector;
|
||||||
osg::Node::NodeMask mCopyMask = ~0u;
|
osg::Node::NodeMask mCopyMask = ~0u;
|
||||||
mutable std::vector<const osg::Node*> mNodePath;
|
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)
|
void copy(const osg::Node* toCopy, osg::Group* attachTo)
|
||||||
{
|
{
|
||||||
const osg::Group* groupToCopy = toCopy->asGroup();
|
const osg::Group* groupToCopy = toCopy->asGroup();
|
||||||
|
@ -203,7 +210,8 @@ namespace MWRender
|
||||||
mNodePath.push_back(node);
|
mNodePath.push_back(node);
|
||||||
|
|
||||||
osg::Node* cloned = static_cast<osg::Node*>(node->clone(*this));
|
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->setUserDataContainer(nullptr);
|
||||||
cloned->setName("");
|
cloned->setName("");
|
||||||
|
|
||||||
|
@ -720,8 +728,7 @@ namespace MWRender
|
||||||
osg::ref_ptr<osg::Group> mergeGroup = new osg::Group;
|
osg::ref_ptr<osg::Group> mergeGroup = new osg::Group;
|
||||||
osg::ref_ptr<Resource::TemplateMultiRef> templateRefs = new Resource::TemplateMultiRef;
|
osg::ref_ptr<Resource::TemplateMultiRef> templateRefs = new Resource::TemplateMultiRef;
|
||||||
osgUtil::StateToCompile stateToCompile(0, nullptr);
|
osgUtil::StateToCompile stateToCompile(0, nullptr);
|
||||||
CopyOp copyop;
|
CopyOp copyop(activeGrid, copyMask);
|
||||||
copyop.mCopyMask = copyMask;
|
|
||||||
for (const auto& pair : nodes)
|
for (const auto& pair : nodes)
|
||||||
{
|
{
|
||||||
const osg::Node* cnode = pair.first;
|
const osg::Node* cnode = pair.first;
|
||||||
|
|
Loading…
Reference in a new issue