diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index d96814ff04..352ab4d701 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -194,7 +194,7 @@ AnimationPointer ModelEntityItem::getAnimation(const QString& url) { void ModelEntityItem::mapJoints(const QStringList& modelJointNames) { // if we don't have animation, or we're already joint mapped then bail early - if (!hasAnimation() || _jointMappingCompleted) { + if (!hasAnimation() || jointsMapped()) { return; } @@ -208,6 +208,7 @@ void ModelEntityItem::mapJoints(const QStringList& modelJointNames) { _jointMapping[i] = animationJointNames.indexOf(modelJointNames[i]); } _jointMappingCompleted = true; + _jointMappingURL = _animationProperties.getURL(); } } } diff --git a/libraries/entities/src/ModelEntityItem.h b/libraries/entities/src/ModelEntityItem.h index ac70c73654..b08fed5970 100644 --- a/libraries/entities/src/ModelEntityItem.h +++ b/libraries/entities/src/ModelEntityItem.h @@ -104,7 +104,7 @@ public: void mapJoints(const QStringList& modelJointNames); void getAnimationFrame(bool& newFrame, QVector& rotationsResult, QVector& translationsResult); - bool jointsMapped() const { return _jointMappingCompleted; } + bool jointsMapped() const { return _jointMappingURL == getAnimationURL() && _jointMappingCompleted; } bool getAnimationIsPlaying() const { return _animationLoop.getRunning(); } float getAnimationCurrentFrame() const { return _animationLoop.getCurrentFrame(); } @@ -146,6 +146,7 @@ protected: // used on client side bool _jointMappingCompleted; QVector _jointMapping; + QString _jointMappingURL; static AnimationPointer getAnimation(const QString& url); static QMap _loadedAnimations;