korchoon
4/16/2020 - 10:15 AM

Traverse Animator States

IEnumerable<AnimatorState> Traverse(AnimatorController controller) {
    foreach (var controllerLayer in controller.layers)
    foreach (var st in Inner(controllerLayer.stateMachine))
        yield return st;

    IEnumerable<AnimatorState> Inner(AnimatorStateMachine f) {
        foreach (var state in f.states)
            yield return state.state;

        foreach (var child in f.stateMachines)
        foreach (var st in Inner(child.stateMachine))
            yield return st;
    }
}