[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21624] branches/bmesh/blender: vertex and uv layers now refernce mpolys/mloops in rna.

Joseph Eagar joeedh at gmail.com
Thu Jul 16 11:17:27 CEST 2009


Revision: 21624
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21624
Author:   joeedh
Date:     2009-07-16 11:17:27 +0200 (Thu, 16 Jul 2009)

Log Message:
-----------
vertex and uv layers now refernce mpolys/mloops in rna.  also fixed some customdata-related problems.

Modified Paths:
--------------
    branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
    branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/editors/mesh/mesh_layers.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c

Modified: branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
===================================================================
--- branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj	2009-07-16 09:09:38 UTC (rev 21623)
+++ branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj	2009-07-16 09:17:27 UTC (rev 21624)
@@ -467,6 +467,14 @@
 		</Configuration>
 	</Configurations>
 	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{31628053-825D-4C06-8A21-D13883489718}"
+			RelativePathToProject=".\blenlib\BLI_blenlib.vcproj"
+		/>
+		<ProjectReference
+			ReferencedProjectIdentifier="{E013786A-9575-4F34-81B2-33290357EE87}"
+			RelativePathToProject=".\makesdna\DNA_makesdna.vcproj"
+		/>
 	</References>
 	<Files>
 		<Filter

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c	2009-07-16 09:09:38 UTC (rev 21623)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c	2009-07-16 09:17:27 UTC (rev 21624)
@@ -740,12 +740,13 @@
 	"CDMloopCol", "CDTangent", "CDMDisps", "CDWeightMCol"};
 
 const CustomDataMask CD_MASK_BAREMESH =
-	CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE | CD_MASK_MPOLY;
+	CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE | CD_MASK_MLOOP | CD_MASK_MPOLY;
 const CustomDataMask CD_MASK_MESH =
 	CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE |
 	CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MCOL |
 	CD_MASK_PROP_FLT | CD_MASK_PROP_INT | CD_MASK_PROP_STR | CD_MASK_MDISPS |
-	CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MPOLY | CD_MASK_MLOOP;
+	CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MPOLY | CD_MASK_MLOOP |
+	CD_MASK_MTEXPOLY;
 const CustomDataMask CD_MASK_EDITMESH =
 	CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MLOOPUV |
 	CD_MASK_MLOOPCOL | CD_MASK_MTEXPOLY |
@@ -761,7 +762,6 @@
 	CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_MTEXPOLY | CD_MASK_MLOOPUV |
 	CD_MASK_MLOOPCOL;
 
