Controlling animation update timing using only C++

I am making a traditional 2.5d fighting game. I am looking for help with hopefully implementing some very specific animation logic in c++. There are two parts to my question that are sort of seperate but are also sort of dependant on each other. Just to clarify I will be asking about 3D animation using a skeletal mesh for this post.

The core traditional fighting game audience generally prefers that games run frame rate dependant as it ensures that buffering and timing for certain inputs (e.g. Down, down forwards, forwards and punch) remains consistent and certain “tells” in animation always play in a consistent gameplay timing. I currently have my game set up so that for moves it just steps through a data table at a rate of one row per frame and this works really well for sequencing moves and other actions in the game.

I need help devising a solution where I can step through each animation 1 frame at a time using c++. First of all this obviously helps it stay in synch with the gameplay that is behaving this way. Second of all there is a concept called “hitstop” where when a player is hit by another player or projectile, both objects involved in the collision pause for a few frames, both their character logic and animations are essentially frozen for a few frames. This creates the illusion of impact on hits without having to make more complex animations that might slow the game down as well as helping players to differentiate between a blocked hit and a hit that connects visually. If I could step through the animations frame by frame hit stop would be extremely easy to implement. Last of all I want to keep the possibility of using peer to peer rollback NetCode in the future open, and I feel like it would be easiest to achieve rollbacks in the animation if I am in charge of sequencing it.

As it stands right now there is a really nice set up where the designer just inserts spread sheets into a bunch of open slots on the Pawn Blueprint and it just works. I would like to be able to code something similar to that so in the Pawn blueprint you just insert a spread sheet and animation reference into slots next to each other and the move just works. For this reason I am wondering if there is a way I could make a blueprint exposed animation pointer variable or something similar. Currently the game is incredibly modular and things can be changed very quickly on the fly, having to add everything to a state machine would slow the process down a lot. Due to game feel reasons I will be straight cutting from one animation to another and do not require blending of any sort if that helps to simplify the problem.

Thanks for any help.