Fix animation compression going the wrong way
When compressing animation key frame indices the truncation breaks the animation near the border of pages. We use banker's rounding (FE_TONEAREST) as implemented by fast_ftoi to get the nearest integer frame.
This commit is contained in:
parent
e4e024ab88
commit
dd9525be04
1 changed files with 3 additions and 3 deletions
|
@ -4804,9 +4804,9 @@ void Animation::compress(uint32_t p_page_size, uint32_t p_fps, float p_split_tol
|
|||
continue; // This track is exhausted (all keys were added already), don't consider.
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t key_frame = double(track_get_key_time(uncomp_track, time_tracks[i].key_index)) / frame_len;
|
||||
|
||||
double key_time = track_get_key_time(uncomp_track, time_tracks[i].key_index);
|
||||
double result = key_time / frame_len;
|
||||
uint32_t key_frame = Math::fast_ftoi(result);
|
||||
if (time_tracks[i].needs_start_frame && key_frame > base_page_frame) {
|
||||
start_frame = true;
|
||||
best_frame = base_page_frame;
|
||||
|
|
Loading…
Reference in a new issue