diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-06-02 13:23:01 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-06-02 13:23:01 +0300 |
commit | 9454377c71f48ab5f10b523e002041c31324fbae (patch) | |
tree | 2ef0071e6496cd8ebac9fa20a2d94cc8f13025be /source/blender/blenkernel/intern/object.c | |
parent | 7724b26ab247d7a31dcaa2eb4f3a86cc61ff6efe (diff) |
Fix T36994: Make link modifier fails (soft body)
Diffstat (limited to 'source/blender/blenkernel/intern/object.c')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index c1626ed68fe..939d6eed454 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -264,8 +264,6 @@ void BKE_object_link_modifiers(struct Object *ob_dst, const struct Object *ob_sr if (ELEM(md->type, eModifierType_Hook, - eModifierType_Softbody, - eModifierType_ParticleInstance, eModifierType_Collision)) { continue; @@ -273,10 +271,15 @@ void BKE_object_link_modifiers(struct Object *ob_dst, const struct Object *ob_sr if (!BKE_object_support_modifier_type_check(ob_dst, md->type)) continue; - - if (md->type == eModifierType_Skin) { - /* ensure skin-node customdata exists */ - BKE_mesh_ensure_skin_customdata(ob_dst->data); + + switch (md->type) { + case eModifierType_Softbody: + BKE_object_copy_softbody(ob_dst, ob_src); + break; + case eModifierType_Skin: + /* ensure skin-node customdata exists */ + BKE_mesh_ensure_skin_customdata(ob_dst->data); + break; } nmd = modifier_new(md->type); @@ -293,7 +296,6 @@ void BKE_object_link_modifiers(struct Object *ob_dst, const struct Object *ob_sr } BKE_object_copy_particlesystems(ob_dst, ob_src); - BKE_object_copy_softbody(ob_dst, ob_src); /* TODO: smoke?, cloth? */ } @@ -1379,6 +1381,7 @@ void BKE_object_copy_particlesystems(Object *ob_dst, const Object *ob_src) void BKE_object_copy_softbody(Object *ob_dst, const Object *ob_src) { if (ob_src->soft) { + ob_dst->softflag = ob_src->softflag; ob_dst->soft = copy_softbody(ob_src->soft, false); } } |