Fix up the animation test so that it works with random timings even if the example has a timing.

This commit is contained in:
Zed A. Shaw 2026-02-03 11:17:36 -05:00
parent dea0607901
commit bdfc2397e2
4 changed files with 16 additions and 15 deletions

View file

@ -58,17 +58,18 @@ namespace animate2 {
dbc::check(sequence.frame_count == sequence.frames.size(), "frame_count doesn't match frame.size()");
auto duration = sequence.durations.at(sequence.current);
auto elapsed = sequence.timer.getElapsedTime().toDuration();
// std::cout << "subframe: " << sequence.subframe << " elapsed: " << elapsed << " duration: " << duration << std::endl;
bool frame_change = false;
if(sequence.timer.getElapsedTime() >= duration) {
if(elapsed < duration) {
// BUG: subframe will just run crazy because I don't actually do delta time difference here vvvvv
sequence.subframe = std::lerp(sequence.subframe, 1.0, sequence.timer.DELTA * transform.ease_rate);
} else {
sequence.timer.restart();
sequence.current++;
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);
std::cout << "subframe: " << sequence.subframe << " duration: " << duration << std::endl;
}
if(sequence.current >= sequence.frame_count) {
@ -152,9 +153,9 @@ namespace animate2 {
motion(*this, pos_out, scale_out, tick);
fmt::println("sub: {}, tick: {}, tr: {},{}; pos: {},{}; scale: {},{}",
seq.subframe, tick, min_y, max_y, pos_out.x, pos_out.y,
scale_out.x, scale_out.y);
// fmt::println("sub: {}, tick: {}, tr: {},{}; pos: {},{}; scale: {},{}",
// seq.subframe, tick, min_y, max_y, pos_out.x, pos_out.y,
// scale_out.x, scale_out.y);
}
Animate2 load(const std::string &file, const std::string &anim_name) {