54 lines
1.8 KiB
C#
Executable File
54 lines
1.8 KiB
C#
Executable File
using System.Linq;
|
|
using UnityEditor;
|
|
using UnityEditor.Animations;
|
|
using UnityEngine;
|
|
|
|
namespace ReferenceViewer
|
|
{
|
|
[System.Serializable]
|
|
public class AnimationControllerAssetData : AssetData
|
|
{
|
|
public new const string extension = ".controller";
|
|
private readonly AnimatorController animatorController;
|
|
|
|
public AnimationControllerAssetData(string assetPath) : base(assetPath)
|
|
{
|
|
animatorController =
|
|
AssetDatabase.LoadAssetAtPath(assetPath, typeof(AnimatorController)) as AnimatorController;
|
|
}
|
|
|
|
public override void AddAssetData(Object obj)
|
|
{
|
|
var guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(obj));
|
|
reference.Add(guid);
|
|
foreach (var animationClip in animatorController.animationClips)
|
|
{
|
|
AddReference(animationClip);
|
|
}
|
|
|
|
foreach (var animatorControllerLayer in animatorController.layers)
|
|
{
|
|
AddReferenceForStateMachine(animatorControllerLayer.stateMachine);
|
|
}
|
|
}
|
|
|
|
private void AddReferenceForStateMachine(AnimatorStateMachine stateMachine)
|
|
{
|
|
foreach (var stateMachineBehaviour in stateMachine.states
|
|
.SelectMany(childAnimatorState => childAnimatorState.state.behaviours))
|
|
{
|
|
AddReference(stateMachineBehaviour);
|
|
}
|
|
|
|
foreach (var stateMachineBehaviour in stateMachine.behaviours)
|
|
{
|
|
AddReference(stateMachineBehaviour);
|
|
}
|
|
|
|
foreach (var childAnimatorStateMachine in stateMachine.stateMachines)
|
|
{
|
|
AddReferenceForStateMachine(childAnimatorStateMachine.stateMachine);
|
|
}
|
|
}
|
|
}
|
|
} |