Was a lot of data per frame but not THAT much
We stored state and inputs per frame
Restored to state when time jumping, simulated using inputs when time resumed
Whenever you time jump a clone is created and the recorded data is handed off
For the animation continuity during scrubbing we override the current animation progress based on the time your previewing, regardless of when an animation started, kind of a hack