I’ve made a little system for recording values along a time axis. It presents you with the ability to retrieve the values of the events stored, as well as get a value for a specific time (doing a linear interpolation for you if the time is between two points).
An example (and the main reason i did it) is an ‘AxisRecorder’, which records mouse movements and lets you play them back. This contains two TimedValueSequences (and two TimedValueSequence playback heads - although i’m thinking of making a playback head that can be used on multiple sequences for greater efficiency) one for each axis.
Here’s a demo app showing it in use- drag with the left button to record a movement. Click the right button to play it back again, and adjust the slider to change the playback speed.
Source + VC++e project
Here’s the source project, which includes the base TimedValueSequence classes.