[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30612] branches/bmesh/blender/source/ blender: =bmesh= fkey for dissolve works again, also fixed a crasher
Joseph Eagar
joeedh at gmail.com
Thu Jul 22 06:45:20 CEST 2010
Revision: 30612
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30612
Author: joeedh
Date: 2010-07-22 06:45:18 +0200 (Thu, 22 Jul 2010)
Log Message:
-----------
=bmesh= fkey for dissolve works again, also fixed a crasher
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
branches/bmesh/blender/source/blender/bmesh/operators/createops.c
branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
Modified: branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c 2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c 2010-07-22 04:45:18 UTC (rev 30612)
@@ -243,7 +243,7 @@
{
void *ret = NULL;
- if (!iter->curchunk) return NULL;
+ if (!iter->curchunk || !iter->pool->totused) return NULL;
ret = ((char*)iter->curchunk->data) + iter->pool->esize*iter->curindex;
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c 2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c 2010-07-22 04:45:18 UTC (rev 30612)
@@ -340,7 +340,7 @@
/*create the face, if necassary*/
if (!f && !overlap)
f = BM_Make_Face(bm, verts, edges2, len);
- else if (!overlap)
+ else if (!overlap)
f = NULL;
/*clean up flags*/
Modified: branches/bmesh/blender/source/blender/bmesh/operators/createops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/createops.c 2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/bmesh/operators/createops.c 2010-07-22 04:45:18 UTC (rev 30612)
@@ -15,6 +15,7 @@
#define ELE_NEW 1
#define ELE_OUT 2
+#define ELE_ORIG 4
typedef struct EPathNode {
struct EPathNode *next, *prev;
@@ -211,6 +212,10 @@
edata = MEM_callocN(sizeof(EdgeData)*bm->totedge, "EdgeData");
BMO_Flag_Buffer(bm, op, "edges", EDGE_MARK, BM_EDGE);
+
+ BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
+ BMO_SetFlag(bm, f, ELE_ORIG);
+ }
i = 0;
BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
@@ -263,7 +268,7 @@
edges[i++] = edge;
f = BM_Make_Ngon(bm, edge->v1, edge->v2, edges, i, 1);
- if (f)
+ if (f && !BMO_TestFlag(bm, f, ELE_ORIG))
BMO_SetFlag(bm, f, FACE_NEW);
edge_free_path(pathbase, path);
Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c 2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c 2010-07-22 04:45:18 UTC (rev 30612)
@@ -573,9 +573,8 @@
}
/* generic extern called extruder */
-int EDBM_Extrude_Mesh(Object *obedit, BMEditMesh *em, wmOperator *op, float *norin)
+int EDBM_Extrude_Mesh(Scene *scene, Object *obedit, BMEditMesh *em, wmOperator *op, float *norin)
{
- Scene *scene= NULL; // XXX CTX!
short nr, transmode= 0;
float stacknor[3] = {0.0f, 0.0f, 0.0f};
float *nor = norin ? norin : stacknor;
@@ -658,10 +657,11 @@
/* extrude without transform */
static int mesh_extrude_region_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
- EDBM_Extrude_Mesh(obedit, em, op, NULL);
+ EDBM_Extrude_Mesh(scene, obedit, em, op, NULL);
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit);
@@ -2362,8 +2362,8 @@
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", "Merge method to use.");
- RNA_def_enum_funcs(prop, merge_type_itemf);
+ ot->prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", "Merge method to use.");
+ RNA_def_enum_funcs(ot->prop, merge_type_itemf);
RNA_def_boolean(ot->srna, "uvs", 1, "UVs", "Move UVs according to merge.");
}
More information about the Bf-blender-cvs
mailing list