Fix several missing cases of copy func for modifiers.
Any time a modifier data has non-ID pointer, it should have own copy function (and also take care of proper init/reset in its init callback).
This commit is contained in:
@@ -66,6 +66,15 @@ static void initData(ModifierData *md)
|
||||
mmd->quality = 3;
|
||||
}
|
||||
|
||||
static void copyData(const ModifierData *md_src, ModifierData *md_dst, const int flag)
|
||||
{
|
||||
MultiresModifierData *mmd_dst = (MultiresModifierData *)md_dst;
|
||||
|
||||
modifier_copyData_generic(md_src, md_dst, flag);
|
||||
|
||||
mmd_dst->subdiv = NULL;
|
||||
}
|
||||
|
||||
static void freeData(ModifierData *md)
|
||||
{
|
||||
MultiresModifierData *mmd = (MultiresModifierData *) md;
|
||||
@@ -193,7 +202,7 @@ ModifierTypeInfo modifierType_Multires = {
|
||||
eModifierTypeFlag_SupportsMapping |
|
||||
eModifierTypeFlag_RequiresOriginalData,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
/* copyData */ copyData,
|
||||
|
||||
/* deformVerts_DM */ NULL,
|
||||
/* deformMatrices_DM */ NULL,
|
||||
|
||||
@@ -75,6 +75,7 @@ static void copyData(const ModifierData *md, ModifierData *target, const int fla
|
||||
modifier_copyData_generic(md, target, flag);
|
||||
|
||||
tsmd->emCache = tsmd->mCache = NULL;
|
||||
tsmd->subdiv = NULL;
|
||||
}
|
||||
|
||||
static void freeData(ModifierData *md)
|
||||
|
||||
@@ -59,6 +59,21 @@ static void initData(ModifierData *md)
|
||||
SurfaceModifierData *surmd = (SurfaceModifierData *) md;
|
||||
|
||||
surmd->bvhtree = NULL;
|
||||
surmd->mesh = NULL;
|
||||
surmd->x = NULL;
|
||||
surmd->v = NULL;
|
||||
}
|
||||
|
||||
static void copyData(const ModifierData *md_src, ModifierData *md_dst, const int flag)
|
||||
{
|
||||
SurfaceModifierData *surmd_dst = (SurfaceModifierData *)md_dst;
|
||||
|
||||
modifier_copyData_generic(md_src, md_dst, flag);
|
||||
|
||||
surmd_dst->bvhtree = NULL;
|
||||
surmd_dst->mesh = NULL;
|
||||
surmd_dst->x = NULL;
|
||||
surmd_dst->v = NULL;
|
||||
}
|
||||
|
||||
static void freeData(ModifierData *md)
|
||||
@@ -194,7 +209,7 @@ ModifierTypeInfo modifierType_Surface = {
|
||||
eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_NoUserAdd,
|
||||
|
||||
/* copyData */ NULL,
|
||||
/* copyData */ copyData,
|
||||
|
||||
/* deformVerts_DM */ NULL,
|
||||
/* deformMatrices_DM */ NULL,
|
||||
|
||||
Reference in New Issue
Block a user