Browse Source

fixed rotated RootMotionView grid glitch

Silc 'Tokage' Renew 3 years ago
parent
commit
df89969865
1 changed files with 4 additions and 5 deletions
  1. 4 5
      scene/animation/root_motion_view.cpp

+ 4 - 5
scene/animation/root_motion_view.cpp

@@ -114,9 +114,8 @@ void RootMotionView::_notification(int p_what) {
 			first = false;
 			first = false;
 
 
 			transform.orthonormalize(); //don't want scale, too imprecise
 			transform.orthonormalize(); //don't want scale, too imprecise
-			transform.affine_invert();
 
 
-			accumulated = transform * accumulated;
+			accumulated = accumulated * transform;
 			accumulated.origin.x = Math::fposmod(accumulated.origin.x, cell_size);
 			accumulated.origin.x = Math::fposmod(accumulated.origin.x, cell_size);
 			if (zero_y) {
 			if (zero_y) {
 				accumulated.origin.y = 0;
 				accumulated.origin.y = 0;
@@ -134,9 +133,9 @@ void RootMotionView::_notification(int p_what) {
 					Vector3 from(i * cell_size, 0, j * cell_size);
 					Vector3 from(i * cell_size, 0, j * cell_size);
 					Vector3 from_i((i + 1) * cell_size, 0, j * cell_size);
 					Vector3 from_i((i + 1) * cell_size, 0, j * cell_size);
 					Vector3 from_j(i * cell_size, 0, (j + 1) * cell_size);
 					Vector3 from_j(i * cell_size, 0, (j + 1) * cell_size);
-					from = accumulated.xform(from);
-					from_i = accumulated.xform(from_i);
-					from_j = accumulated.xform(from_j);
+					from = accumulated.xform_inv(from);
+					from_i = accumulated.xform_inv(from_i);
+					from_j = accumulated.xform_inv(from_j);
 
 
 					Color c = color, c_i = color, c_j = color;
 					Color c = color, c_i = color, c_j = color;
 					c.a *= MAX(0, 1.0 - from.length() / radius);
 					c.a *= MAX(0, 1.0 - from.length() / radius);