From 306cf883feb5851a17c124356cc7c3c37edd8eb5 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 26 Sep 2017 18:18:41 -0700 Subject: [PATCH] don't reload animGraph if url didn't change --- libraries/animation/src/Rig.cpp | 38 +++++++++++++++++---------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index fb255fd66d..86a1e629b4 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1619,28 +1619,30 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo } void Rig::initAnimGraph(const QUrl& url) { - _animGraphURL = url; + if (_animGraphURL != url) { + _animGraphURL = url; - _animNode.reset(); + _animNode.reset(); - // load the anim graph - _animLoader.reset(new AnimNodeLoader(url)); - connect(_animLoader.get(), &AnimNodeLoader::success, [this](AnimNode::Pointer nodeIn) { - _animNode = nodeIn; - _animNode->setSkeleton(_animSkeleton); + // load the anim graph + _animLoader.reset(new AnimNodeLoader(url)); + connect(_animLoader.get(), &AnimNodeLoader::success, [this](AnimNode::Pointer nodeIn) { + _animNode = nodeIn; + _animNode->setSkeleton(_animSkeleton); - if (_userAnimState.clipNodeEnum != UserAnimState::None) { - // restore the user animation we had before reset. - UserAnimState origState = _userAnimState; - _userAnimState = { UserAnimState::None, "", 30.0f, false, 0.0f, 0.0f }; - overrideAnimation(origState.url, origState.fps, origState.loop, origState.firstFrame, origState.lastFrame); - } + if (_userAnimState.clipNodeEnum != UserAnimState::None) { + // restore the user animation we had before reset. + UserAnimState origState = _userAnimState; + _userAnimState = { UserAnimState::None, "", 30.0f, false, 0.0f, 0.0f }; + overrideAnimation(origState.url, origState.fps, origState.loop, origState.firstFrame, origState.lastFrame); + } - emit onLoadComplete(); - }); - connect(_animLoader.get(), &AnimNodeLoader::error, [url](int error, QString str) { - qCCritical(animation) << "Error loading" << url.toDisplayString() << "code = " << error << "str =" << str; - }); + emit onLoadComplete(); + }); + connect(_animLoader.get(), &AnimNodeLoader::error, [url](int error, QString str) { + qCCritical(animation) << "Error loading" << url.toDisplayString() << "code = " << error << "str =" << str; + }); + } } bool Rig::getModelRegistrationPoint(glm::vec3& modelRegistrationPointOut) const {