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 = [] self.mobjects = []
# TODO, remove need for foreground mobjects
self.foreground_mobjects = []
self.num_plays = 0 self.num_plays = 0
self.time = 0 self.time = 0
self.original_skipping_status = self.skip_animations self.original_skipping_status = self.skip_animations
@ -127,10 +125,7 @@ class Scene(Container):
if self.skip_animations and not ignore_skipping: if self.skip_animations and not ignore_skipping:
return return
if mobjects is None: if mobjects is None:
mobjects = list_update( mobjects = self.mobjects
self.mobjects,
self.foreground_mobjects,
)
if background is not None: if background is not None:
self.set_camera_pixel_array(background) self.set_camera_pixel_array(background)
else: else:
@ -187,7 +182,6 @@ class Scene(Container):
Mobjects will be displayed, from background to Mobjects will be displayed, from background to
foreground in the order with which they are added. foreground in the order with which they are added.
""" """
mobjects = [*mobjects, *self.foreground_mobjects]
self.restructure_mobjects(to_remove=mobjects) self.restructure_mobjects(to_remove=mobjects)
self.mobjects += mobjects self.mobjects += mobjects
return self return self
@ -205,13 +199,10 @@ class Scene(Container):
return self return self
def remove(self, *mobjects): def remove(self, *mobjects):
for list_name in "mobjects", "foreground_mobjects": self.restructure_mobjects(mobjects, extract_families=False)
self.restructure_mobjects(mobjects, list_name, False)
return self return self
def restructure_mobjects(self, to_remove, def restructure_mobjects(self, to_remove, extract_families=True):
mobject_list_name="mobjects",
extract_families=True):
""" """
In cases where the scene contains a group, e.g. Group(m1, m2, m3), but one 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 of its submobjects is removed, e.g. scene.remove(m1), the list of mobjects
@ -220,9 +211,7 @@ class Scene(Container):
""" """
if extract_families: if extract_families:
to_remove = self.camera.extract_mobject_family_members(to_remove) to_remove = self.camera.extract_mobject_family_members(to_remove)
_list = getattr(self, mobject_list_name) self.mobjects = self.get_restructured_mobject_list(self.mobjects, to_remove)
new_list = self.get_restructured_mobject_list(_list, to_remove)
setattr(self, mobject_list_name, new_list)
return self return self
def get_restructured_mobject_list(self, mobjects, to_remove): 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)) add_safe_mobjects_from_list(mobjects, set(to_remove))
return new_mobjects 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): def bring_to_front(self, *mobjects):
self.add(*mobjects) self.add(*mobjects)
return self return self
@ -270,7 +240,6 @@ class Scene(Container):
def clear(self): def clear(self):
self.mobjects = [] self.mobjects = []
self.foreground_mobjects = []
return self return self
def get_mobjects(self): def get_mobjects(self):
@ -287,12 +256,9 @@ class Scene(Container):
animation_mobjects = [anim.mobject for anim in animations] animation_mobjects = [anim.mobject for anim in animations]
mobjects = self.get_mobject_family_members() mobjects = self.get_mobject_family_members()
for i, mob in enumerate(mobjects): for i, mob in enumerate(mobjects):
update_possibilities = [ animated = (mob in animation_mobjects)
mob in animation_mobjects, updated = (len(mob.get_family_updaters()) > 0)
len(mob.get_family_updaters()) > 0, if animated or updated:
mob in self.foreground_mobjects
]
if any(update_possibilities):
return mobjects[i:] return mobjects[i:]
return [] return []