namespace LitMotion
{
    /// 
    /// Provides the function to schedule the execution of a motion.
    /// 
    public interface IMotionScheduler
    {
        /// 
        /// Schedule the motion.
        /// 
        /// The type of value to animate
        /// The type of special parameters given to the motion data
        /// The type of adapter that support value animation
        /// Motion data
        /// Motion callback data
        /// Motion handle
        MotionHandle Schedule(ref MotionData data, ref MotionCallbackData callbackData)
            where TValue : unmanaged
            where TOptions : unmanaged, IMotionOptions
            where TAdapter : unmanaged, IMotionAdapter;
        /// 
        /// Returns the current time.
        /// 
        double Time { get; }
    }
    /// 
    /// Type of time used to play the motion
    /// 
    public enum MotionTimeKind : byte
    {
        Time = 0,
        UnscaledTime = 1,
        Realtime = 2
    }
}