diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-01-04 11:52:13 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-01-04 11:52:13 +0300 |
commit | 1b8c3774a86ebc04fceb9cdf787f9b731f0ebb96 (patch) | |
tree | 8a3e9e51757cbada85be253dc5d060288c3c3859 /source/blender/blenkernel | |
parent | c6405f5ee8fe38ddc469c3f1d04a9c877141ce83 (diff) |
Fix T54771: Can't change multiple dimensions at once
- Use non-rna button for adjusting dimensions.
- Make Object.dimensions RNA read-only since it never worked well.
This is mainly a UI editing feature.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_object.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index 8a3bf81911d..329be174632 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -184,7 +184,7 @@ void BKE_boundbox_minmax(const struct BoundBox *bb, float obmat[4][4], float r_m struct BoundBox *BKE_object_boundbox_get(struct Object *ob); void BKE_object_dimensions_get(struct Object *ob, float vec[3]); -void BKE_object_dimensions_set(struct Object *ob, const float value[3]); +void BKE_object_dimensions_set(struct Object *ob, const float value[3], int axis_mask); void BKE_object_empty_draw_type_set(struct Object *ob, const int value); void BKE_object_boundbox_flag(struct Object *ob, int flag, const bool set); void BKE_object_boundbox_calc_from_mesh(struct Object *ob, struct Mesh *me_eval); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 8ab3962d930..80a59216f60 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2548,7 +2548,7 @@ void BKE_object_dimensions_get(Object *ob, float vec[3]) } } -void BKE_object_dimensions_set(Object *ob, const float value[3]) +void BKE_object_dimensions_set(Object *ob, const float value[3], int axis_mask) { BoundBox *bb = NULL; @@ -2560,9 +2560,13 @@ void BKE_object_dimensions_set(Object *ob, const float value[3]) len[1] = bb->vec[2][1] - bb->vec[0][1]; len[2] = bb->vec[1][2] - bb->vec[0][2]; - if (len[0] > 0.f) ob->size[0] = value[0] / len[0]; - if (len[1] > 0.f) ob->size[1] = value[1] / len[1]; - if (len[2] > 0.f) ob->size[2] = value[2] / len[2]; + for (int i = 0; i < 3; i++) { + if (((1 << i) & axis_mask) == 0) { + if (len[i] > 0.0f) { + ob->size[i] = value[i] / len[i]; + } + } + } } } |