mirror of
https://github.com/3b1b/manim.git
synced 2025-08-03 04:04:36 +08:00
Removed foreground mobjects
This commit is contained in:
@ -39,8 +39,6 @@ class Scene(Container):
|
||||
)
|
||||
|
||||
self.mobjects = []
|
||||
# TODO, remove need for foreground mobjects
|
||||
self.foreground_mobjects = []
|
||||
self.num_plays = 0
|
||||
self.time = 0
|
||||
self.original_skipping_status = self.skip_animations
|
||||
@ -127,10 +125,7 @@ class Scene(Container):
|
||||
if self.skip_animations and not ignore_skipping:
|
||||
return
|
||||
if mobjects is None:
|
||||
mobjects = list_update(
|
||||
self.mobjects,
|
||||
self.foreground_mobjects,
|
||||
)
|
||||
mobjects = self.mobjects
|
||||
if background is not None:
|
||||
self.set_camera_pixel_array(background)
|
||||
else:
|
||||
@ -187,7 +182,6 @@ class Scene(Container):
|
||||
Mobjects will be displayed, from background to
|
||||
foreground in the order with which they are added.
|
||||
"""
|
||||
mobjects = [*mobjects, *self.foreground_mobjects]
|
||||
self.restructure_mobjects(to_remove=mobjects)
|
||||
self.mobjects += mobjects
|
||||
return self
|
||||
@ -205,13 +199,10 @@ class Scene(Container):
|
||||
return self
|
||||
|
||||
def remove(self, *mobjects):
|
||||
for list_name in "mobjects", "foreground_mobjects":
|
||||
self.restructure_mobjects(mobjects, list_name, False)
|
||||
self.restructure_mobjects(mobjects, extract_families=False)
|
||||
return self
|
||||
|
||||
def restructure_mobjects(self, to_remove,
|
||||
mobject_list_name="mobjects",
|
||||
extract_families=True):
|
||||
def restructure_mobjects(self, to_remove, extract_families=True):
|
||||
"""
|
||||
In cases where the scene contains a group, e.g. Group(m1, m2, m3), but one
|
||||
of its submobjects is removed, e.g. scene.remove(m1), the list of mobjects
|
||||
@ -220,9 +211,7 @@ class Scene(Container):
|
||||
"""
|
||||
if extract_families:
|
||||
to_remove = self.camera.extract_mobject_family_members(to_remove)
|
||||
_list = getattr(self, mobject_list_name)
|
||||
new_list = self.get_restructured_mobject_list(_list, to_remove)
|
||||
setattr(self, mobject_list_name, new_list)
|
||||
self.mobjects = self.get_restructured_mobject_list(self.mobjects, to_remove)
|
||||
return self
|
||||
|
||||
def get_restructured_mobject_list(self, mobjects, to_remove):
|
||||
@ -240,25 +229,6 @@ class Scene(Container):
|
||||
add_safe_mobjects_from_list(mobjects, set(to_remove))
|
||||
return new_mobjects
|
||||
|
||||
# TODO, remove this, and calls to this
|
||||
def add_foreground_mobjects(self, *mobjects):
|
||||
self.foreground_mobjects = list_update(
|
||||
self.foreground_mobjects,
|
||||
mobjects
|
||||
)
|
||||
self.add(*mobjects)
|
||||
return self
|
||||
|
||||
def add_foreground_mobject(self, mobject):
|
||||
return self.add_foreground_mobjects(mobject)
|
||||
|
||||
def remove_foreground_mobjects(self, *to_remove):
|
||||
self.restructure_mobjects(to_remove, "foreground_mobjects")
|
||||
return self
|
||||
|
||||
def remove_foreground_mobject(self, mobject):
|
||||
return self.remove_foreground_mobjects(mobject)
|
||||
|
||||
def bring_to_front(self, *mobjects):
|
||||
self.add(*mobjects)
|
||||
return self
|
||||
@ -270,7 +240,6 @@ class Scene(Container):
|
||||
|
||||
def clear(self):
|
||||
self.mobjects = []
|
||||
self.foreground_mobjects = []
|
||||
return self
|
||||
|
||||
def get_mobjects(self):
|
||||
@ -287,12 +256,9 @@ class Scene(Container):
|
||||
animation_mobjects = [anim.mobject for anim in animations]
|
||||
mobjects = self.get_mobject_family_members()
|
||||
for i, mob in enumerate(mobjects):
|
||||
update_possibilities = [
|
||||
mob in animation_mobjects,
|
||||
len(mob.get_family_updaters()) > 0,
|
||||
mob in self.foreground_mobjects
|
||||
]
|
||||
if any(update_possibilities):
|
||||
animated = (mob in animation_mobjects)
|
||||
updated = (len(mob.get_family_updaters()) > 0)
|
||||
if animated or updated:
|
||||
return mobjects[i:]
|
||||
return []
|
||||
|
||||
|
Reference in New Issue
Block a user