From 3a4e9d59467069ff22d20cff47fe9582e5fa6b0b Mon Sep 17 00:00:00 2001 From: Ben Batt Date: Wed, 30 Aug 2006 03:05:30 +0000 Subject: [PATCH] My modifier stack commit broke weightpaint display for meshes with TFace data, due to the temporary "Weight-coloured" TFace data being replaced by the original before displaying. This commit fixes that by changing the type of DerivedMesh calculated by mesh_calc_modifiers when no non-deforming modifiers are applied from MeshDerivedMesh (which depends on the original Mesh) to CDDerivedMesh (which doesn't depend on the original Mesh). --- .../blender/blenkernel/intern/DerivedMesh.c | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 016d5c298c3..47279e16049 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2659,13 +2659,20 @@ static void mesh_calc_modifiers(Object *ob, float (*inputVertexCos)[3], * places that wish to use the original mesh but with deformed * coordinates (vpaint, etc.) */ - if (deform_r) + if (deform_r) { #ifdef WITH_VERSE if(me->vnode) *deform_r = derivedmesh_from_versemesh(me->vnode, deformedVerts); - else *deform_r = getMeshDerivedMesh(me, ob, deformedVerts); + else { + *deform_r = CDDM_from_mesh(me); + if(deformedVerts) + CDDM_apply_vert_coords(*deform_r, deformedVerts); + } #else - *deform_r = getMeshDerivedMesh(me, ob, deformedVerts); + *deform_r = CDDM_from_mesh(me); + if(deformedVerts) + CDDM_apply_vert_coords(*deform_r, deformedVerts); #endif + } } else { if(!fluidsimMeshUsed) { /* default behaviour for meshes */ @@ -2776,9 +2783,15 @@ static void mesh_calc_modifiers(Object *ob, float (*inputVertexCos)[3], } else { #ifdef WITH_VERSE if(me->vnode) *final_r = derivedmesh_from_versemesh(me->vnode, deformedVerts); - else *final_r = getMeshDerivedMesh(me, ob, deformedVerts); + else { + *final_r = CDDM_from_mesh(me); + if(deformedVerts) + CDDM_apply_vert_coords(*final_r, deformedVerts); + } #else - *final_r = getMeshDerivedMesh(me, ob, deformedVerts); + *final_r = CDDM_from_mesh(me); + if(deformedVerts) + CDDM_apply_vert_coords(*final_r, deformedVerts); #endif }