From 6b505bf18dd68b7741d236323f8924ce5a0bc6a8 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Thu, 14 May 2020 20:42:13 -0400 Subject: [PATCH] Add single asset bundle inspection --- Dissonance/Dissonance.csproj | 2 +- Dissonance/DissonancePatch.cs | 4 +- Dissonance/DissonancePlugin.cs | 6 +-- Dissonance/Inspector/AssetInspector.cs | 72 +++++++++++++++++++++----- Dissonance/Inspector/Instance.cs | 2 +- 5 files changed, 66 insertions(+), 20 deletions(-) diff --git a/Dissonance/Dissonance.csproj b/Dissonance/Dissonance.csproj index 2a702f7..e5ed6a8 100644 --- a/Dissonance/Dissonance.csproj +++ b/Dissonance/Dissonance.csproj @@ -5,7 +5,7 @@ - + diff --git a/Dissonance/DissonancePatch.cs b/Dissonance/DissonancePatch.cs index 22ec5f9..c9b3e69 100644 --- a/Dissonance/DissonancePatch.cs +++ b/Dissonance/DissonancePatch.cs @@ -1,6 +1,6 @@ using System; using System.Reflection; -using Harmony; +using HarmonyLib; using UnityEngine; namespace Dissonance @@ -14,7 +14,7 @@ namespace Dissonance } [HarmonyTargetMethod] - static MethodBase DissonanceMethod(HarmonyInstance instance) + static MethodBase DissonanceMethod(Harmony instance) { throw new NotImplementedException(); } diff --git a/Dissonance/DissonancePlugin.cs b/Dissonance/DissonancePlugin.cs index a18dd3e..a02201e 100644 --- a/Dissonance/DissonancePlugin.cs +++ b/Dissonance/DissonancePlugin.cs @@ -1,14 +1,14 @@ using System; using IllusionPlugin; using UnityEngine; -using Harmony; +using HarmonyLib; using System.Reflection; namespace Dissonance { public class DissonancePlugin : IllusionPlugin.IEnhancedPlugin { - public static HarmonyInstance harmony { get; protected set; } + public static Harmony harmony { get; protected set; } public string[] Filter { get; } = new string[] { "Gamecraft" }; @@ -28,7 +28,7 @@ namespace Dissonance { if (harmony == null) { - harmony = HarmonyInstance.Create(HarmonyID); + harmony = new Harmony(HarmonyID); harmony.PatchAll(Assembly.GetExecutingAssembly()); } Debug.Log(Name + " start & patch complete"); diff --git a/Dissonance/Inspector/AssetInspector.cs b/Dissonance/Inspector/AssetInspector.cs index 3655860..40060d9 100644 --- a/Dissonance/Inspector/AssetInspector.cs +++ b/Dissonance/Inspector/AssetInspector.cs @@ -34,11 +34,27 @@ namespace Dissonance.Inspector Debug.Log("AssetInspector Log dump\n[" + string.Join(",\n", filelines) + "]"); } + public static void Log(AssetBundle assetBundle) where T : UnityEngine.Object + { + Instance[] instances = Inspect(assetBundle); + string[] filelines = new string[instances.Length]; + for (int i = 0; i < instances.Length; i++) + { + filelines[i] = instances[i].ToString() + ","; + } + Debug.Log("AssetInspector Log dump\n[" + string.Join(",\n", filelines) + "]"); + } + public static void LogNames() where T : UnityEngine.Object { Debug.Log(string.Join("\n", InspectNames())); } + public static void LogNames(AssetBundle assetBundle) where T : UnityEngine.Object + { + Debug.Log(string.Join("\n", InspectNames(assetBundle))); + } + public static void LogAll() { Log(); @@ -60,14 +76,25 @@ namespace Dissonance.Inspector File.WriteAllLines(filename, filelines); } + public static void Dump(string filename, AssetBundle assetBundle) where T : UnityEngine.Object + { + Instance[] instances = Inspect(assetBundle); + string[] filelines = new string[instances.Length]; + for (int i = 0; i < instances.Length; i++) + { + filelines[i] = instances[i].ToString() + ","; + } + File.WriteAllLines(filename, filelines); + } + public static void DumpNames(string filename) where T : UnityEngine.Object { File.WriteAllLines(filename, InspectNames()); } - public static void DumpAll(string filename) + public static void DumpNames(string filename, AssetBundle assetBundle) where T : UnityEngine.Object { - Dump(filename); + File.WriteAllLines(filename, InspectNames(assetBundle)); } public static void DumpNamesAll(string filename) @@ -75,32 +102,51 @@ namespace Dissonance.Inspector DumpNames(filename); } + public static void DumpNamesAll(string filename, AssetBundle assetBundle) + { + DumpNames(filename, assetBundle); + } + public static Instance[] Inspect() where T : UnityEngine.Object { if (allBundles == null) Init(); List allInstances = new List(); foreach (var b in allBundles) { - UnityEngine.Object[] assets = b.LoadAllAssets(); - for (int i = 0; i < assets.Length; i++) - { - allInstances.Add(new Instance(assets[i])); - } + allInstances.AddRange(Inspect(b)); } return allInstances.ToArray(); } - public static string[] InspectNames() where T : UnityEngine.Object + public static Instance[] Inspect(AssetBundle assetBundle) where T : UnityEngine.Object + { + List allInstances = new List(); + UnityEngine.Object[] assets = assetBundle.LoadAllAssets(); + for (int i = 0; i < assets.Length; i++) + { + allInstances.Add(new Instance(assets[i])); + } + return allInstances.ToArray(); + } + + public static string[] InspectNames() where T : UnityEngine.Object { if (allBundles == null) Init(); List allNames = new List(); foreach (var b in allBundles) { - UnityEngine.Object[] assets = b.LoadAllAssets(); - for (int i = 0; i < assets.Length; i++) - { - allNames.Add(assets[i].name); - } + allNames.AddRange(InspectNames(b)); + } + return allNames.ToArray(); + } + + public static string[] InspectNames(AssetBundle assetBundle) where T : UnityEngine.Object + { + List allNames = new List(); + UnityEngine.Object[] assets = assetBundle.LoadAllAssets(); + for (int i = 0; i < assets.Length; i++) + { + allNames.Add(assets[i].name); } return allNames.ToArray(); } diff --git a/Dissonance/Inspector/Instance.cs b/Dissonance/Inspector/Instance.cs index 2208e75..c8d2923 100644 --- a/Dissonance/Inspector/Instance.cs +++ b/Dissonance/Inspector/Instance.cs @@ -116,7 +116,7 @@ namespace Dissonance.Inspector count++; } sb.Append("\n]\n"); - sb.Append("}"); + sb.Append("},"); return sb.ToString(); } }