Found it… knew there had to be a simple solution, its just hidden.
- Create animation blueprint
- Set your skeletal component to use the animation blueprint
- Add a node to play your animation
- Right click on said node and “convert to single frame animation”. (<- this is the bit I didn’t see until today)
- Create a variable to input the frame offset
Now I just have to work out how to set that variable via the main blueprint / from C++ and how to normalize it relative to the animation length so I can just use 0->1, but it seems like this will be more normal blueprint programming.