129 lines
4.5 KiB
C#
129 lines
4.5 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
using System.IO;
|
|
|
|
namespace AssetBundleBrowser
|
|
{
|
|
class SingleBundleInspector
|
|
{
|
|
internal static string currentPath { get; set; }
|
|
|
|
|
|
internal SingleBundleInspector() { }
|
|
|
|
private Editor m_Editor = null;
|
|
|
|
private Rect m_Position;
|
|
|
|
[SerializeField]
|
|
private Vector2 m_ScrollPosition;
|
|
|
|
private AssetBundleInspectTab m_assetBundleInspectTab = null;
|
|
private AssetBundleInspectTab.InspectTabData m_inspectTabData = null;
|
|
|
|
internal void SetBundle(AssetBundle bundle, string path = "", AssetBundleInspectTab.InspectTabData inspectTabData = null, AssetBundleInspectTab assetBundleInspectTab = null)
|
|
{
|
|
//static var...
|
|
currentPath = path;
|
|
m_inspectTabData = inspectTabData;
|
|
m_assetBundleInspectTab = assetBundleInspectTab;
|
|
|
|
//members
|
|
m_Editor = null;
|
|
if(bundle != null)
|
|
{
|
|
m_Editor = Editor.CreateEditor(bundle);
|
|
}
|
|
}
|
|
|
|
internal void OnGUI(Rect pos)
|
|
{
|
|
m_Position = pos;
|
|
|
|
DrawBundleData();
|
|
}
|
|
|
|
private void DrawBundleData()
|
|
{
|
|
if (m_Editor != null)
|
|
{
|
|
GUILayout.BeginArea(m_Position);
|
|
m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition);
|
|
m_Editor.OnInspectorGUI();
|
|
EditorGUILayout.EndScrollView();
|
|
GUILayout.EndArea();
|
|
}
|
|
else if(!string.IsNullOrEmpty(currentPath))
|
|
{
|
|
var style = new GUIStyle(GUI.skin.label);
|
|
style.alignment = TextAnchor.MiddleCenter;
|
|
style.wordWrap = true;
|
|
GUI.Label(m_Position, new GUIContent("Invalid bundle selected"), style);
|
|
|
|
if (m_inspectTabData != null && GUI.Button(new Rect(new Vector2((m_Position.position.x + m_Position.width / 2f) - 37.5f, (m_Position.position.y + m_Position.height / 2f) + 15), new Vector2(75, 30)), "Ignore file"))
|
|
{
|
|
var possibleFolderData = m_inspectTabData.FolderDataContainingFilePath(currentPath);
|
|
if (possibleFolderData != null)
|
|
{
|
|
if (!possibleFolderData.ignoredFiles.Contains(currentPath))
|
|
possibleFolderData.ignoredFiles.Add(currentPath);
|
|
|
|
if(m_assetBundleInspectTab != null)
|
|
m_assetBundleInspectTab.RefreshBundles();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
[CustomEditor(typeof(AssetBundle))]
|
|
internal class AssetBundleEditor : Editor
|
|
{
|
|
internal bool pathFoldout = false;
|
|
internal bool advancedFoldout = false;
|
|
public override void OnInspectorGUI()
|
|
{
|
|
AssetBundle bundle = target as AssetBundle;
|
|
|
|
using (new EditorGUI.DisabledScope(true))
|
|
{
|
|
var leftStyle = new GUIStyle(GUI.skin.GetStyle("Label"));
|
|
leftStyle.alignment = TextAnchor.UpperLeft;
|
|
GUILayout.Label(new GUIContent("Name: " + bundle.name), leftStyle);
|
|
|
|
long fileSize = -1;
|
|
if(!System.String.IsNullOrEmpty(SingleBundleInspector.currentPath) && File.Exists(SingleBundleInspector.currentPath) )
|
|
{
|
|
System.IO.FileInfo fileInfo = new System.IO.FileInfo(SingleBundleInspector.currentPath);
|
|
fileSize = fileInfo.Length;
|
|
}
|
|
|
|
if (fileSize < 0)
|
|
GUILayout.Label(new GUIContent("Size: unknown"), leftStyle);
|
|
else
|
|
GUILayout.Label(new GUIContent("Size: " + EditorUtility.FormatBytes(fileSize)), leftStyle);
|
|
|
|
var assetNames = bundle.GetAllAssetNames();
|
|
pathFoldout = EditorGUILayout.Foldout(pathFoldout, "Source Asset Paths");
|
|
if (pathFoldout)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
foreach (var asset in assetNames)
|
|
EditorGUILayout.LabelField(asset);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
|
|
|
|
advancedFoldout = EditorGUILayout.Foldout(advancedFoldout, "Advanced Data");
|
|
|
|
}
|
|
|
|
if (advancedFoldout)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
base.OnInspectorGUI();
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
}
|
|
}
|
|
} |