[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