10 #include <NasNas/tween/Easing.hpp>    13     template <
unsigned N, 
typename = std::enable_if_t<N != 0 && N != 1>>
    24         auto from_to(
const std::array<float, N>& start, 
const std::array<float, N>& end) -> 
MultiTween<N>&;
    30         auto apply(tween::MultiCallbackFunction<N> cb) -> 
MultiTween<N>&;
    33         auto with(std::array<tween::EasingFunction, N> fn) -> 
MultiTween<N>&;
    37         void onEnd(std::function<
void()> fn);
    41         auto ended() 
const -> bool;
    47         std::vector<std::array<float, N>> m_starts;
    48         std::vector<std::array<float, N>> m_ends;
    49         std::vector<float> m_durations;
    50         std::vector<float> m_delays;
    51         std::vector<std::array<tween::EasingFunction, N>> m_easing_fns;
    52         std::vector<tween::MultiCallbackFunction<N>> m_on_step_cbs;
    53         std::function<void()> m_on_end_cb = []{};
    55         float m_initial_delay = 0.f;
    56         float m_current_delay = 0.f;
    57         bool m_first_run = 
true;
    58         bool m_on_end_called = 
false;
    61         inline void interpolate(
unsigned index, std::array<float, N>& x)
 const {
    62             for (
unsigned i = 0; i < N; ++i) {
    63                 x[i] = (m_ends[index][i] - m_starts[index][i]) * x[i] + m_starts[index][i];
    66         void emplaceAnimation();
    71 #include "MultiTween.tpp"