diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2019-12-10 15:58:38 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2019-12-10 16:01:40 +0300 |
commit | e71fe924c558f7115ac9cdd41d7c4668bc15d308 (patch) | |
tree | c9c2d5943fc8b8c329196912e7797ac9e7cb13c5 /source/blender/makesrna/intern/rna_armature.c | |
parent | daf290dcc80ce5b0904cb92c1696184e8c319ff9 (diff) |
Fix T71609: Resizing bone length to 0 gets it stuck to that size
The result of normalising the bone vector wasn't checked, so it resulted
in a zero-length vector being multiplied with the desired length. Choosing
an arbitrary vector prevents the bone being 'stuck' at zero length.
Thanks @mano-wii for the patch.
Diffstat (limited to 'source/blender/makesrna/intern/rna_armature.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_armature.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index b09a19bb39f..232f3d86fd3 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -497,7 +497,12 @@ static void rna_EditBone_length_set(PointerRNA *ptr, float length) float delta[3]; sub_v3_v3v3(delta, ebone->tail, ebone->head); - normalize_v3(delta); + if (normalize_v3(delta) == 0.0f) { + /* Zero length means directional information is lost. Choose arbitrary direction to avoid + * getting stuck. */ + delta[2] = 1.0f; + } + madd_v3_v3v3fl(ebone->tail, ebone->head, delta, length); } |