diff options
author | mano-wii <germano.costa@ig.com.br> | 2018-11-21 18:06:29 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2018-11-21 18:07:51 +0300 |
commit | 96e39af9481cdaf644a80936af5dda2539d60cf9 (patch) | |
tree | 8c627c0dc1f67641903610298adb836f79675868 | |
parent | cec83e92e6160adf1e39e0173c77743cb1ff1be7 (diff) |
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.
-rw-r--r-- | source/blender/blenkernel/BKE_curve.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/curve.c | 4 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 2 |
3 files changed, 5 insertions, 3 deletions
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 */ |