From aad6958b686a72a6a6368a09e32a46e8789f83a8 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 2 Aug 2019 09:36:20 -0700 Subject: [PATCH] Don't evaluate overPoses if alpha is 0.0. --- libraries/animation/src/AnimOverlay.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libraries/animation/src/AnimOverlay.cpp b/libraries/animation/src/AnimOverlay.cpp index 910f9b37c0..9b6632e86f 100644 --- a/libraries/animation/src/AnimOverlay.cpp +++ b/libraries/animation/src/AnimOverlay.cpp @@ -54,15 +54,20 @@ const AnimPoseVec& AnimOverlay::evaluate(const AnimVariantMap& animVars, const A if (_children.size() >= 2) { auto& underPoses = _children[1]->evaluate(animVars, context, dt, triggersOut); - auto& overPoses = _children[0]->overlay(animVars, context, dt, triggersOut, underPoses); - if (underPoses.size() > 0 && underPoses.size() == overPoses.size()) { - _poses.resize(underPoses.size()); - assert(_boneSetVec.size() == _poses.size()); + if (_alpha == 0.0f) { + _poses = underPoses; + } else { + auto& overPoses = _children[0]->overlay(animVars, context, dt, triggersOut, underPoses); - for (size_t i = 0; i < _poses.size(); i++) { - float alpha = _boneSetVec[i] * _alpha; - ::blend(1, &underPoses[i], &overPoses[i], alpha, &_poses[i]); + if (underPoses.size() > 0 && underPoses.size() == overPoses.size()) { + _poses.resize(underPoses.size()); + assert(_boneSetVec.size() == _poses.size()); + + for (size_t i = 0; i < _poses.size(); i++) { + float alpha = _boneSetVec[i] * _alpha; + ::blend(1, &underPoses[i], &overPoses[i], alpha, &_poses[i]); + } } } }