
#########
Animation
#########

.. js:class:: cee.pt.Animation

   Controls time-step animation of a :js:class:`ParticleModel <cee.pt.ParticleModel>`\ .
   
   Access via :js:func:`ParticleModel.animation <cee.pt.ParticleModel.animation>`\ . Frames advance inside the render loop at the configured :js:func:`targetFrameRate <cee.pt.Animation.targetFrameRate>`\ .
   
   .. rubric:: Examples
   
   
   .. code-block:: typescript
   
      const model = new cee.pt.ParticleModel({ preloadFrameCount: 5 });
      await model.openModel(url);
      await model.setFrame(0);
      
      model.animation.targetFrameRate = 30;
      model.animation.runAnimation(true);
   
   
   Index
   =====
   
   .. rubric:: Accessors
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:func:`~cee.pt.Animation.frameStride`
   * :js:func:`~cee.pt.Animation.loop`
   * :js:func:`~cee.pt.Animation.targetFrameRate`
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~cee.pt.Animation.isModelAnimationRunning`
   * :js:meth:`~cee.pt.Animation.runAnimation`
   * :js:meth:`~cee.pt.Animation.setAnimationFrameChangedCallback`
   * :js:meth:`~cee.pt.Animation.setFirstFrame`
   * :js:meth:`~cee.pt.Animation.setLastFrame`
   * :js:meth:`~cee.pt.Animation.setNextFrame`
   * :js:meth:`~cee.pt.Animation.setPreviousFrame`
   
   



.. rst-class:: kind-group kind-accessors

.. rubric:: Accessors
   :class: kind-group-title


.. js:method:: cee.pt.Animation.frameStride

      .. rst-class:: sig-pretty-signature
      
         | *get* frameStride(): *number*
      
      Frames to advance per step. Default ``1``\ .
      
      E.g. stride 5 with ``targetFrameRate = 30`` gives a 150x speedup. Also used by :js:meth:`setNextFrame <cee.pt.Animation.setNextFrame>` and :js:meth:`setPreviousFrame <cee.pt.Animation.setPreviousFrame>`\ .
      
      **Returns**\ : *number*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* frameStride(**value**\ : *number*\ ): *void*
      
      **Parameters**
      
      
         **value**\ : *number*
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.loop

      .. rst-class:: sig-pretty-signature
      
         | *get* loop(): *boolean*
      
      Wraps from the last frame to the first. Default ``true``\ .
      
      **Returns**\ : *boolean*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* loop(**value**\ : *boolean*\ ): *void*
      
      **Parameters**
      
      
         **value**\ : *boolean*
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.targetFrameRate

      .. rst-class:: sig-pretty-signature
      
         | *get* targetFrameRate(): *number*
      
      Target animation speed in frames per second. Actual speed may be lower if data is not yet cached.
      
      **Returns**\ : *number*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* targetFrameRate(**fps**\ : *number*\ ): *void*
      
      **Parameters**
      
      
         **fps**\ : *number*
      
      
      **Returns**\ : *void*
      



.. rst-class:: kind-group kind-methods

.. rubric:: Methods
   :class: kind-group-title


.. js:method:: cee.pt.Animation.isModelAnimationRunning

      .. rst-class:: sig-pretty-signature
      
         | isModelAnimationRunning(): *boolean*
      
      Whether the animation is running.
      
      **Returns**\ : *boolean*
      



.. js:method:: cee.pt.Animation.runAnimation

      .. rst-class:: sig-pretty-signature
      
         | runAnimation(**start**\ : *boolean*\ ): *void*
      
      Start or stop playback.
      
      **Parameters**
      
      
         **start**\ : *boolean*
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.setAnimationFrameChangedCallback

      .. rst-class:: sig-pretty-signature
      
         | setAnimationFrameChangedCallback(**callback**\ : :js:class:`AnimationFrameChangedCallback <cee.pt.AnimationFrameChangedCallback>`\ ): *void*
      
      Register a callback invoked on each frame change.
      
      **Parameters**
      
      
         **callback**\ : :js:class:`AnimationFrameChangedCallback <cee.pt.AnimationFrameChangedCallback>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.setFirstFrame

      .. rst-class:: sig-pretty-signature
      
         | setFirstFrame(): *void*
      
      Seek to the first frame. Stops animation.
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.setLastFrame

      .. rst-class:: sig-pretty-signature
      
         | setLastFrame(): *void*
      
      Seek to the last frame. Stops animation.
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.setNextFrame

      .. rst-class:: sig-pretty-signature
      
         | setNextFrame(): *void*
      
      Advance by :js:func:`frameStride <cee.pt.Animation.frameStride>` frames. Stops animation.
      
      **Returns**\ : *void*
      



.. js:method:: cee.pt.Animation.setPreviousFrame

      .. rst-class:: sig-pretty-signature
      
         | setPreviousFrame(): *void*
      
      Rewind by :js:func:`frameStride <cee.pt.Animation.frameStride>` frames. Stops animation.
      
      **Returns**\ : *void*
      




