Week 6: Fixing the ``Timeline`` issues and equipping it with more features
==========================================================================

.. post:: July 25 2022
   :author: Mohamed Abouagour
   :tags: google
   :category: gsoc


What did you do this week?
--------------------------

- Improved the ``PlaybackPanel`` by adding speed control and the ability to loop the animation. Also, fixed the lagging issue of play and pause buttons and composed them into a single play/pause button.

- Updated the old tutorials' syntax to match the other tutorials and added a new tutorial on position animation using spline interpolation. Added unit tests for the ``PlaybackPanel`` and the newly added color converters in ``colormap.py``.

- Added more hooks to the 2D sliders to cover two more states:

  1. ``on_value_changed``, which gets called whenever the value of the slider is changed without interacting with the slider.

  2. ``on_moving_slider``, which gets called when the position of the slider is changed by user interaction. `#634`_.

  - The reason for adding these two hooks is that there was only the ``on_change`` hook, which always gets called when the value of the slider is changed without considering how the value is changed, hence, the functionality of the slider was limited.

- Provided the ability to add static actors to the ``Timeline``, which might be needed in the animation part of Shivam's glTF project `#643`_.

  - If an ``actor`` is added to the ``Timeline`` as a static actor, it won't be animated by the ``Timeline``, but it will get added to the scene along with the ``Timeline``.

- Implemented a custom evaluator for the ``Timeline``'s properties.

  - A custom evaluator uses a user-provided function that takes time as input and evaluates the property at that time. This feature is yet to be discussed more in today's meeting.

- Fixed camera rotation and the view-up issue when interacting with the scene.


What is coming up next week?
----------------------------
- Make a tutorial on how to implement a new custom Interpolator to work with the ``Timeline``.
- Add motion path visualization feature for both position and color properties.
- Add custom evaluation functions directly, without using the ``CustomInterpolator``.
- Implement an already existing complex interpolator using closures instead of classes.

Did you get stuck anywhere?
---------------------------
I didn't get stuck this week.

.. _`#634`: https://github.com/fury-gl/fury/pull/634
.. _`#643`: https://github.com/fury-gl/fury/pull/643
