[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23134] branches/bmesh/blender/source/ blender: some bugfixes, merge to cursor didn't work

Joseph Eagar joeedh at gmail.com
Sat Sep 12 06:03:29 CEST 2009


Revision: 23134
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23134
Author:   joeedh
Date:     2009-09-12 06:03:26 +0200 (Sat, 12 Sep 2009)

Log Message:
-----------
some bugfixes, merge to cursor didn't work

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c	2009-09-11 21:02:31 UTC (rev 23133)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c	2009-09-12 04:03:26 UTC (rev 23134)
@@ -2203,20 +2203,20 @@
 	BLI_mempool *vertuserpool;
 } MemBase;
 
-static EdgeData *edge_get_next(EdgeData *e, int ov) {
+BM_INLINE EdgeData *edge_get_next(EdgeData *e, int ov) {
 	if (ov == e->v1)
 		return e->v1node.next ? e->v1node.next->edge : NULL;
 	else return e->v2node.next ? e->v2node.next->edge : NULL;
 }
 
-static EdgeNode *edge_get_node(EdgeData *e, int ov)
+BM_INLINE EdgeNode *edge_get_node(EdgeData *e, int ov)
 {
 	if (ov == e->v1)
 		return &e->v1node;
 	else return &e->v2node;
 }
 
-static VertUser *edge_get_vuser(MemBase *b, EdgeData *edge, int ov)
+BM_INLINE VertUser *edge_get_vuser(MemBase *b, EdgeData *edge, int ov)
 {
 	if (ov == edge->v1)
 		return edge->v1user;
@@ -2228,7 +2228,7 @@
 	}
 }
 
-static void edge_set_vuser(MemBase *b, EdgeData *e, int ov, VertUser *vu)
+BM_INLINE void edge_set_vuser(MemBase *b, EdgeData *e, int ov, VertUser *vu)
 
 {
 	VertUser *olduser = edge_get_vuser(b, e, ov);
@@ -2245,14 +2245,14 @@
 	else e->v2user = vu;
 }
 
-static VertUser *new_vuser(MemBase *base)
+BM_INLINE VertUser *new_vuser(MemBase *base)
 {
 	VertUser *vusr = BLI_mempool_calloc(base->vertuserpool);
 
 	return vusr;
 }
 
-static MemBase *new_membase(void)
+BM_INLINE MemBase *new_membase(void)
 {
 	MemBase *b = MEM_callocN(sizeof(MemBase), "MemBase for edgesplit in modifier.c");
 	b->vertuserpool = BLI_mempool_create(sizeof(VertUser), 1, 2048);
@@ -2260,13 +2260,13 @@
 	return b;
 }
 
-static void free_membase(MemBase *b)
+BM_INLINE void free_membase(MemBase *b)
 {
 	BLI_mempool_destroy(b->vertuserpool);
 	MEM_freeN(b);
 }
 
-static EdgeData *edge_get_first(VertUser *vu)
+BM_INLINE EdgeData *edge_get_first(VertUser *vu)
 {
 	return vu->users.first ? ((EdgeNode*)vu->users.first)->edge : NULL;
 }

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2009-09-11 21:02:31 UTC (rev 23133)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2009-09-12 04:03:26 UTC (rev 23134)
@@ -2598,16 +2598,18 @@
 	return OPERATOR_FINISHED;
 }
 
-static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d, 
+static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d, Object *ob, 
                         int target, int uvmerge, wmOperator *wmop)
 {
 	BMIter iter;
 	BMVert *v;
-	float *co, cent[3] = {0.0f, 0.0f, 0.0f}, fac;
+	float *vco, co[3], cent[3] = {0.0f, 0.0f, 0.0f}, fac;
 	int i;
 
 	if (target) {
-		co = give_cursor(scene, v3d);
+		vco = give_cursor(scene, v3d);
+		VECCOPY(co, vco);
+		Mat4MulVecfl(ob->imat, co);
 	} else {
 		i = 0;
 		BM_ITER(v, &iter, em->bm, BM_VERTS_OF_MESH, NULL) {
@@ -2622,7 +2624,7 @@
 
 		fac = 1.0f / (float)i;
 		VECMUL(cent, fac);
-		co = cent;
+		VECCOPY(co, cent);
 	}
 
 	if (!co)
@@ -2649,10 +2651,10 @@
 
 	switch(RNA_enum_get(op->ptr, "type")) {
 		case 3:
-			status = merge_target(em, scene, v3d, 0, uvs, op);
+			status = merge_target(em, scene, v3d, obedit, 0, uvs, op);
 			break;
 		case 4:
-			status = merge_target(em, scene, v3d, 1, uvs, op);
+			status = merge_target(em, scene, v3d, obedit, 1, uvs, op);
 			break;
 		case 1:
 			status = merge_firstlast(em, 0, uvs, op);

Modified: branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c	2009-09-11 21:02:31 UTC (rev 23133)
+++ branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c	2009-09-12 04:03:26 UTC (rev 23134)
@@ -447,7 +447,7 @@
 	Mesh *me= (Mesh*)ptr->id.data;
 	CustomDataLayer *cdl= (CustomDataLayer*)ptr->data;
 	BLI_strncpy(cdl->name, value, sizeof(cdl->name));
-	CustomData_set_layer_unique_name(&me->pdata, cdl - me->pdata.layers);
+	CustomData_set_layer_unique_name(&me->pdata, cdl - rna_mesh_pdata(me)->layers);
 }
 
 static int rna_vertex_color_check(CollectionPropertyIterator *iter, void *data)
@@ -563,7 +563,7 @@
 	Mesh *me= (Mesh*)ptr->id.data;
 	CustomDataLayer *cdl= (CustomDataLayer*)ptr->data;
 	BLI_strncpy(cdl->name, value, sizeof(cdl->name));
-	CustomData_set_layer_unique_name(&me->ldata, cdl - me->ldata.layers);
+	CustomData_set_layer_unique_name(&me->ldata, cdl - rna_mesh_pdata(me)->layers);
 }
 
 static void rna_MeshFloatPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)





More information about the Bf-blender-cvs mailing list