StateMachine<TState>.StateSelector class provides an easy way to manage a prioritised list of potential states:
- Construct a
new StateMachine<TState>.StateSelectorby passing in the target state machine.
- Add states to the selector by calling its
Addmethod, which requires you to give them each a priority value. If multiple states have the same priority, the most recently added will be treated as a higher priority.
- After you have added all the potential states you want it to choose from, call
ForceSetStateto have it try to enter each of the states using the corresponding
- It attempts to enter each state you have added in order of priority (highest first).
- If it successfully enters a state, the selector is cleared.
If you want to define the priority of a state as part of the state class itself (rather than as a second parameter every time you call the
Add method), you can implement the
IPrioritizable interface. The
IPrioritizable.Priority is usually implemented as an
virtual property in your base state class so that each state can
override it with their own priority.