From 56234b2cf418cf3a1027e02ac274446b40704a98 Mon Sep 17 00:00:00 2001 From: Tau <123704888+Tau-Laboratory@users.noreply.github.com> Date: Sun, 25 May 2025 01:33:02 +0200 Subject: [PATCH 1/3] Extracted a _get_unintroduced_mobjects function in Animation groups allowing Successions to handle nultiple animations acting on the same object after introduction --- manim/animation/composition.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/manim/animation/composition.py b/manim/animation/composition.py index 128066ba80..0aafbd2a89 100644 --- a/manim/animation/composition.py +++ b/manim/animation/composition.py @@ -66,9 +66,7 @@ def __init__( self.rate_func = rate_func self.group = group if self.group is None: - mobjects = remove_list_redundancies( - [anim.mobject for anim in self.animations if not anim.is_introducer()], - ) + mobjects = self._get_unintroduced_mobjects() if config["renderer"] == RendererType.OPENGL: self.group = OpenGLGroup(*mobjects) else: @@ -78,6 +76,11 @@ def __init__( ) self.run_time: float = self.init_run_time(run_time) + def _get_unintroduced_mobjects(self) -> Sequence[Mobject]: + return remove_list_redundancies( + [anim.mobject for anim in self.animations if not anim.is_introducer()], + ) + def get_all_mobjects(self) -> Sequence[Mobject]: return list(self.group) @@ -231,6 +234,16 @@ def construct(self): def __init__(self, *animations: Animation, lag_ratio: float = 1, **kwargs) -> None: super().__init__(*animations, lag_ratio=lag_ratio, **kwargs) + def _get_unintroduced_mobjects(self) -> Sequence[Mobject]: + introduced_mobjects = set() + relevant_objects = [] + for anim in self.animations: + if anim.is_introducer(): + introduced_mobjects.add(anim.mobject) + elif anim.mobject not in introduced_mobjects: + relevant_objects.append(anim.mobject) + return remove_list_redundancies(relevant_objects) + def begin(self) -> None: if not self.animations: raise ValueError( From 26856471cabf5fae5d32cc39c6b93aa1e2cdfb26 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 24 May 2025 23:38:39 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- manim/animation/composition.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manim/animation/composition.py b/manim/animation/composition.py index 0aafbd2a89..1bac92de65 100644 --- a/manim/animation/composition.py +++ b/manim/animation/composition.py @@ -78,8 +78,8 @@ def __init__( def _get_unintroduced_mobjects(self) -> Sequence[Mobject]: return remove_list_redundancies( - [anim.mobject for anim in self.animations if not anim.is_introducer()], - ) + [anim.mobject for anim in self.animations if not anim.is_introducer()], + ) def get_all_mobjects(self) -> Sequence[Mobject]: return list(self.group) From fdaa35c0c1c06cf27ca42103f721a8caa68da20a Mon Sep 17 00:00:00 2001 From: Tau <123704888+Tau-Laboratory@users.noreply.github.com> Date: Sun, 25 May 2025 07:31:55 +0200 Subject: [PATCH 3/3] Fixed the naming of a local variable --- manim/animation/composition.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manim/animation/composition.py b/manim/animation/composition.py index 0aafbd2a89..4708b764b9 100644 --- a/manim/animation/composition.py +++ b/manim/animation/composition.py @@ -236,13 +236,13 @@ def __init__(self, *animations: Animation, lag_ratio: float = 1, **kwargs) -> No def _get_unintroduced_mobjects(self) -> Sequence[Mobject]: introduced_mobjects = set() - relevant_objects = [] + unintroduced_mobjects = [] for anim in self.animations: if anim.is_introducer(): introduced_mobjects.add(anim.mobject) elif anim.mobject not in introduced_mobjects: - relevant_objects.append(anim.mobject) - return remove_list_redundancies(relevant_objects) + unintroduced_mobjects.append(anim.mobject) + return remove_list_redundancies(unintroduced_mobjects) def begin(self) -> None: if not self.animations: