/************************************************************************************************************************/ /// <summary>Creates <see cref="AnimancerTransition"/>s from all states in the `stateMachine`.</summary> private static AnimancerTransition GenerateTransitions(AnimatorStateMachine stateMachine) { AnimancerTransition transition = null; foreach (var child in stateMachine.stateMachines) { transition = GenerateTransitions(child.stateMachine); } foreach (var child in stateMachine.states) { transition = GenerateTransition(child.state); } return(transition); }
/************************************************************************************************************************/ /// <summary>Creates an <see cref="AnimancerTransition"/> from the `transition`.</summary> private static AnimancerTransition GenerateTransition(AnimatorStateTransition transition) { AnimancerTransition animancerTransition = null; if (transition.destinationStateMachine != null) { animancerTransition = GenerateTransitions(transition.destinationStateMachine); } if (transition.destinationState != null) { animancerTransition = GenerateTransition(transition.destinationState); } return(animancerTransition); }
/************************************************************************************************************************/ /// <summary>Saves the `transition` in the same folder as the `originalAsset`.</summary> private static void SaveTransition(Object originalAsset, AnimancerTransition transition) { if (string.IsNullOrEmpty(transition.name)) { transition.name = originalAsset.name; } var path = AssetDatabase.GetAssetPath(originalAsset); path = Path.GetDirectoryName(path); path = Path.Combine(path, transition.name + ".asset"); path = AssetDatabase.GenerateUniqueAssetPath(path); AssetDatabase.CreateAsset(transition, path); Debug.Log($"Saved {path}", transition); }