[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46603] trunk/blender/source/blender/ editors/object/object_transform.c: fix geometry to origin in mesh editmode - was broken since bmesh merge.
Campbell Barton
ideasman42 at gmail.com
Sun May 13 13:14:43 CEST 2012
Revision: 46603
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46603
Author: campbellbarton
Date: 2012-05-13 11:14:43 +0000 (Sun, 13 May 2012)
Log Message:
-----------
fix geometry to origin in mesh editmode - was broken since bmesh merge.
Modified Paths:
--------------
trunk/blender/source/blender/editors/object/object_transform.c
Modified: trunk/blender/source/blender/editors/object/object_transform.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_transform.c 2012-05-13 11:05:52 UTC (rev 46602)
+++ trunk/blender/source/blender/editors/object/object_transform.c 2012-05-13 11:14:43 UTC (rev 46603)
@@ -653,7 +653,7 @@
Scene *scene = CTX_data_scene(C);
Object *obedit = CTX_data_edit_object(C);
Object *tob;
- float cursor[3], cent[3], cent_neg[3], centn[3], min[3], max[3];
+ float cursor[3], cent[3], cent_neg[3], centn[3];
int centermode = RNA_enum_get(op->ptr, "type");
int around = RNA_enum_get(op->ptr, "center"); /* initialized from v3d->around */
@@ -675,14 +675,11 @@
zero_v3(cent);
if (obedit) {
- INIT_MINMAX(min, max);
-
if (obedit->type == OB_MESH) {
Mesh *me = obedit->data;
BMEditMesh *em = me->edit_btmesh;
BMVert *eve;
BMIter iter;
- int total = 0;
if (centermode == ORIGIN_TO_CURSOR) {
copy_v3_v3(cent, cursor);
@@ -690,16 +687,19 @@
mul_m4_v3(obedit->imat, cent);
}
else {
- BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
- if (around == V3D_CENTROID) {
- total++;
- add_v3_v3(cent, eve->co);
- mul_v3_fl(cent, 1.0f / (float)total);
+ if (around == V3D_CENTROID) {
+ const float total_div = 1.0f / (float)em->bm->totvert;
+ BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
+ madd_v3_v3fl(cent, eve->co, total_div);
}
- else {
+ }
+ else {
+ float min[3], max[3];
+ INIT_MINMAX(min, max);
+ BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
minmax_v3v3_v3(min, max, eve->co);
- mid_v3_v3v3(cent, min, max);
}
+ mid_v3_v3v3(cent, min, max);
}
}
@@ -746,8 +746,11 @@
tot_lib_error++;
}
else {
- if (centermode == ORIGIN_TO_CURSOR) { /* done */ }
+ if (centermode == ORIGIN_TO_CURSOR) {
+ /* done */
+ }
else {
+ float min[3], max[3];
/* only bounds support */
INIT_MINMAX(min, max);
BKE_object_minmax_dupli(scene, ob, min, max);
More information about the Bf-blender-cvs
mailing list