[Bf-blender-cvs] [96e39af9481] blender2.8: transform_snap_object: Fix snap to curves.

mano-wii noreply at git.blender.org
Wed Nov 21 17:09:04 CET 2018


Commit: 96e39af9481cdaf644a80936af5dda2539d60cf9
Author: mano-wii
Date:   Wed Nov 21 13:06:29 2018 -0200
Branches: blender2.8
https://developer.blender.org/rB96e39af9481cdaf644a80936af5dda2539d60cf9

transform_snap_object: Fix snap to curves.

Use `BKE_curve_texspace_get` instead `BKE_curve_boundbox_get`.
The snap to curve, even out of edit mode, is not done on the displist. So test a boundbox that covers the points seens in edit mode.

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

M	source/blender/blenkernel/BKE_curve.h
M	source/blender/blenkernel/intern/curve.c
M	source/blender/editors/transform/transform_snap_object.c

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

diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h
index 12e3492368b..be46a2dd01a 100644
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@ -89,7 +89,7 @@ void BKE_curve_curve_dimension_update(struct Curve *cu);
 void BKE_curve_boundbox_calc(struct Curve *cu, float r_loc[3], float r_size[3]);
 struct BoundBox *BKE_curve_boundbox_get(struct Object *ob);
 void BKE_curve_texspace_calc(struct Curve *cu);
-void BKE_curve_texspace_get(struct Curve *cu, float r_loc[3], float r_rot[3], float r_size[3]);
+struct BoundBox *BKE_curve_texspace_get(struct Curve *cu, float r_loc[3], float r_rot[3], float r_size[3]);
 
 bool BKE_curve_minmax(struct Curve *cu, bool use_radius, float min[3], float max[3]);
 bool BKE_curve_center_median(struct Curve *cu, float cent[3]);
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 2f960a3a349..872b5074e4e 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -357,7 +357,7 @@ void BKE_curve_texspace_calc(Curve *cu)
 	}
 }
 
-void BKE_curve_texspace_get(Curve *cu, float r_loc[3], float r_rot[3], float r_size[3])
+BoundBox *BKE_curve_texspace_get(Curve *cu, float r_loc[3], float r_rot[3], float r_size[3])
 {
 	if (cu->bb == NULL || (cu->bb->flag & BOUNDBOX_DIRTY)) {
 		BKE_curve_texspace_calc(cu);
@@ -366,6 +366,8 @@ void BKE_curve_texspace_get(Curve *cu, float r_loc[3], float r_rot[3], float r_s
 	if (r_loc) copy_v3_v3(r_loc,  cu->loc);
 	if (r_rot) copy_v3_v3(r_rot,  cu->rot);
 	if (r_size) copy_v3_v3(r_size, cu->size);
+
+	return cu->bb;
 }
 
 bool BKE_nurbList_index_get_co(ListBase *nurb, const int index, float r_co[3])
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index aecbb22072d..8c5178501a6 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -1556,7 +1556,7 @@ static short snapCurve(
 
 	if (use_obedit == false) {
 		/* Test BoundBox */
-		BoundBox *bb = BKE_curve_boundbox_get(ob);
+		BoundBox *bb = BKE_curve_texspace_get(cu, NULL, NULL, NULL);
 		if (bb) {
 			bool dummy[3];
 			/* In vertex and edges you need to get the pixel distance from ray to BoundBox, see: T46099, T46816 */



More information about the Bf-blender-cvs mailing list