- bug fix, convert modifiers should free modifiers from new object
This commit is contained in:
@@ -51,6 +51,7 @@ void copy_objectflags(void);
|
|||||||
struct SoftBody *copy_softbody(struct SoftBody *sb);
|
struct SoftBody *copy_softbody(struct SoftBody *sb);
|
||||||
void update_base_layer(struct Object *ob);
|
void update_base_layer(struct Object *ob);
|
||||||
void free_object(struct Object *ob);
|
void free_object(struct Object *ob);
|
||||||
|
void object_free_modifiers(struct Object *ob);
|
||||||
void unlink_object(struct Object *ob);
|
void unlink_object(struct Object *ob);
|
||||||
int exist_object(struct Object *obtest);
|
int exist_object(struct Object *obtest);
|
||||||
void *add_camera(void);
|
void *add_camera(void);
|
||||||
|
|||||||
@@ -172,12 +172,12 @@ static void copy_hooks(ListBase *new, ListBase *old)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_modifiers(ListBase *lb)
|
void object_free_modifiers(Object *ob)
|
||||||
{
|
{
|
||||||
while (lb->first) {
|
while (ob->modifiers.first) {
|
||||||
ModifierData *md = lb->first;
|
ModifierData *md = ob->modifiers.first;
|
||||||
|
|
||||||
BLI_remlink(lb, md);
|
BLI_remlink(&ob->modifiers, md);
|
||||||
|
|
||||||
modifier_free(md);
|
modifier_free(md);
|
||||||
}
|
}
|
||||||
@@ -223,7 +223,7 @@ void free_object(Object *ob)
|
|||||||
free_effects(&ob->effect);
|
free_effects(&ob->effect);
|
||||||
BLI_freelistN(&ob->network);
|
BLI_freelistN(&ob->network);
|
||||||
free_properties(&ob->prop);
|
free_properties(&ob->prop);
|
||||||
free_modifiers(&ob->modifiers);
|
object_free_modifiers(ob);
|
||||||
|
|
||||||
free_sensors(&ob->sensors);
|
free_sensors(&ob->sensors);
|
||||||
free_controllers(&ob->controllers);
|
free_controllers(&ob->controllers);
|
||||||
|
|||||||
@@ -2170,6 +2170,7 @@ void convertmenu(void)
|
|||||||
Mesh *oldme= ob->data;
|
Mesh *oldme= ob->data;
|
||||||
DispListMesh *dlm;
|
DispListMesh *dlm;
|
||||||
DerivedMesh *dm;
|
DerivedMesh *dm;
|
||||||
|
ModifierData *md;
|
||||||
|
|
||||||
basedel = base;
|
basedel = base;
|
||||||
|
|
||||||
@@ -2177,6 +2178,7 @@ void convertmenu(void)
|
|||||||
|
|
||||||
ob1= copy_object(ob);
|
ob1= copy_object(ob);
|
||||||
ob1->recalc |= OB_RECALC;
|
ob1->recalc |= OB_RECALC;
|
||||||
|
object_free_modifiers(ob1);
|
||||||
|
|
||||||
basen= MEM_mallocN(sizeof(Base), "duplibase");
|
basen= MEM_mallocN(sizeof(Base), "duplibase");
|
||||||
*basen= *base;
|
*basen= *base;
|
||||||
@@ -2481,11 +2483,7 @@ static void copymenu_modifiers(Object *ob)
|
|||||||
|
|
||||||
if (base->object->type==OB_MESH) {
|
if (base->object->type==OB_MESH) {
|
||||||
if (event==NUM_MODIFIER_TYPES) {
|
if (event==NUM_MODIFIER_TYPES) {
|
||||||
while (base->object->modifiers.first) {
|
object_free_modifiers(base->object);
|
||||||
md = base->object->modifiers.first;
|
|
||||||
BLI_remlink(&base->object->modifiers, md);
|
|
||||||
modifier_free(md);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (md=ob->modifiers.first; md; md=md->next) {
|
for (md=ob->modifiers.first; md; md=md->next) {
|
||||||
ModifierData *nmd = modifier_new(md->type);
|
ModifierData *nmd = modifier_new(md->type);
|
||||||
|
|||||||
Reference in New Issue
Block a user