diff options
Diffstat (limited to 'source/blender/blenkernel/intern/anim.c')
-rw-r--r-- | source/blender/blenkernel/intern/anim.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 4b0c89f3a7a..1aed26db48d 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -726,9 +726,15 @@ static DupliObject *new_dupli_object(ListBase *lb, Object *ob, float mat[][4], i * dupli object between frames, which is needed for motion blur. last level * goes first in the array. */ dob->persistent_id[0] = index; - for(i = 1; i < level; i++) + for (i = 1; i < level; i++) dob->persistent_id[i] = persistent_id[level-1-i]; + /* metaballs never draw in duplis, they are instead merged into one by the basis + * mball outside of the group. this does mean that if that mball is not in the + * scene, they will not show up at all, limitation that should be solved once. */ + if (ob->type == OB_MBALL) + dob->no_draw = TRUE; + return dob; } @@ -781,9 +787,6 @@ static void group_duplilist(ListBase *lb, Scene *scene, Object *ob, int persiste { dob->no_draw = TRUE; } - else { - dob->no_draw = FALSE; - } if (go->ob->transflag & OB_DUPLI) { copy_m4_m4(dob->ob->obmat, dob->mat); @@ -1643,7 +1646,7 @@ static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBas } /* keep track of persistent id */ - if(level > 0) + if (level > 0) persistent_id[level-1] = index; if (ob->transflag & OB_DUPLIPARTS) { @@ -1690,7 +1693,7 @@ static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBas } /* clear persistent id */ - if(level > 0) + if (level > 0) persistent_id[level-1] = 0; } |