فهرست منبع

Merge pull request #3858 from JoshuaGrams/blend3

AnimationTreePlayer (Blend3): process all inputs.
Rémi Verschelde 9 سال پیش
والد
کامیت
46bfcd3507
1فایلهای تغییر یافته به همراه12 افزوده شده و 11 حذف شده
  1. 12 11
      scene/animation/animation_tree_player.cpp

+ 12 - 11
scene/animation/animation_tree_player.cpp

@@ -607,20 +607,21 @@ float AnimationTreePlayer::_process_node(const StringName& p_node,AnimationNode
 			Blend3Node *bn = static_cast<Blend3Node*>(nb);
 			Blend3Node *bn = static_cast<Blend3Node*>(nb);
 
 
 			float rem;
 			float rem;
-
-			if (bn->value==0) {
-				rem = _process_node(bn->inputs[1].node,r_prev_anim,p_weight,p_time,switched,p_seek,p_filter,p_reverse_weight);
-			} else if (bn->value>0) {
-
-				rem = _process_node(bn->inputs[1].node,r_prev_anim,p_weight*(1.0-bn->value),p_time,switched,p_seek,p_filter,p_reverse_weight*(1.0-bn->value));
-				_process_node(bn->inputs[2].node,r_prev_anim,p_weight*bn->value,p_time,switched,p_seek,p_filter,p_reverse_weight*bn->value);
-
+			float blend, lower_blend, upper_blend;
+			if (bn->value < 0) {
+				lower_blend = -bn->value;
+				blend = 1.0 - lower_blend;
+				upper_blend = 0;
 			} else {
 			} else {
-
-				rem = _process_node(bn->inputs[1].node,r_prev_anim,p_weight*(1.0+bn->value),p_time,switched,p_seek,p_filter,p_reverse_weight*(1.0+bn->value));
-				_process_node(bn->inputs[0].node,r_prev_anim,p_weight*-bn->value,p_time,switched,p_seek,p_filter,p_reverse_weight*-bn->value);
+				lower_blend = 0;
+				blend = 1.0 - bn->value;
+				upper_blend = bn->value;
 			}
 			}
 
 
+			rem = _process_node(bn->inputs[1].node,r_prev_anim,p_weight*blend,p_time,switched,p_seek,p_filter,p_reverse_weight*blend);
+			_process_node(bn->inputs[2].node,r_prev_anim,p_weight*upper_blend,p_time,switched,p_seek,p_filter,p_reverse_weight*upper_blend);
+			_process_node(bn->inputs[0].node,r_prev_anim,p_weight*lower_blend,p_time,switched,p_seek,p_filter,p_reverse_weight*lower_blend);
+
 			return rem;
 			return rem;
 		} break;
 		} break;
 		case NODE_BLEND4: {
 		case NODE_BLEND4: {