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:
authorCampbell Barton <ideasman42@gmail.com>2013-06-28 10:54:49 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-06-28 10:54:49 +0400
commitca33bea285c1ffe74e9f6d3c6b28d7b26ebc84ab (patch)
tree55267a9afa69d00ee5f1f4f58adf0e3e2092d08e /source/blender/editors/space_view3d/view3d_snap.c
parent3370b765ec192cd53421f3f0f8d59ec5765204e9 (diff)
view-select wasn't working for metaballs.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_snap.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_snap.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c
index d243f355b5c..b9d75b12333 100644
--- a/source/blender/editors/space_view3d/view3d_snap.c
+++ b/source/blender/editors/space_view3d/view3d_snap.c
@@ -1089,6 +1089,30 @@ bool ED_view3d_minmax_verts(Object *obedit, float min[3], float max[3])
float centroid[3], vec[3], bmat[3][3];
int a;
+ /* metaballs are an exception */
+ if (obedit->type == OB_MBALL) {
+ const float scale = mat4_to_scale(obedit->obmat);
+ MetaBall *mb = obedit->data;
+ MetaElem *ml;
+ bool change = false;
+
+ for (ml = mb->elems.first; ml; ml = ml->next) {
+ if (ml->flag & SELECT) {
+ const float scale_mb = ml->rad * scale;
+ int i;
+ mul_v3_m4v3(centroid, obedit->obmat, &ml->x);
+ for (i = -1; i != 3; i += 2) {
+ copy_v3_v3(vec, centroid);
+ add_v3_fl(vec, scale_mb * i);
+ minmax_v3v3_v3(min, max, vec);
+ }
+ change = true;
+ }
+ }
+
+ return change;
+ }
+
tottrans = 0;
if (ELEM5(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE))
make_trans_verts(obedit, bmat[0], bmat[1], TM_ALL_JOINTS);