54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | 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); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |