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).
This commit is contained in:
Ben Batt 2006-08-30 03:05:30 +00:00
parent bf49ff5050
commit 3a4e9d5946

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