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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to