[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36397] trunk/blender/source/blender/ editors/mesh/editmesh_tools.c: Fix #27224: Extrude Repeat Mesh doesn' t have options
Sergey Sharybin
g.ulairi at gmail.com
Sat Apr 30 20:47:06 CEST 2011
Revision: 36397
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36397
Author: nazgul
Date: 2011-04-30 18:47:06 +0000 (Sat, 30 Apr 2011)
Log Message:
-----------
Fix #27224: Extrude Repeat Mesh doesn't have options
Poll function was too strict for this case that's why there was
no options in operator panel.
Additional changes:
- Added 'direction' parameter to operator so now extruding
could be made from script by providing direction vector.
- Fill this direction vection in operator's invoke functions
so abjusting offset/steps in operator panel gives better visual
feedback -- direction stays unchanged so user could easily see
final result.
- Made some tweaks to soft limits, so adjusting values by mouse
drag isn't such confusing now.
Tested in normal mode (from 3d view), as script and in background mode.
Haven't noticed any regressions.
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2011-04-30 14:39:39 UTC (rev 36396)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2011-04-30 18:47:06 UTC (rev 36397)
@@ -891,13 +891,11 @@
}
-static int extrude_repeat_mesh(bContext *C, wmOperator *op)
+static int extrude_repeat_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- RegionView3D *rv3d = ED_view3d_context_rv3d(C);
-
int steps = RNA_int_get(op->ptr,"steps");
float offs = RNA_float_get(op->ptr,"offset");
@@ -906,9 +904,7 @@
short a;
/* dvec */
- dvec[0]= rv3d->persinv[2][0];
- dvec[1]= rv3d->persinv[2][1];
- dvec[2]= rv3d->persinv[2][2];
+ RNA_float_get_array(op->ptr, "direction", dvec);
normalize_v3(dvec);
dvec[0]*= offs;
dvec[1]*= offs;
@@ -935,6 +931,17 @@
return OPERATOR_FINISHED;
}
+/* get center and axis, in global coords */
+static int extrude_repeat_mesh_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
+{
+ RegionView3D *rv3d= ED_view3d_context_rv3d(C);
+
+ if(rv3d)
+ RNA_float_set_array(op->ptr, "direction", rv3d->persinv[2]);
+
+ return extrude_repeat_mesh_exec(C, op);
+}
+
void MESH_OT_extrude_repeat(wmOperatorType *ot)
{
/* identifiers */
@@ -943,15 +950,17 @@
ot->idname= "MESH_OT_extrude_repeat";
/* api callbacks */
- ot->exec= extrude_repeat_mesh;
- ot->poll= ED_operator_editmesh_region_view3d;
+ ot->invoke= extrude_repeat_mesh_invoke;
+ ot->exec= extrude_repeat_mesh_exec;
+ ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* props */
- RNA_def_float(ot->srna, "offset", 2.0f, 0.0f, 100.0f, "Offset", "", 0.0f, FLT_MAX);
- RNA_def_int(ot->srna, "steps", 10, 0, 180, "Steps", "", 0, INT_MAX);
+ RNA_def_float(ot->srna, "offset", 2.0f, 0.0f, 100.0f, "Offset", "", 0.0f, 100.0f);
+ RNA_def_int(ot->srna, "steps", 10, 0, 180, "Steps", "", 0, 180);
+ RNA_def_float_vector(ot->srna, "direction", 3, NULL, -FLT_MAX, FLT_MAX, "Direction", "Direction of extrude", -FLT_MAX, FLT_MAX);
}
/* ************************** spin operator ******************** */
More information about the Bf-blender-cvs
mailing list