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