diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-02-09 18:32:39 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-02-09 18:32:39 +0300 |
commit | 97c57abfa32387fab14cb0d575c10c3908131088 (patch) | |
tree | 6d059bb1849f161115419b593b59f1d85fd81e6e /source/blender/editors/object/object_transform.c | |
parent | 5aa72b87262c1dd310c5dba7cd772b3d6b02a427 (diff) |
fix [#25994] Meshes with no vertices gets NaN location on setting origin to geometry
Diffstat (limited to 'source/blender/editors/object/object_transform.c')
-rw-r--r-- | source/blender/editors/object/object_transform.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 024e3e8a020..355f1c153cf 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -744,7 +744,9 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) total++; add_v3_v3(cent, eve->co); } - mul_v3_fl(cent, 1.0f/(float)total); + if(total) { + mul_v3_fl(cent, 1.0f/(float)total); + } } else { for(eve= em->verts.first; eve; eve= eve->next) { @@ -753,13 +755,15 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) mid_v3_v3v3(cent, min, max); } - for(eve= em->verts.first; eve; eve= eve->next) { - sub_v3_v3(eve->co, cent); - } + if(!is_zero_v3(cent)) { + for(eve= em->verts.first; eve; eve= eve->next) { + sub_v3_v3(eve->co, cent); + } - recalc_editnormals(em); - tot_change++; - DAG_id_tag_update(&obedit->id, OB_RECALC_DATA); + recalc_editnormals(em); + tot_change++; + DAG_id_tag_update(&obedit->id, OB_RECALC_DATA); + } BKE_mesh_end_editmesh(me, em); } } |