From 6a8bff9570ca3325e286694586f77d8905e47ea7 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 18:20:59 +0000 Subject: [PATCH] Fixed bug #21540, Array Modifier Capping refresh on open problem. * Problem was that the modifier directly accessed ob->derivedFinal, but that wasn't being built if the object was on a different layer. Changed to mesh_get_derived_final. Notes: * I fixed this for array and boolean, reported in the bug; there might be other places affected by this mistake. It's an easy fix if so. * The datamask being passed in isn't especially correct. Possibly we should be accessing the datamask being used to build the array modifier DerivedMesh? Anyway, at least this will get the mesh to show up in the viewport. --- source/blender/modifiers/intern/MOD_array.c | 4 ++-- source/blender/modifiers/intern/MOD_boolean.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index 505fcdc43d5..24615906e19 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -211,9 +211,9 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, /* need to avoid infinite recursion here */ if(amd->start_cap && amd->start_cap != ob) - start_cap = amd->start_cap->derivedFinal; + start_cap = mesh_get_derived_final(scene, amd->start_cap, 0); if(amd->end_cap && amd->end_cap != ob) - end_cap = amd->end_cap->derivedFinal; + end_cap = mesh_get_derived_final(scene, amd->end_cap, 0); unit_m4(offset); diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 116f5ab22d2..c23dcc5ce0a 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -85,7 +85,7 @@ static DerivedMesh *applyModifier( int useRenderParams, int isFinalCalc) { BooleanModifierData *bmd = (BooleanModifierData*) md; - DerivedMesh *dm = bmd->object->derivedFinal; + DerivedMesh *dm = mesh_get_derived_final(md->scene, bmd->object, 0); /* we do a quick sanity check */ if(dm && (derivedData->getNumFaces(derivedData) > 3)