-
 static const LayerTypeInfo *layerType_getInfo(int type)
 {
 	if(type < 0 || type >= CD_NUMTYPES) return NULL;

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c	2009-07-16 09:09:38 UTC (rev 21623)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c	2009-07-16 09:17:27 UTC (rev 21624)
@@ -169,11 +169,14 @@
 static void update_data_blocks(BMesh *bm, CustomData *olddata, CustomData *data)
 {
 	BMIter iter;
+	BLI_mempool *oldpool = olddata->pool;
 	void *block;
 
+	CustomData_bmesh_init_pool(data, data==&bm->ldata ? 2048 : 512);
+
 	if (data == &bm->vdata) {
 		BMVert *eve;
-
+		
 		BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL) {
 			block = NULL;
 			CustomData_bmesh_set_default(data, &block);

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2009-07-16 09:09:38 UTC (rev 21623)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2009-07-16 09:17:27 UTC (rev 21624)
@@ -45,7 +45,7 @@
 	BMEdge *e, **fedges=NULL, **et;
 	V_DECLARE(fedges);
 	BMFace *f;
-	int i, j, allocsize[4] = {512, 512, 2048, 512};
+	int i, j, li, allocsize[4] = {512, 512, 2048, 512};
 
 	if (!me || !me->totvert) return; /*sanity check*/
 	
@@ -53,10 +53,10 @@
 
 	vt = MEM_mallocN(sizeof(void**)*me->totvert, "mesh to bmesh vtable");
 
-	CustomData_copy(&bm->vdata, &me->vdata, CD_MASK_BMESH, CD_CALLOC, 0);
-	CustomData_copy(&bm->edata, &me->edata, CD_MASK_BMESH, CD_CALLOC, 0);
-	CustomData_copy(&bm->ldata, &me->ldata, CD_MASK_BMESH, CD_CALLOC, 0);
-	CustomData_copy(&bm->pdata, &me->pdata, CD_MASK_BMESH, CD_CALLOC, 0);
+	CustomData_copy(&me->vdata, &bm->vdata, CD_MASK_BMESH, CD_CALLOC, 0);
+	CustomData_copy(&me->edata, &bm->edata, CD_MASK_BMESH, CD_CALLOC, 0);
+	CustomData_copy(&me->ldata, &bm->ldata, CD_MASK_BMESH, CD_CALLOC, 0);
+	CustomData_copy(&me->pdata, &bm->pdata, CD_MASK_BMESH, CD_CALLOC, 0);
 
 	CustomData_bmesh_init_pool(&bm->vdata, allocsize[0]);
 	CustomData_bmesh_init_pool(&bm->edata, allocsize[1]);
@@ -102,8 +102,11 @@
 	if (!me->totpoly) return;
 
 	mpoly = me->mpoly;
+	li = 0;
 	for (i=0; i<me->totpoly; i++, mpoly++) {
 		BMVert *v1, *v2;
+		BMIter iter;
+		BMLoop *l;
 
 		V_RESET(fedges);
 		for (j=0; j<mpoly->totloop; j++) {
@@ -130,8 +133,14 @@
 		f->head.flag = MEFlags_To_BMFlags(mpoly->flag, BM_FACE);
 		if (i == me->act_face) bm->act_face = f;
 
+		/*Copy over loop customdata*/
+		BM_ITER(l, &iter, bm, BM_LOOPS_OF_FACE, f) {
+			CustomData_to_bmesh_block(&me->ldata, &bm->ldata, li, &l->head.data);
+			li++;
+		}
+
 		/*Copy Custom Data*/
-		CustomData_to_bmesh_block(&me->fdata, &bm->pdata, i, &f->head.data);
+		CustomData_to_bmesh_block(&me->pdata, &bm->pdata, i, &f->head.data);
 	}
 }
 

Modified: branches/bmesh/blender/source/blender/editors/mesh/mesh_layers.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/mesh_layers.c	2009-07-16 09:09:38 UTC (rev 21623)
+++ branches/bmesh/blender/source/blender/editors/mesh/mesh_layers.c	2009-07-16 09:17:27 UTC (rev 21624)
@@ -297,8 +297,8 @@
 		CustomData_set_layer_active(&me->ldata, CD_MLOOPCOL, layernum);
 		mesh_update_customdata_pointers(me);
 
-		if(!mcol)
-			shadeMeshMCol(scene, ob, me);
+		//if(!mcol)
+		//	shadeMeshMCol(scene, ob, me);
 	}
 
 	DAG_object_flush_update(scene, ob, OB_RECALC_DATA);

Modified: branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c	2009-07-16 09:09:38 UTC (rev 21623)
+++ branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c	2009-07-16 09:17:27 UTC (rev 21624)
@@ -22,6 +22,10 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/*note: the original vertex color stuff is now just used for
+  getting info on the layers themselves, accessing the data is
+  done through the (not yet written) mpoly interfaces.*/
+
 #include <stdlib.h>
 
 #include "RNA_define.h"
@@ -211,15 +215,20 @@
 	*max= me->totcol-1;
 }
 
-static CustomData *rna_mesh_fdata(Mesh *me)
+static CustomData *rna_mesh_pdata(Mesh *me)
 {
 	return (me->edit_btmesh)? &me->edit_btmesh->bm->pdata: &me->pdata;
 }
 
+static CustomData *rna_mesh_ldata(Mesh *me)
+{
+	return (me->edit_btmesh)? &me->edit_btmesh->bm->ldata: &me->ldata;
+}
+
 static int rna_CustomDataLayer_length(PointerRNA *ptr, int type)
 {
 	Mesh *me= (Mesh*)ptr->id.data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 	CustomDataLayer *layer;
 	int i, length= 0;
 
@@ -233,7 +242,7 @@
 static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render)
 {
 	Mesh *me= (Mesh*)ptr->id.data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 	int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
 
 	if(render) return (n == CustomData_get_render_layer_index(fdata, type));
@@ -243,7 +252,7 @@
 static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render)
 {
 	Mesh *me= (Mesh*)ptr->id.data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 	int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
 
 	if(value == 0)
@@ -256,26 +265,26 @@
 static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data)
 {
 	CustomDataLayer *layer= (CustomDataLayer*)data;
-	return (layer->type != CD_MTFACE);
+	return (layer->type != CD_MTEXPOLY);
 }
 
 static void rna_Mesh_uv_textures_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
 {
 	Mesh *me= (Mesh*)ptr->data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 	rna_iterator_array_begin(iter, (void*)fdata->layers, sizeof(CustomDataLayer), fdata->totlayer, 0, rna_uv_texture_check);
 }
 
 static int rna_Mesh_uv_textures_length(PointerRNA *ptr)
 {
-	return rna_CustomDataLayer_length(ptr, CD_MTFACE);
+	return rna_CustomDataLayer_length(ptr, CD_MTEXPOLY);
 }
 
 static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr)
 {
 	Mesh *me= (Mesh*)ptr->data;
-	CustomData *fdata= rna_mesh_fdata(me);
-	int index= CustomData_get_active_layer_index(fdata, CD_MTFACE);
+	CustomData *fdata= rna_mesh_pdata(me);
+	int index= CustomData_get_active_layer_index(fdata, CD_MTEXPOLY);
 	CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
 
 	return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
@@ -284,13 +293,13 @@
 static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
 {
 	Mesh *me= (Mesh*)ptr->data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 	CustomDataLayer *cdl;
 	int a;
 
 	for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
 		if(value.data == cdl) {
-			CustomData_set_layer_active_index(fdata, CD_MTFACE, a);
+			CustomData_set_layer_active_index(fdata, CD_MTEXPOLY, a);
 			mesh_update_customdata_pointers(me);
 			return;
 		}
@@ -300,124 +309,76 @@
 static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
 {
 	Mesh *me= (Mesh*)ptr->data;
-	CustomData *fdata= rna_mesh_fdata(me);
-	return CustomData_get_active_layer(fdata, CD_MTFACE);
+	CustomData *fdata= rna_mesh_pdata(me);
+	return CustomData_get_active_layer(fdata, CD_MTEXPOLY);
 }
 
 static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
 {
 	Mesh *me= (Mesh*)ptr->data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 
-	CustomData_set_layer_active(fdata, CD_MTFACE, value);
+	CustomData_set_layer_active(fdata, CD_MTEXPOLY, value);
 	mesh_update_customdata_pointers(me);
 }
 
 static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max)
 {
 	Mesh *me= (Mesh*)ptr->data;
-	CustomData *fdata= rna_mesh_fdata(me);
+	CustomData *fdata= rna_mesh_pdata(me);
 
 	*min= 0;
-	*max= CustomData_number_of_layers(fdata, CD_MTFACE)-1;
+	*max= CustomData_number_of_layers(fdata, CD_MTEXPOLY)-1;
 	*max= MAX2(0, *max);
 }
 
 static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values)
 {
-	MTFace *mtface= (MTFace*)ptr->data;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list