[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42308] branches/bmesh/blender/source/ blender/blenkernel: Fix for [#29467] Selection of active vertex color layer doesn't work
Andrew Wiggin
ender79bl at gmail.com
Thu Dec 1 10:49:33 CET 2011
Revision: 42308
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42308
Author: ender79
Date: 2011-12-01 09:49:27 +0000 (Thu, 01 Dec 2011)
Log Message:
-----------
Fix for [#29467] Selection of active vertex color layer doesn't work
Need to push active layer indices from loops & polys to faces again after tesselations
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h 2011-12-01 07:41:45 UTC (rev 42307)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h 2011-12-01 09:49:27 UTC (rev 42308)
@@ -333,6 +333,7 @@
void CustomData_to_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata,
struct CustomData *ldata, int totloop, int totpoly);
void CustomData_from_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata, int total);
+void CustomData_bmesh_update_active_layers(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata);
void CustomData_bmesh_init_pool(struct CustomData *data, int allocsize);
/* External file storage */
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2011-12-01 07:41:45 UTC (rev 42307)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2011-12-01 09:49:27 UTC (rev 42308)
@@ -1595,6 +1595,10 @@
}
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
+
+ /* Tesselation recreated faceData, and the active layer indices need to get re-propagated
+ from loops and polys to faces */
+ CustomData_bmesh_update_active_layers(&dm->faceData, &dm->polyData, &dm->loopData);
}
static void cdDM_free_internal(CDDerivedMesh *cddm)
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c 2011-12-01 07:41:45 UTC (rev 42307)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c 2011-12-01 09:49:27 UTC (rev 42308)
@@ -2360,7 +2360,43 @@
}
}
+void CustomData_bmesh_update_active_layers(CustomData *fdata, CustomData *pdata, CustomData *ldata)
+{
+ int act;
+ if (CustomData_has_layer(pdata, CD_MTEXPOLY)) {
+ act = CustomData_get_active_layer(pdata, CD_MTEXPOLY);
+ CustomData_set_layer_active(ldata, CD_MLOOPUV, act);
+ CustomData_set_layer_active(fdata, CD_MTFACE, act);
+
+ act = CustomData_get_render_layer(pdata, CD_MTEXPOLY);
+ CustomData_set_layer_render(ldata, CD_MLOOPUV, act);
+ CustomData_set_layer_render(fdata, CD_MTFACE, act);
+
+ act = CustomData_get_clone_layer(pdata, CD_MTEXPOLY);
+ CustomData_set_layer_clone(ldata, CD_MLOOPUV, act);
+ CustomData_set_layer_clone(fdata, CD_MTFACE, act);
+
+ act = CustomData_get_stencil_layer(pdata, CD_MTEXPOLY);
+ CustomData_set_layer_stencil(ldata, CD_MLOOPUV, act);
+ CustomData_set_layer_stencil(fdata, CD_MTFACE, act);
+ }
+
+ if (CustomData_has_layer(ldata, CD_MLOOPCOL)) {
+ act = CustomData_get_active_layer(ldata, CD_MLOOPCOL);
+ CustomData_set_layer_active(fdata, CD_MCOL, act);
+
+ act = CustomData_get_render_layer(ldata, CD_MLOOPCOL);
+ CustomData_set_layer_render(fdata, CD_MCOL, act);
+
+ act = CustomData_get_clone_layer(ldata, CD_MLOOPCOL);
+ CustomData_set_layer_clone(fdata, CD_MCOL, act);
+
+ act = CustomData_get_stencil_layer(ldata, CD_MLOOPCOL);
+ CustomData_set_layer_stencil(fdata, CD_MCOL, act);
+ }
+}
+
void CustomData_bmesh_init_pool(CustomData *data, int allocsize)
{
/* Dispose old pools before calling here to avoid leaks */
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c 2011-12-01 07:41:45 UTC (rev 42307)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c 2011-12-01 09:49:27 UTC (rev 42308)
@@ -340,37 +340,7 @@
mesh_ensure_tesselation_customdata(me);
- if (CustomData_has_layer(&me->pdata, CD_MTEXPOLY)) {
- act = CustomData_get_active_layer(&me->pdata, CD_MTEXPOLY);
- CustomData_set_layer_active(&me->ldata, CD_MLOOPUV, act);
- CustomData_set_layer_active(&me->fdata, CD_MTFACE, act);
-
- act = CustomData_get_render_layer(&me->pdata, CD_MTEXPOLY);
- CustomData_set_layer_render(&me->ldata, CD_MLOOPUV, act);
- CustomData_set_layer_render(&me->fdata, CD_MTFACE, act);
-
- act = CustomData_get_clone_layer(&me->pdata, CD_MTEXPOLY);
- CustomData_set_layer_clone(&me->ldata, CD_MLOOPUV, act);
- CustomData_set_layer_clone(&me->fdata, CD_MTFACE, act);
-
- act = CustomData_get_stencil_layer(&me->pdata, CD_MTEXPOLY);
- CustomData_set_layer_stencil(&me->ldata, CD_MLOOPUV, act);
- CustomData_set_layer_stencil(&me->fdata, CD_MTFACE, act);
- }
-
- if (CustomData_has_layer(&me->ldata, CD_MLOOPCOL)) {
- act = CustomData_get_active_layer(&me->ldata, CD_MLOOPCOL);
- CustomData_set_layer_active(&me->fdata, CD_MCOL, act);
-
- act = CustomData_get_render_layer(&me->ldata, CD_MLOOPCOL);
- CustomData_set_layer_render(&me->fdata, CD_MCOL, act);
-
- act = CustomData_get_clone_layer(&me->ldata, CD_MLOOPCOL);
- CustomData_set_layer_clone(&me->fdata, CD_MCOL, act);
-
- act = CustomData_get_stencil_layer(&me->ldata, CD_MLOOPCOL);
- CustomData_set_layer_stencil(&me->fdata, CD_MCOL, act);
- }
+ CustomData_bmesh_update_active_layers(&me->fdata, &me->pdata, &me->ldata);
}
void mesh_update_customdata_pointers(Mesh *me)
More information about the Bf-blender-cvs
mailing list