[Bf-blender-cvs] [9c78d9ba9f1] blender2.8: Fix pose transformation helper lines

Dalai Felinto noreply at git.blender.org
Thu May 3 13:05:44 CEST 2018


Commit: 9c78d9ba9f169005527ba77d1f758fd1d3ebeb42
Author: Dalai Felinto
Date:   Thu May 3 12:57:34 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB9c78d9ba9f169005527ba77d1f758fd1d3ebeb42

Fix pose transformation helper lines

This was broken since 33bb8b785a9 (triple-buffer changes).
This also helps help lines as a whole.

===================================================================

M	source/blender/editors/transform/transform.c

===================================================================

diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 28c2ea3b824..4b415ffde9e 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1717,10 +1717,29 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
 
 	if (t->helpline != HLP_NONE) {
 		float cent[2];
-		float mval[3] = { x, y, 0.0f };
+		float mval[3] = {
+		    x,
+		    y,
+		    0.0f,
+		};
+		float tmval[2] = {
+		    (float)t->mval[0],
+		    (float)t->mval[1],
+		};
 
 		projectFloatViewEx(t, t->center_global, cent, V3D_PROJ_TEST_CLIP_ZERO);
 
+		/* Offset the values for the area region. */
+		const float offset[2] = {
+		    t->ar->winrct.xmin,
+		    t->ar->winrct.ymin,
+		};
+
+		for (int i = 0; i < 2; i++) {
+			cent[i] += offset[i];
+			tmval[i] += offset[i];
+		}
+
 		gpuPushMatrix();
 
 		/* Dashed lines first. */
@@ -1745,7 +1764,7 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
 
 			immBegin(GWN_PRIM_LINES, 2);
 			immVertex2fv(POS_INDEX, cent);
-			immVertex2f(POS_INDEX, (float)t->mval[0], (float)t->mval[1]);
+			immVertex2f(POS_INDEX, tmval[0], tmval[1]);
 			immEnd();
 
 			immUnbindProgram();
@@ -1762,7 +1781,7 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
 				immUniformThemeColor(TH_VIEW_OVERLAY);
 
 				gpuTranslate3fv(mval);
-				gpuRotateAxis(-RAD2DEGF(atan2f(cent[0] - t->mval[0], cent[1] - t->mval[1])), 'Z');
+				gpuRotateAxis(-RAD2DEGF(atan2f(cent[0] - tmval[0], cent[1] - tmval[1])), 'Z');
 
 				glLineWidth(3.0f);
 				drawArrow(UP, 5, 10, 5);
@@ -1787,7 +1806,7 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
 				break;
 			case HLP_ANGLE:
 			{
-				float dx = t->mval[0] - cent[0], dy = t->mval[1] - cent[1];
+				float dx = tmval[0] - cent[0], dy = tmval[1] - cent[1];
 				float angle = atan2f(dy, dx);
 				float dist = hypotf(dx, dy);
 				float delta_angle = min_ff(15.0f / dist, (float)M_PI / 4.0f);
@@ -1795,7 +1814,7 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
 
 				immUniformThemeColor(TH_VIEW_OVERLAY);
 
-				gpuTranslate3f(cent[0] - t->mval[0] + mval[0], cent[1] - t->mval[1] + mval[1], 0);
+				gpuTranslate3f(cent[0] - tmval[0] + mval[0], cent[1] - tmval[1] + mval[1], 0);
 
 				glLineWidth(3.0f);
 				drawArc(dist, angle - delta_angle, angle - spacing_angle, 10);



More information about the Bf-blender-cvs mailing list