1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-29 22:36:43 +00:00

Closes #1088: Quick&dirty fix for NIF filters not working properly with some mods

This commit is contained in:
scrawl 2014-01-06 19:01:05 +01:00
parent 2f35e5a04e
commit 4ad43fdf92

View file

@ -1209,20 +1209,27 @@ ObjectScenePtr Loader::createObjects(Ogre::Entity *parent, const std::string &bo
if(isskinned) if(isskinned)
{ {
// Apparently both are allowed. Sigh.
// This could also mean that filters are supposed to work on the actual node
// hierarchy, rather than just trishapes, and the 'tri ' should be omitted?
std::string filter = "@shape=tri "+bonename; std::string filter = "@shape=tri "+bonename;
std::string filter2 = "@shape="+bonename;
Misc::StringUtils::toLower(filter); Misc::StringUtils::toLower(filter);
Misc::StringUtils::toLower(filter2);
for(size_t i = 0;i < scene->mEntities.size();i++) for(size_t i = 0;i < scene->mEntities.size();i++)
{ {
Ogre::Entity *entity = scene->mEntities[i]; Ogre::Entity *entity = scene->mEntities[i];
if(entity->hasSkeleton()) if(entity->hasSkeleton())
{ {
if(entity == scene->mSkelBase || if(entity == scene->mSkelBase ||
entity->getMesh()->getName().find(filter) != std::string::npos) entity->getMesh()->getName().find(filter) != std::string::npos
|| entity->getMesh()->getName().find(filter2) != std::string::npos)
parentNode->attachObject(entity); parentNode->attachObject(entity);
} }
else else
{ {
if(entity->getMesh()->getName().find(filter) == std::string::npos) if(entity->getMesh()->getName().find(filter) == std::string::npos
|| entity->getMesh()->getName().find(filter2) == std::string::npos)
entity->detachFromParent(); entity->detachFromParent();
} }
} }