Predicted State Node
A predicted state node is a class you can inherit from in order to build your own states for the predicted state machine.
There are multiple predicted state node types to inherit from:
PredictedStateNode<STATE>This allows your statenode to hold and simulate statePredictedStateNode<INPUT, STATE>This allows your statenode to hold and simulate state w. input. Optimal for characters/players'
Overrides
These can override a few different methods, in order for you to run functionality unique to the individual states:
EnterThis is optimal for running simulation logic upon entering the stateExitThis is optimal for running simulation logic upon exiting the stateStateSimulateThis is your perโtick state simulation; runs only when this state is activeViewEnterRun view/visual logic upon entering the state (predicted or verified)ViewExitRun view/visual logic upon exiting the state (predicted or verified)
Mind you, you still have the normal predicted identity override as well! Those run on every node, every tick, even when the node isn't active. Each node keeps its own state and input, see State and input across transitions.
Snippet
public class AttackState : PredictedStateNode<MyInput, MyState>
{
public override void Enter() { /* start attack windup */ }
// Required by PredictedIdentity<TInput, TState>. Runs every tick, even when this node isn't active
protected override void Simulate(MyInput input, ref MyState state, float delta) { }
protected override void StateSimulate(in MyInput i, ref MyState s, float dt)
{
// simulate attack timing using only s and i
s.attackTimer = Mathf.Max(0, s.attackTimer - dt);
if (s.attackTimer == 0) machine.SetState(nextState);
}
public override void ViewEnter(bool verified)
{ /* play VFX/SFX, camera shake, etc */ }
}