64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.IO; | |||
|  | using System.Linq; | |||
|  | using UnityEditor; | |||
|  | using UnityEngine; | |||
|  | using Object = UnityEngine.Object; | |||
|  | 
 | |||
|  | namespace ReferenceViewer | |||
|  | { | |||
|  |     public class Generate | |||
|  |     { | |||
|  |         private static float progress; | |||
|  | 
 | |||
|  | 
 | |||
|  |         public static void Build(string[] assetPaths, Action<AssetData[]> callback = null) | |||
|  |         { | |||
|  |             EditorUtility.ClearProgressBar(); | |||
|  |             var result = new AssetData[0]; | |||
|  |             EditorApplication.LockReloadAssemblies(); | |||
|  |             assetPaths = assetPaths.OrderBy(path => Path.GetExtension(path)).ToArray(); | |||
|  |             for (var i = 0; i < assetPaths.Length; i++) | |||
|  |             { | |||
|  |                 var assetPath = assetPaths[i]; | |||
|  | 
 | |||
|  |                 if (assetPath.StartsWith("Assets/") == false) | |||
|  |                     continue; | |||
|  |                 progress = (float) i / assetPaths.Length; | |||
|  | 
 | |||
|  |                 var obj = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Object)); | |||
|  |                 DisplayProgressBar(assetPath, progress); | |||
|  | 
 | |||
|  |                 AssetData assetData = null; | |||
|  | 
 | |||
|  |                 switch (Path.GetExtension(assetPath)) | |||
|  |                 { | |||
|  |                     case PrefabAssetData.extension: | |||
|  |                         assetData = new PrefabAssetData(assetPath); | |||
|  |                         break; | |||
|  |                     case SceneAssetData.extension: | |||
|  |                         assetData = new SceneAssetData(assetPath); | |||
|  |                         break; | |||
|  |                     case AnimationControllerAssetData.extension: | |||
|  |                         assetData = new AnimationControllerAssetData(assetPath); | |||
|  |                         break; | |||
|  |                     default: | |||
|  |                         assetData = new AssetData(assetPath); | |||
|  |                         break; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 assetData.AddAssetData(obj); | |||
|  |                 ArrayUtility.Add(ref result, assetData); | |||
|  |             } | |||
|  |             callback(result); | |||
|  |             EditorApplication.UnlockReloadAssemblies(); | |||
|  |             EditorUtility.ClearProgressBar(); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected static void DisplayProgressBar(string path, float progress) | |||
|  |         { | |||
|  |             EditorUtility.DisplayProgressBar(Path.GetFileName(path), | |||
|  |                 Mathf.FloorToInt(progress * 100) + "% - " + Path.GetFileName(path), progress); | |||
|  |         } | |||
|  |     } | |||
|  | } |