[Bf-blender-cvs] [c87d6048b9a] blender2.8: Multi-Objects: Fix edit mesh texts drawing in the wrong place

Dalai Felinto noreply at git.blender.org
Fri Sep 28 18:41:03 CEST 2018


Commit: c87d6048b9ade04d5a73b41cc97919d978913821
Author: Dalai Felinto
Date:   Fri Sep 28 13:37:28 2018 -0300
Branches: blender2.8
https://developer.blender.org/rBc87d6048b9ade04d5a73b41cc97919d978913821

Multi-Objects: Fix edit mesh texts drawing in the wrong place

It was always drawing on the active object localspace.

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

M	source/blender/draw/modes/edit_mesh_mode_text.c

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

diff --git a/source/blender/draw/modes/edit_mesh_mode_text.c b/source/blender/draw/modes/edit_mesh_mode_text.c
index 2874a9d60da..e81f181d636 100644
--- a/source/blender/draw/modes/edit_mesh_mode_text.c
+++ b/source/blender/draw/modes/edit_mesh_mode_text.c
@@ -56,7 +56,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 	 * See bug #36090.
 	 */
 	struct DRWTextStore *dt = DRW_text_cache_ensure();
-	const short txt_flag = DRW_TEXT_CACHE_LOCALCLIP | (unit->system ? 0 : DRW_TEXT_CACHE_ASCII);
+	const short txt_flag = DRW_TEXT_CACHE_GLOBALSPACE | (unit->system ? 0 : DRW_TEXT_CACHE_ASCII);
 	Mesh *me = ob->data;
 	BMEditMesh *em = me->edit_btmesh;
 	float v1[3], v2[3], v3[3], vmid[3], fvec[3];
@@ -110,6 +110,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 				if (clip_segment_v3_plane_n(v1, v2, clip_planes, 4, v1_clip, v2_clip)) {
 
 					mid_v3_v3v3(vmid, v1_clip, v2_clip);
+					mul_m4_v3(ob->obmat, vmid);
 
 					if (do_global) {
 						mul_mat3_m4_v3(ob->obmat, v1);
@@ -165,6 +166,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 						float angle;
 
 						mid_v3_v3v3(vmid, v1_clip, v2_clip);
+						mul_m4_v3(ob->obmat, vmid);
 
 						copy_v3_v3(no_a, l_a->f->no);
 						copy_v3_v3(no_b, l_b->f->no);
@@ -226,6 +228,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 				}
 
 				mul_v3_fl(vmid, 1.0f / (float)n);
+				mul_m4_v3(ob->obmat, vmid);
 
 				if (unit->system) {
 					numstr_len = bUnit_AsString(
@@ -288,6 +291,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 						        numstr, sizeof(numstr), "%.3f%s", (is_rad) ? angle : RAD2DEGF(angle),
 						                                          (is_rad) ? "r" : "°");
 						interp_v3_v3v3(fvec, vmid, v2_local, 0.8f);
+						mul_m4_v3(ob->obmat, fvec);
 						DRW_text_cache_add(dt, fvec, numstr, numstr_len, 0, 0, txt_flag, col);
 					}
 				}
@@ -307,8 +311,11 @@ void DRW_edit_mesh_mode_text_measure_stats(
 
 			BM_ITER_MESH_INDEX(v, &iter, em->bm, BM_VERTS_OF_MESH, i) {
 				if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
+					float vec[3];
+					mul_v3_m4v3(vec, ob->obmat, v->co);
+
 					numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), "%d", i);
-					DRW_text_cache_add(dt, v->co, numstr, numstr_len, 0, 0, txt_flag, col);
+					DRW_text_cache_add(dt, vec, numstr, numstr_len, 0, 0, txt_flag, col);
 				}
 			}
 		}
@@ -325,6 +332,8 @@ void DRW_edit_mesh_mode_text_measure_stats(
 
 					if (clip_segment_v3_plane_n(v1, v2, clip_planes, 4, v1_clip, v2_clip)) {
 						mid_v3_v3v3(vmid, v1_clip, v2_clip);
+						mul_m4_v3(ob->obmat, vmid);
+
 						numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), "%d", i);
 						DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, 0, txt_flag, col);
 					}
@@ -338,6 +347,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 			BM_ITER_MESH_INDEX(f, &iter, em->bm, BM_FACES_OF_MESH, i) {
 				if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
 					BM_face_calc_center_mean(f, v1);
+					mul_m4_v3(ob->obmat, v1);
 
 					numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), "%d", i);
 					DRW_text_cache_add(dt, v1, numstr, numstr_len, 0, 0, txt_flag, col);



More information about the Bf-blender-cvs mailing list