Revision: 18804 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18804 Author: shul Date: 2009-02-04 03:58:21 +0100 (Wed, 04 Feb 2009)
Log Message: ----------- mark and clear seam, set and unset sharp and vertex smoothing is now ctrl/alt 1, 2 and 3 - still a bit vague of op naming Modified Paths: -------------- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c 2009-02-04 02:55:24 UTC (rev 18803) +++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c 2009-02-04 02:58:21 UTC (rev 18804) @@ -3768,10 +3768,13 @@ } /* ************************* SEAMS AND EDGES **************** */ -void editmesh_mark_seam(EditMesh *em, int clear) +static int editmesh_mark_seam(bContext *C, wmOperator *op) { - Mesh *me= NULL; // XXX + Object *obedit= CTX_data_edit_object(C); + EditMesh *em= ((Mesh *)obedit->data)->edit_mesh; + Mesh *me= ((Mesh *)obedit->data); EditEdge *eed; + int clear = RNA_boolean_get(op->ptr, "clear"); /* auto-enable seams drawing */ if(clear==0) { @@ -3797,11 +3800,33 @@ } } + WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit); + + return OPERATOR_FINISHED; } -void editmesh_mark_sharp(EditMesh *em, int set) +void MESH_OT_mark_seam(wmOperatorType *ot) { - Mesh *me= NULL; + /* identifiers */ + ot->name= "Mark seam"; + ot->idname= "MESH_OT_mark_seam"; + + /* api callbacks */ + ot->exec= editmesh_mark_seam; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_boolean(ot->srna, "clear", 0, "Clear", ""); +} + +static int editmesh_mark_sharp(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + EditMesh *em= ((Mesh *)obedit->data)->edit_mesh; + Mesh *me= ((Mesh *)obedit->data); + int set = RNA_boolean_get(op->ptr, "set"); EditEdge *eed; /* auto-enable sharp edge drawing */ @@ -3823,8 +3848,27 @@ } } + WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit); + + return OPERATOR_FINISHED; } +void MESH_OT_mark_sharp(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Mark sharp"; + ot->idname= "MESH_OT_mark_sharp"; + + /* api callbacks */ + ot->exec= editmesh_mark_sharp; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_boolean(ot->srna, "set", 0, "Set", ""); +} + void BME_Menu() { short ret; ret= pupmenu("BME modeller%t|Select Edges of Vert%x1"); @@ -3879,10 +3923,10 @@ switch(ret) { case 1: - editmesh_mark_seam(em, 0); + //editmesh_mark_seam(em, 0); break; case 2: - editmesh_mark_seam(em, 1); + //editmesh_mark_seam(em, 1); break; case 3: // edge_rotate_selected(em, 2); @@ -4403,9 +4447,13 @@ /* **************** VERTEX DEFORMS *************** */ -void vertexsmooth(Object *obedit, EditMesh *em) +static int smooth_vertex(bContext *C, wmOperator *op) { - Scene *scene= NULL; // XXX + Scene *scene= CTX_data_scene(C); + Object *obedit= CTX_data_edit_object(C); + Mesh *me= obedit->data; + EditMesh *em= me->edit_mesh; + EditVert *eve, *eve_mir = NULL; EditEdge *eed; float *adror, *adr, fac; @@ -4413,7 +4461,7 @@ int teller=0; ModifierData *md= obedit->modifiers.first; - if(em==NULL) return; + if(em==NULL) return OPERATOR_CANCELLED; /* count */ eve= em->verts.first; @@ -4421,7 +4469,7 @@ if(eve->f & SELECT) teller++; eve= eve->next; } - if(teller==0) return; + if(teller==0) return OPERATOR_CANCELLED; adr=adror= (float *)MEM_callocN(3*sizeof(float *)*teller, "vertsmooth"); eve= em->verts.first; @@ -4530,10 +4578,27 @@ recalc_editnormals(em); + WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit); + // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); + return OPERATOR_FINISHED; } +void MESH_OT_smooth_vertex(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Smooth Vertex"; + ot->idname= "MESH_OT_smooth_vertex"; + + /* api callbacks */ + ot->exec= smooth_vertex; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_UNDO; +} + void vertexnoise(Object *obedit, EditMesh *em) { Material *ma; Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h 2009-02-04 02:55:24 UTC (rev 18803) +++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h 2009-02-04 02:58:21 UTC (rev 18804) @@ -193,6 +193,9 @@ void MESH_OT_vertices_to_sphere(struct wmOperatorType *ot); void MESH_OT_selection_type(struct wmOperatorType *ot); void MESH_OT_select_multi_loop(struct wmOperatorType *ot); +void MESH_OT_mark_seam(struct wmOperatorType *ot); +void MESH_OT_mark_sharp(struct wmOperatorType *ot); +void MESH_OT_smooth_vertex(struct wmOperatorType *ot); extern EditEdge *findnearestedge(ViewContext *vc, int *dist); extern void EM_automerge(int update); Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c 2009-02-04 02:55:24 UTC (rev 18803) +++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c 2009-02-04 02:58:21 UTC (rev 18804) @@ -161,6 +161,9 @@ WM_operatortype_append(MESH_OT_similar_edge_select); WM_operatortype_append(MESH_OT_similar_face_select); WM_operatortype_append(MESH_OT_select_multi_loop); + WM_operatortype_append(MESH_OT_mark_seam); + WM_operatortype_append(MESH_OT_mark_sharp); + WM_operatortype_append(MESH_OT_smooth_vertex); } @@ -198,7 +201,15 @@ WM_keymap_add_item(keymap, "MESH_OT_select_random", SPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_vertices_to_sphere", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT , 0); - + + WM_keymap_add_item(keymap, "MESH_OT_mark_seam", ONEKEY, KM_PRESS, KM_CTRL , 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_mark_seam", ONEKEY, KM_PRESS, KM_ALT , 0)->ptr,"clear",1); + + WM_keymap_add_item(keymap, "MESH_OT_mark_sharp", TWOKEY, KM_PRESS, KM_CTRL , 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_mark_sharp", TWOKEY, KM_PRESS, KM_ALT , 0)->ptr,"set",1); + + WM_keymap_add_item(keymap, "MESH_OT_smooth_vertex", THREEKEY, KM_PRESS, KM_CTRL , 0); + /* temp hotkeys! */ WM_keymap_add_item(keymap, "MESH_OT_similar_vertex_select", GKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "MESH_OT_similar_edge_select", GKEY, KM_PRESS, KM_SHIFT2|KM_CTRL, 0); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs