From a73cbb8014b61d0f7ec9f2d5820b9001843b8a23 Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Mon, 11 Feb 2019 13:17:23 -0800 Subject: [PATCH] Added always_shift and always_rotate --- manimlib/mobject/mobject_update_utils.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/manimlib/mobject/mobject_update_utils.py b/manimlib/mobject/mobject_update_utils.py index 5f82f62b..20779804 100644 --- a/manimlib/mobject/mobject_update_utils.py +++ b/manimlib/mobject/mobject_update_utils.py @@ -1,5 +1,13 @@ +import inspect +from manimlib.constants import DEGREES +from manimlib.constants import RIGHT +from manimlib.mobject.mobject import Mobject + + def always(method, *args, **kwargs): + assert(inspect.ismethod(method)) mobject = method.__self__ + assert(isinstance(mobject, Mobject)) func = method.__func__ mobject.add_updater(lambda m: func(m, *args, **kwargs)) @@ -8,3 +16,15 @@ def always_redraw(func): mob = func() mob.add_updater(lambda m: mob.become(func())) return mob + + +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) + )