Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2021-03-07 15:05:34 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2021-03-08 17:18:16 +0300
commite20b31504a2381011e60c5eadffb67f18918bc71 (patch)
treeba0174c78ba17d176b105ed0620617095d92e36b /source/blender/editors/mesh
parent91825ebfe2cb8ecf6d5c02e11783e44aaa1add84 (diff)
Fix T86347: Add Primitive Tool fails for 1x1x1 scale
The Tool stores desired dimensions as `scale` and thus had to half the scale again in `make_prim_init()` because by default all primitives are created at a size of 2 in blender. This worked, but: - [1] it logged something like size=2, scale=2,2,2 for a 2x2x2 cube [which does not sound right, it should be size=2 scale=1,1,1] - [2] it had to make an exception for the case scale is exactly 1x1x1 [this happens when the property is not set specifically, e.g. adding primitives from the menu] -- this exception led to double sized primitives being created when the tool asked for exact dimensions of 1x1x1 Now - instead of compensating in `make_prim_init()` - do this earlier in the tool itself, see `view3d_interactive_add_modal`, this fixes the bug and now also correctly logs size=2 scale 0.5,0.5,0.5 for a 1x1x1 cube. Maniphest Tasks: T86347 Differential Revision: https://developer.blender.org/D10632
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r--source/blender/editors/mesh/editmesh_add.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index d60d83850a5..582ff01173a 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -75,11 +75,8 @@ static Object *make_prim_init(bContext *C,
ED_object_new_primitive_matrix(C, obedit, loc, rot, r_creation_data->mat);
- if (scale && !equals_v3v3(scale, (const float[3]){1.0f, 1.0f, 1.0f})) {
- float scale_half[3];
- copy_v3_v3(scale_half, scale);
- mul_v3_fl(scale_half, 0.5f);
- rescale_m4(r_creation_data->mat, scale_half);
+ if (scale) {
+ rescale_m4(r_creation_data->mat, scale);
}
return obedit;