From 0a7d036f324e9bcf9285ff292890c940d90fbc06 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 04:48:22 +0000 Subject: [PATCH] Fixed bug #22293, v2.49b to v2.5alpha2 incompatibility * UV data on multires meshes wasn't getting imported properly. Fixed by separately loading in all "first-level" data from the old multires data type into mesh. Note that an "incorrect" data layers might still be loaded and be active on the mesh, but the correct layers should now also show up in the UV layer selector. --- source/blender/blenkernel/intern/multires.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 87557ea7f2e..d567e0f0408 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -1286,6 +1286,7 @@ void multires_load_old(Object *ob, Mesh *me) ModifierData *md; MultiresModifierData *mmd; DerivedMesh *dm, *orig; + CustomDataLayer *l; int i; /* Load original level into the mesh */ @@ -1331,6 +1332,14 @@ void multires_load_old(Object *ob, Mesh *me) dm->release(dm); orig->release(orig); + /* Copy the first-level data to the mesh */ + for(i = 0, l = me->mr->vdata.layers; i < me->mr->vdata.totlayer; ++i, ++l) + CustomData_add_layer(&me->vdata, l->type, CD_REFERENCE, l->data, me->totvert); + for(i = 0, l = me->mr->fdata.layers; i < me->mr->fdata.totlayer; ++i, ++l) + CustomData_add_layer(&me->fdata, l->type, CD_REFERENCE, l->data, me->totface); + memset(&me->mr->vdata, 0, sizeof(CustomData)); + memset(&me->mr->fdata, 0, sizeof(CustomData)); + /* Remove the old multires */ multires_free(me->mr); me->mr= NULL;