Blender Git Loki
Git Commits -> Revision 01a12fa
Revision 01a12fa by Joseph Eagar (master) February 12, 2009, 16:59 (GMT) |
Replaced unified extrude edges/faces code (the stuff specificaly for edges/faces,extrudeflag_edgess, not the entire extrude system) with a bmesh version. This stress-tested the operator api, and I had to code some new stuff,including: * An api to iterate over Mapping slots and array slots. It's modeled after the normal iterator api. * The ability to copy mapping slots. * More mapping functions. * In addition to being able to flag elements in a buffer, you can now unflag them (much clearer then passing in ~flag I think). The extrude edge/faces code has multiple layers. At the top level is a funtion in editmesh_lib.c, which takes care of selection, handles mirror modifiers, etc. It calls the extrude operator, which in turns calls split, which calls dupe/del. Note that split needed a slot to exclude things from being deleting (e.g. when extruding a single isolated face). The basic idea (reflected in original design of split/dupe/del by Briggs) is to use the split function to do the heavy work of extrude. split spits out new geometry and mappings from boundary edges, for extrude (it should also spit out other mappings, but that's for later). Briggs: you may want to look over this, hopefully I didn't do anything too evil. I probably should spend some time going over the 2.5 mesh operators and cleaning them up, splitting ones that need splitting, etc, and in general getting them to work properly. |
Commit Details:
Full Hash: 01a12fa553f40a23c45241b788af983f03f156bf
SVN Revision: 18944
Parent Commit: 47b8684
Lines Changed: +332, -19
1 Added Path:
/source/blender/bmesh/operators/extrudeops.c (+65, -0) (View)
9 Modified Paths:
/source/blender/bmesh/bmesh_operators.h (+34, -3) (Diff)
/source/blender/bmesh/intern/bmesh_opdefines.c (+11, -1) (Diff)
/source/blender/bmesh/intern/bmesh_operators.c (+73, -0) (Diff)
/source/blender/bmesh/intern/bmesh_operators_private.h (+1, -0) (Diff)
/source/blender/bmesh/operators/bmesh_dupeops.c (+12, -10) (Diff)
/source/blender/editors/mesh/editmesh.c (+6, -0) (Diff)
/source/blender/editors/mesh/editmesh_lib.c (+119, -1) (Diff)
/source/blender/editors/mesh/editmesh_tools.c (+7, -4) (Diff)
/source/blender/editors/mesh/mesh_intern.h (+4, -0) (Diff)
/source/blender/bmesh/intern/bmesh_opdefines.c (+11, -1) (Diff)
/source/blender/bmesh/intern/bmesh_operators.c (+73, -0) (Diff)
/source/blender/bmesh/intern/bmesh_operators_private.h (+1, -0) (Diff)
/source/blender/bmesh/operators/bmesh_dupeops.c (+12, -10) (Diff)
/source/blender/editors/mesh/editmesh.c (+6, -0) (Diff)
/source/blender/editors/mesh/editmesh_lib.c (+119, -1) (Diff)
/source/blender/editors/mesh/editmesh_tools.c (+7, -4) (Diff)
/source/blender/editors/mesh/mesh_intern.h (+4, -0) (Diff)