From cce42b6e9d09331f9d52367b5324f32ebc18c2ff Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 6 Feb 2017 03:43:08 +0100 Subject: [PATCH] Don't create a CharacterController for objects with no animations --- apps/openmw/mwmechanics/objects.cpp | 3 ++- apps/openmw/mwrender/animation.cpp | 5 +++++ apps/openmw/mwrender/animation.hpp | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/objects.cpp b/apps/openmw/mwmechanics/objects.cpp index 139825c215..a15b4cba41 100644 --- a/apps/openmw/mwmechanics/objects.cpp +++ b/apps/openmw/mwmechanics/objects.cpp @@ -29,7 +29,8 @@ void Objects::addObject(const MWWorld::Ptr& ptr) removeObject(ptr); MWRender::Animation *anim = MWBase::Environment::get().getWorld()->getAnimation(ptr); - if(anim) mObjects.insert(std::make_pair(ptr, new CharacterController(ptr, anim))); + if (anim && anim->hasAnimSources()) + mObjects.insert(std::make_pair(ptr, new CharacterController(ptr, anim))); } void Objects::removeObject(const MWWorld::Ptr& ptr) diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index cdbeffa19c..976d83a8f3 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -565,6 +565,11 @@ namespace MWRender } } + bool Animation::hasAnimSources() const + { + return !mAnimSources.empty(); + } + void Animation::clearAnimSources() { mStates.clear(); diff --git a/apps/openmw/mwrender/animation.hpp b/apps/openmw/mwrender/animation.hpp index f765a7a409..2ea369ea75 100644 --- a/apps/openmw/mwrender/animation.hpp +++ b/apps/openmw/mwrender/animation.hpp @@ -341,6 +341,8 @@ public: Animation(const MWWorld::Ptr &ptr, osg::ref_ptr parentNode, Resource::ResourceSystem* resourceSystem); virtual ~Animation(); + bool hasAnimSources() const; + MWWorld::ConstPtr getPtr() const; /// Set active flag on the object skeleton, if one exists.