diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-04 19:26:07 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-04 19:26:07 +0300 |
commit | d92a6f140d0b9ba90de290feb8fdb8ef47125f08 (patch) | |
tree | 997560417dafe375b49ade577cb9ef5fa03b869a /source/blender/blenkernel | |
parent | 50de143ca30ad8211668d5e74cbda46fc695348e (diff) |
copy modifiers, as "Link Modifiers" - in Ctrl+L menu. difference between copy and link is vague especially since particle systems are ID data.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_object.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index 9e70251c782..d0c2052f0d6 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -62,6 +62,8 @@ void update_base_layer(struct Scene *scene, struct Object *ob); void free_object(struct Object *ob); void object_free_display(struct Object *ob); + +void object_link_modifiers(struct Object *ob, struct Object *from); void object_free_modifiers(struct Object *ob); void object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 55cea3de188..0f9198df263 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -207,6 +207,27 @@ void object_free_modifiers(Object *ob) object_free_softbody(ob); } +void object_link_modifiers(struct Object *ob, struct Object *from) +{ + ModifierData *md; + object_free_modifiers(ob); + + for (md=from->modifiers.first; md; md=md->next) { + ModifierData *nmd = NULL; + + if(ELEM4(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_ParticleInstance, eModifierType_Collision)) continue; + + nmd = modifier_new(md->type); + modifier_copyData(md, nmd); + BLI_addtail(&ob->modifiers, nmd); + } + + copy_object_particlesystems(from, ob); + copy_object_softbody(from, ob); + + // TODO: smoke?, cloth? +} + /* here we will collect all local displist stuff */ /* also (ab)used in depsgraph */ void object_free_display(Object *ob) |