Metadata-Version: 2.1
Name: manim-play-timeline
Version: 0.1.0
Summary: A manim plugin providing the function play_timeline to play sequences of independent animations in parallel
Home-page: https://github.com/abul4fia/manim-play-timeline
License: MIT
Author: Abul4fia
Author-email: abul4fia@gmail.com
Requires-Python: >=3.8,<3.12
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Scientific/Engineering
Requires-Dist: manim (>=0.17)
Project-URL: Repository, https://github.com/abul4fia/manim-play-timeline
Description-Content-Type: text/markdown

# Playing animations in a timeline

This plugin provides the function `play_timeline()` which allows for launching several animations, at different instants, each one with a different duration, so that there can be several ones playing in parallel and finishing at different moments.

The interface is simple. You provide a dictionary whose keys are the timestamps at which each animations should start, and the values are the animations to play at those timestamps. It is possible to pass a list of animations for any given timestant, and in that case all those animations will start at once. The timestamps are relative to the time in which the whole timeline starts.

You can find a `demo.py` in this folder, which runs a timeline in which:

* A progress bar increases linearly from timestamp 0 up to timestamp 12 (used as a reference)
* At timestamp 1, a Square is created during 10 secs
* At timestamp 2, a Circle and a Triangle are created, during 4 secs and 2 secs respectively
* At timestamp 9, a Text is written during 3 secs

This is the code:

```python
class Test(Scene):
    """Example showing how to use play_timeline."""
    def construct(self):
        n = NumberLine(include_numbers=True, x_range=[0,12]).to_edge(DOWN)
        self.add(n)
        progress_bar = Line(n.n2p(0), n.n2p(12)).set_stroke(color=YELLOW, opacity=0.5, width=20)

        # Create a timeline of animations. One of the animations is the progress bar itself
        # going from 0 to 12 in 12 seconds. It can be used as a reference to check that
        # the other animations are playing at the right time.
        timeline = {
            0: Create(progress_bar, run_time=12, rate_func=linear),
            1: Create(Square(), run_time=10),
            2: [Create(Circle(), run_time=4),
                Create(Triangle(), run_time=2)],
            9: Write(Text("It works!").next_to(progress_bar, UP, buff=1), 
                     run_time=3)
        }
        play_timeline(self, timeline)
        self.wait()       
```

And this is the result:

![](demo.gif)
