diff --git a/animate2.cpp b/animate2.cpp index 58abd0f..b103ec5 100644 --- a/animate2.cpp +++ b/animate2.cpp @@ -4,8 +4,12 @@ #include "dbc.hpp" #include "rand.hpp" +constexpr float SUB_FRAME_SENSITIVITY = 0.999f; + namespace animate2 { std::vector Animate2::calc_frames() { + dbc::check($sequence.frames.size() == $sequence.durations.size(), "$sequence.frames.size() != $sequence.durations.size()"); + std::vector frames; for(int frame_i : $sequence.frames) { @@ -54,10 +58,11 @@ namespace animate2 { if($sequence.timer.getElapsedTime() >= duration) { $sequence.timer.restart(); $sequence.current++; - if($sequence.subframe > 0.9) $sequence.subframe = 0.0f; + if($sequence.subframe > SUB_FRAME_SENSITIVITY) $sequence.subframe = 0.0f; frame_change = true; } else { $sequence.subframe = std::lerp($sequence.subframe, 1.0, $sequence.timer.DELTA * $transform.ease_rate); + fmt::println("subframe: {}, alpha: {}", $sequence.subframe, $sequence.timer.alpha); } diff --git a/tools/animator.cpp b/tools/animator.cpp index 4245d0e..29a6d44 100644 --- a/tools/animator.cpp +++ b/tools/animator.cpp @@ -156,8 +156,8 @@ animate2::Sheet sheet{ }; animate2::Sequence sequence{ - .frames{0,1,0,1}, - .durations{500ms, 266ms, 100ms, 100ms} + .frames{0,1}, + .durations{800ms, 200ms} }; animate2::Transform scale_tr{ @@ -167,12 +167,12 @@ animate2::Transform scale_tr{ .max_y{0.8f}, .simple{false}, .flipped{false}, - .ease_rate{1.0f/0.2f}, + .ease_rate{4.0f}, .scaled{true}, .toggled{false}, - .looped{true}, + .looped{false}, .easing = ease2::in_out_back, - .motion = ease2::scale_only, + .motion = ease2::move_rush, }; animate2::Transform move_tr{