From 4eb2a5cf5e900a80abda46677038b0e88de53445 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 17 Jan 2018 19:25:20 -0800 Subject: [PATCH] added a property check in renderableModelEntity for the animation url this fixes the bug stopping you from changing animations on an entity --- .../src/RenderableModelEntityItem.cpp | 14 +++++++++++++- .../src/RenderableModelEntityItem.h | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 827507c3aa..684540453b 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1394,7 +1394,19 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce // That is where _currentFrame and _lastAnimated were updated. if (_animating) { DETAILED_PROFILE_RANGE(simulation_physics, "Animate"); - if (!jointsMapped()) { + // check animation url change + auto newprops = entity->getAnimationProperties(); + if (newprops != _previousAnimationProperties) { + if (newprops.getURL() != _previousAnimationProperties.getURL()) { + _animation = DependencyManager::get()->getAnimation(entity->getAnimationURL()); + _jointMappingCompleted = false; + mapJoints(entity, model->getJointNames()); + } + _previousAnimationProperties = newprops; + } + // + if (!jointsMapped() || _animation->getURL().toString() != entity->getAnimationURL()) { + qCDebug(entitiesrenderer) << "changed animation or started animation"; mapJoints(entity, model->getJointNames()); } if (!(entity->getAnimationFirstFrame() < 0) && !(entity->getAnimationFirstFrame() > entity->getAnimationLastFrame())) { diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index b3988e0239..ce4d44daf8 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -193,6 +193,9 @@ private: bool _animating { false }; uint64_t _lastAnimated { 0 }; + //fix test + AnimationPropertyGroup _previousAnimationProperties; + render::ItemKey _itemKey { render::ItemKey::Builder().withTypeMeta() }; };