#pragma once

typedef double (*MEasing)(double);

double m_easing_linear(double p);

double m_easing_quadratic_in(double p);

double m_easing_quadratic_out(double p);

double m_easing_quadratic_in_out(double p);

double m_easing_cubic_in(double p);

double m_easing_cubic_out(double p);

double m_easing_cubic_in_out(double p);

double m_easing_quartic_in(double p);

double m_easing_quartic_out(double p);

double m_easing_quartic_in_out(double p);

double m_easing_quintic_in(double p);

double m_easing_quintic_out(double p);

double m_easing_quintic_in_out(double p);

double m_easing_sine_in(double p);

double m_easing_sine_out(double p);

double m_easing_sine_in_out(double p);

double m_easing_circular_in(double p);

double m_easing_circular_out(double p);

double m_easing_circular_in_out(double p);

double m_easing_exponential_in(double p);

double m_easing_exponential_out(double p);

double m_easing_exponential_in_out(double p);

double m_easing_elastic_in(double p);

double m_easing_elastic_out(double p);

double m_easing_elastic_in_out(double p);

double m_easing_back_in(double p);

double m_easing_back_out(double p);

double m_easing_back_in_out(double p);

double m_easing_bounce_out(double p);

double m_easing_bounce_in(double p);

double m_easing_bounce_in_out(double p);
