3b1b-manim/manimlib/mobject/mobject_update_utils.py

31 lines
761 B
Python
Raw Normal View History

2019-02-11 13:17:23 -08:00
import inspect
from manimlib.constants import DEGREES
from manimlib.constants import RIGHT
from manimlib.mobject.mobject import Mobject
def always(method, *args, **kwargs):
2019-02-11 13:17:23 -08:00
assert(inspect.ismethod(method))
mobject = method.__self__
2019-02-11 13:17:23 -08:00
assert(isinstance(mobject, Mobject))
func = method.__func__
mobject.add_updater(lambda m: func(m, *args, **kwargs))
def always_redraw(func):
2018-10-05 17:17:55 -07:00
mob = func()
mob.add_updater(lambda m: mob.become(func()))
return mob
2019-02-11 13:17:23 -08:00
def always_shift(mobject, direction=RIGHT, rate=0.1):
mobject.add_updater(
lambda m, dt: m.shift(dt * rate * direction)
)
def always_rotate(mobject, rate=20 * DEGREES, **kwargs):
mobject.add_updater(
lambda m, dt: m.rotate(dt * rate, **kwargs)
)