mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Removed foreground mobjects
This commit is contained in:
parent
cd14dea021
commit
1917349c4a
1 changed files with 7 additions and 41 deletions
|
@ -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 []
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue