Browse Source

Wrap ResourceRedirector Hooks in Try-Catch Blocks

Usagirei 7 years ago
parent
commit
5f9a7738bc
1 changed files with 59 additions and 19 deletions
  1. 59 19
      Plugins/ResourceRedirector/Hooks.cs

+ 59 - 19
Plugins/ResourceRedirector/Hooks.cs

@@ -47,46 +47,86 @@ namespace ResourceRedirector
 
         public static void LoadAssetPostHook(ref AssetBundleLoadAssetOperation __result, string assetBundleName, string assetName, Type type, string manifestAssetBundleName)
         {
-            //BepInLogger.Log($"{assetBundleName} : {assetName} : {type.FullName} : {manifestAssetBundleName ?? ""}");
+            try
+            {
+                //BepInLogger.Log($"{assetBundleName} : {assetName} : {type.FullName} : {manifestAssetBundleName ?? ""}");
 
-            __result = ResourceRedirector.HandleAsset(assetBundleName, assetName, type, manifestAssetBundleName, ref __result);
+                __result = ResourceRedirector.HandleAsset(assetBundleName, assetName, type, manifestAssetBundleName, ref __result);
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("---" + nameof(LoadAssetPostHook) + "---");
+                Console.WriteLine(ex.Message);
+                Console.WriteLine(ex.StackTrace);
+                Console.WriteLine("---");
+            }
         }
 
         public static void LoadAssetBundlePostHook(string assetBundleName, bool isAsync, string manifestAssetBundleName)
         {
-            //BepInLogger.Log($"{assetBundleName} : {manifestAssetBundleName} : {isAsync}");
+            try
+            {
+                //BepInLogger.Log($"{assetBundleName} : {manifestAssetBundleName} : {isAsync}");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("---" + nameof(LoadAssetBundlePostHook) + "---");
+                Console.WriteLine(ex.Message);
+                Console.WriteLine(ex.StackTrace);
+                Console.WriteLine("---");
+            }
         }
 
         public static void LoadAssetAsyncPostHook(ref AssetBundleLoadAssetOperation __result, string assetBundleName, string assetName, Type type, string manifestAssetBundleName)
         {
-            //BepInLogger.Log($"{assetBundleName} : {assetName} : {type.FullName} : {manifestAssetBundleName ?? ""}", true);
+            try
+            {
+                //BepInLogger.Log($"{assetBundleName} : {assetName} : {type.FullName} : {manifestAssetBundleName ?? ""}", true);
 
-            __result = ResourceRedirector.HandleAsset(assetBundleName, assetName, type, manifestAssetBundleName, ref __result);
+                __result = ResourceRedirector.HandleAsset(assetBundleName, assetName, type, manifestAssetBundleName, ref __result);
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("---" + nameof(LoadAssetAsyncPostHook) + "---");
+                Console.WriteLine(ex.Message);
+                Console.WriteLine(ex.StackTrace);
+                Console.WriteLine("---");
+            }
         }
 
         public static void LoadAllAssetPostHook(ref AssetBundleLoadAssetOperation __result, string assetBundleName, Type type, string manifestAssetBundleName = null)
         {
-            //BepInLogger.Log($"{assetBundleName} : {type.FullName} : {manifestAssetBundleName ?? ""}");
-
-            if (assetBundleName == "sound/data/systemse/brandcall/00.unity3d" ||
-                assetBundleName == "sound/data/systemse/titlecall/00.unity3d")
+            try
             {
-                string dir = $"{BepInEx.Common.Utility.PluginsDirectory}\\introclips";
+                //BepInLogger.Log($"{assetBundleName} : {type.FullName} : {manifestAssetBundleName ?? ""}");
+
+                if (assetBundleName == "sound/data/systemse/brandcall/00.unity3d" ||
+                    assetBundleName == "sound/data/systemse/titlecall/00.unity3d")
+                {
+                    string dir = $"{BepInEx.Common.Utility.PluginsDirectory}\\introclips";
 
-                if (!Directory.Exists(dir))
-                    Directory.CreateDirectory(dir);
+                    if (!Directory.Exists(dir))
+                        Directory.CreateDirectory(dir);
 
-                var files = Directory.GetFiles(dir, "*.wav");
+                    var files = Directory.GetFiles(dir, "*.wav");
 
-                if (files.Length == 0)
-                    return;
+                    if (files.Length == 0)
+                        return;
 
-                List<UnityEngine.Object> loadedClips = new List<UnityEngine.Object>();
+                    List<UnityEngine.Object> loadedClips = new List<UnityEngine.Object>();
 
-                foreach (string path in files)
-                    loadedClips.Add(AssetLoader.LoadAudioClip(path, AudioType.WAV));
+                    foreach (string path in files)
+                        loadedClips.Add(AssetLoader.LoadAudioClip(path, AudioType.WAV));
 
-                __result = new AssetBundleLoadAssetOperationSimulation(loadedClips.ToArray());
+                    __result = new AssetBundleLoadAssetOperationSimulation(loadedClips.ToArray());
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("---" + nameof(LoadAllAssetPostHook) + "---");
+                Console.WriteLine(ex.Message);
+                Console.WriteLine(ex.StackTrace);
+                Console.WriteLine("---");
             }
         }
     }