From 0b5e9d4a8bda88a9ccd69477e3d80b5512c61160 Mon Sep 17 00:00:00 2001 From: german2020 Date: Sun, 27 Aug 2023 15:35:22 +0800 Subject: [PATCH] add zorder to mobject --- manimlib/mobject/mobject.py | 3 +++ manimlib/scene/scene.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/manimlib/mobject/mobject.py b/manimlib/mobject/mobject.py index 9f4f2a18..911bc73f 100644 --- a/manimlib/mobject/mobject.py +++ b/manimlib/mobject/mobject.py @@ -83,6 +83,7 @@ class Mobject(object): # If true, the mobject will not get rotated according to camera position is_fixed_in_frame: bool = False, depth_test: bool = False, + zorder: int = 0, ): self.color = color self.opacity = opacity @@ -90,6 +91,8 @@ class Mobject(object): self.texture_paths = texture_paths self._is_fixed_in_frame = is_fixed_in_frame self.depth_test = depth_test + self.zorder = zorder + self._scene_order = 0 # Internal state self.submobjects: list[Mobject] = [] diff --git a/manimlib/scene/scene.py b/manimlib/scene/scene.py index ed4bd5fc..8fa807e3 100644 --- a/manimlib/scene/scene.py +++ b/manimlib/scene/scene.py @@ -414,7 +414,13 @@ class Scene(object): foreground in the order with which they are added. """ self.remove(*new_mobjects) + idx = 0 + scene_order = len(self.mobjects) + for m in new_mobjects: + m._scene_order = scene_order+idx + idx += 1 self.mobjects += new_mobjects + self.mobjects = [self.mobjects[0]]+sorted(self.mobjects[1:], key=lambda m:(m.zorder,m._scene_order)) self.id_to_mobject_map.update({ id(sm): sm for m in new_mobjects