|
|
|
|
|
using UnityEditor;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
public class AnimUnhideTool
|
|
|
|
|
|
{
|
|
|
|
|
|
[MenuItem("Tools/Malbers Animations/Animator States Unhide Fix")]
|
|
|
|
|
|
private static void Fix()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Selection.objects.Length < 1)
|
|
|
|
|
|
throw new UnityException("Select animator controller(s) before try fix it!");
|
|
|
|
|
|
|
|
|
|
|
|
int scnt = 0;
|
|
|
|
|
|
|
|
|
|
|
|
foreach (Object o in Selection.objects)
|
|
|
|
|
|
{
|
|
|
|
|
|
UnityEditor.Animations.AnimatorController ac = o as UnityEditor.Animations.AnimatorController;
|
|
|
|
|
|
if (ac == null)
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
foreach (UnityEditor.Animations.AnimatorControllerLayer layer in ac.layers)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
foreach (UnityEditor.Animations.ChildAnimatorState curState in layer.stateMachine.states)
|
|
|
|
|
|
{
|
|
|
|
|
|
scnt = FixState(scnt, curState);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
scnt = FixStateMachines(scnt, layer.stateMachine.stateMachines);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
EditorUtility.SetDirty(ac);
|
|
|
|
|
|
}
|
|
|
|
|
|
Debug.Log("Fixing " + scnt + " states done!");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static int FixStateMachines(int scnt, UnityEditor.Animations.ChildAnimatorStateMachine[] stateMachines)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (UnityEditor.Animations.ChildAnimatorStateMachine curStateMachine in stateMachines)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curStateMachine.stateMachine.hideFlags != (HideFlags)1)
|
|
|
|
|
|
{
|
|
|
|
|
|
curStateMachine.stateMachine.hideFlags = (HideFlags)1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (curStateMachine.stateMachine.stateMachines != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
scnt = FixStateMachines(scnt, curStateMachine.stateMachine.stateMachines);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (curStateMachine.stateMachine.entryTransitions != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (UnityEditor.Animations.AnimatorTransition curTrans in curStateMachine.stateMachine.entryTransitions)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curTrans.hideFlags != (HideFlags)1)
|
|
|
|
|
|
{
|
|
|
|
|
|
curTrans.hideFlags = (HideFlags)1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
foreach (UnityEditor.Animations.ChildAnimatorState curState in curStateMachine.stateMachine.states)
|
|
|
|
|
|
{
|
|
|
|
|
|
scnt = FixState(scnt, curState);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return scnt;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static int FixState(int scnt, UnityEditor.Animations.ChildAnimatorState curState)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curState.state.hideFlags != (HideFlags)1)
|
|
|
|
|
|
{
|
|
|
|
|
|
curState.state.hideFlags = (HideFlags)1;
|
|
|
|
|
|
scnt++;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (curState.state.motion != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curState.state.motion.hideFlags != (HideFlags)1)
|
|
|
|
|
|
curState.state.motion.hideFlags = (HideFlags)1;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (curState.state.transitions != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (UnityEditor.Animations.AnimatorStateTransition curTrans in curState.state.transitions)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curTrans.hideFlags != (HideFlags)1)
|
|
|
|
|
|
{
|
|
|
|
|
|
curTrans.hideFlags = (HideFlags)1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (curState.state.behaviours != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (StateMachineBehaviour behaviour in curState.state.behaviours)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (behaviour.hideFlags != (HideFlags)1)
|
|
|
|
|
|
behaviour.hideFlags = (HideFlags)1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return scnt;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|