Current SMH does playback by running calculations every tick, at least on workshop version and the smooth playbacked beta, while beta does at least try to run calculations every frame change on normal playback. It does get messy, and I think having a way to keep track of current frames would be better by somewhat caching them in memory, and not having to parse through all of the keyframes as often.
I was thinking having a way to tell where our playhead is should help with tracking the keyframes we should be playing, so there could be some way to track previous frames of entities we're playing, their next ones, and the current interpolation % we're going between them. Having all of these calculations done on playhead change and tracking next keyframes through linked lists (as keyframes could put pointers to their next and previous frames inside themselves?) could allow for lessening amount of calculations to be done to see where we're at, at the cost of increasing memory usage, I assume.
Currently I forgot the finer details of what I've wanted to do, but probably we could get something from here, even if explanation is sort of messy.
Current SMH does playback by running calculations every tick, at least on workshop version and the smooth playbacked beta, while beta does at least try to run calculations every frame change on normal playback. It does get messy, and I think having a way to keep track of current frames would be better by somewhat caching them in memory, and not having to parse through all of the keyframes as often.
I was thinking having a way to tell where our playhead is should help with tracking the keyframes we should be playing, so there could be some way to track previous frames of entities we're playing, their next ones, and the current interpolation % we're going between them. Having all of these calculations done on playhead change and tracking next keyframes through linked lists (as keyframes could put pointers to their next and previous frames inside themselves?) could allow for lessening amount of calculations to be done to see where we're at, at the cost of increasing memory usage, I assume.
Currently I forgot the finer details of what I've wanted to do, but probably we could get something from here, even if explanation is sort of messy.