[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32847] trunk/blender/source/blender/ editors/space_view3d/view3d_select.c: added metaball lasso select.
Campbell Barton
ideasman42 at gmail.com
Wed Nov 3 03:28:22 CET 2010
Revision: 32847
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32847
Author: campbellbarton
Date: 2010-11-03 03:28:11 +0100 (Wed, 03 Nov 2010)
Log Message:
-----------
added metaball lasso select.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/view3d_select.c
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_select.c 2010-11-03 01:59:15 UTC (rev 32846)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_select.c 2010-11-03 02:28:11 UTC (rev 32847)
@@ -700,6 +700,34 @@
}
}
+
+
+
+static void do_lasso_select_meta(ViewContext *vc, short mcords[][2], short moves, short extend, short select)
+{
+ MetaBall *mb = (MetaBall*)vc->obedit->data;
+ MetaElem *ml;
+ float vec[3];
+ short sco[2];
+
+ if (extend == 0 && select) {
+ for(ml= mb->editelems->first; ml; ml= ml->next) {
+ ml->flag &= ~SELECT;
+ }
+ }
+
+ for(ml= mb->editelems->first; ml; ml= ml->next) {
+
+ mul_v3_m4v3(vec, vc->obedit->obmat, &ml->x);
+ project_short(vc->ar, vec, sco);
+
+ if(lasso_inside(mcords, moves, sco[0], sco[1])) {
+ if(select) ml->flag |= SELECT;
+ else ml->flag &= ~SELECT;
+ }
+ }
+}
+
static void do_lasso_select_paintface(ViewContext *vc, short mcords[][2], short moves, short extend, short select)
{
Object *ob= vc->obact;
@@ -772,15 +800,27 @@
}
}
else { /* Edit Mode */
- if(vc->obedit->type==OB_MESH)
+ switch(vc->obedit->type) {
+ case OB_MESH:
do_lasso_select_mesh(vc, mcords, moves, extend, select);
- else if(vc->obedit->type==OB_CURVE || vc->obedit->type==OB_SURF)
+ break;
+ case OB_CURVE:
+ case OB_SURF:
do_lasso_select_curve(vc, mcords, moves, extend, select);
- else if(vc->obedit->type==OB_LATTICE)
+ break;
+ case OB_LATTICE:
do_lasso_select_lattice(vc, mcords, moves, extend, select);
- else if(vc->obedit->type==OB_ARMATURE)
+ break;
+ case OB_ARMATURE:
do_lasso_select_armature(vc, mcords, moves, extend, select);
-
+ break;
+ case OB_MBALL:
+ do_lasso_select_meta(vc, mcords, moves, extend, select);
+ break;
+ default:
+ assert(!"lasso select on incorrect object type");
+ }
+
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc->obedit->data);
}
}
@@ -1514,13 +1554,13 @@
if(ml->selcol1==buffer[ (4 * a) + 3 ]) {
ml->flag |= MB_SCALE_RAD;
if(select) ml->flag |= SELECT;
- else ml->flag &= ~SELECT;
+ else ml->flag &= ~SELECT;
break;
}
if(ml->selcol2==buffer[ (4 * a) + 3 ]) {
ml->flag &= ~MB_SCALE_RAD;
if(select) ml->flag |= SELECT;
- else ml->flag &= ~SELECT;
+ else ml->flag &= ~SELECT;
break;
}
}
More information about the Bf-blender-cvs
mailing list