Fix #22661: Multires/Sculpt Segfult

- Show error message in multires modifier if there is no MDISPS layer
- Sculpt on basis mesh if there is no the same layer
This commit is contained in:
2010-07-22 11:27:54 +00:00
parent aa2f0b1e42
commit 33cb2f93ff
2 changed files with 18 additions and 1 deletions

View File

@@ -38,6 +38,8 @@
#include "BKE_paint.h"
#include "BKE_particle.h"
#include "DNA_mesh_types.h"
static void initData(ModifierData *md)
{
MultiresModifierData *mmd = (MultiresModifierData*)md;
@@ -66,6 +68,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm,
int sculpting= (ob->mode & OB_MODE_SCULPT) && ss;
MultiresModifierData *mmd = (MultiresModifierData*)md;
DerivedMesh *result;
Mesh *me= (Mesh*)ob->data;
if(mmd->totlvl) {
if(!CustomData_get_layer(&me->fdata, CD_MDISPS)) {
/* multires can't work without displacement layer */
modifier_setError(md, "Modifier needs mesh with displacement data.");
return dm;
}
}
result = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams, isFinalCalc);