from manim import *

from manim_slides import Slide, ThreeDSlide


class Example(Slide):
    def construct(self):
        circle = Circle(radius=3, color=BLUE)
        dot = Dot()

        self.play(GrowFromCenter(circle))
        self.pause()

        self.start_loop()
        self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
        self.end_loop()

        self.play(dot.animate.move_to(ORIGIN))
        self.pause()

        self.play(dot.animate.move_to(RIGHT * 3))
        self.pause()

        self.start_loop()
        self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
        self.end_loop()

        # Each slide MUST end with an animation (a self.wait is considered an animation)
        self.play(dot.animate.move_to(ORIGIN))

class ThreeDExample(ThreeDSlide):
    def construct(self):
        axes = ThreeDAxes()
        circle=Circle()

        self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES)
        self.add(circle,axes)

        self.begin_ambient_camera_rotation(rate=0.1)
        self.pause()

        self.stop_ambient_camera_rotation()
        self.move_camera(phi=75 * DEGREES, theta=30 * DEGREES)
        self.wait()

        self.start_loop()
        self.play(circle.animate.move_to(ORIGIN + UP))
        self.end_loop()

        self.play(circle.animate.move_to(ORIGIN))

        # TODO: fixit