Removed foreground mobjects

This commit is contained in:
Grant Sanderson
2020-01-15 18:01:28 -08:00
parent cd14dea021
commit 1917349c4a

View File

@ -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 []