From aa64d7cd5cb0aaa7f46918592f396db8a9e01c72 Mon Sep 17 00:00:00 2001 From: Sridhar Ramesh Date: Tue, 20 Feb 2018 09:11:43 -0800 Subject: [PATCH 1/2] Minor comment changes and clean up --- animation/simple_animations.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/animation/simple_animations.py b/animation/simple_animations.py index 9eb2bda7..aa1b5bd0 100644 --- a/animation/simple_animations.py +++ b/animation/simple_animations.py @@ -443,13 +443,12 @@ class Succession(Animation): # Beware: This does NOT take care of calling update(0) on the subanimation. # This was important to avoid a pernicious possibility in which subanimations were called - # with update(0) twice, which could in turn call a sub-Succession with update(0) four times, + # with update twice, which could in turn call a sub-Succession with update four times, # continuing exponentially. def jump_to_start_of_anim(self, index): if index != self.current_anim_index: self.mobject.remove(*self.mobject.submobjects) # Should probably have a cleaner "remove_all" method... - for m in self.scene_mobjects_at_time[index].submobjects: - self.mobject.add(m) + self.mobject.add(*self.scene_mobjects_at_time[index].submobjects) self.mobject.add(self.animations[index].mobject) for i in range(index): @@ -459,10 +458,9 @@ class Succession(Animation): self.current_alpha = self.critical_alphas[index] def update_mobject(self, alpha): - if alpha == self.current_alpha: - return - if self.num_anims == 0: + # This probably doesn't matter for anything, but just in case, + # we want it in the future, we set current_alpha even in this case self.current_alpha = alpha return From 4982a44fb6e1dbd24a7afd6336dd43e13fa3b794 Mon Sep 17 00:00:00 2001 From: Sridhar Ramesh Date: Tue, 20 Feb 2018 09:42:43 -0800 Subject: [PATCH 2/2] Fixed bug where nested AnimationGroups did not propagate configs correctly --- animation/simple_animations.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/animation/simple_animations.py b/animation/simple_animations.py index 77af467e..47e16a0f 100644 --- a/animation/simple_animations.py +++ b/animation/simple_animations.py @@ -491,16 +491,14 @@ class AnimationGroup(Animation): "rate_func" : None } def __init__(self, *sub_anims, **kwargs): - digest_config(self, kwargs, locals()) sub_anims = filter (lambda x : not(x.empty), sub_anims) + digest_config(self, locals()) + self.update_config(**kwargs) # Handles propagation to self.sub_anims + if len(sub_anims) == 0: self.empty = True self.run_time = 0 else: - for anim in sub_anims: - # If AnimationGroup is called with any configuration, - # it is propagated to the sub_animations - anim.update_config(**kwargs) self.run_time = max([a.run_time for a in sub_anims]) everything = Mobject(*[a.mobject for a in sub_anims]) Animation.__init__(self, everything, **kwargs) @@ -513,6 +511,14 @@ class AnimationGroup(Animation): for anim in self.sub_anims: anim.clean_up(*args, **kwargs) + def update_config(self, **kwargs): + Animation.update_config(self, **kwargs) + + # If AnimationGroup is called with any configuration, + # it is propagated to the sub_animations + for anim in self.sub_anims: + anim.update_config(**kwargs) + class EmptyAnimation(Animation): CONFIG = { "run_time" : 0,