// ReSharper disable once InconsistentNaming public List <CustSaber> GetModsFromIPA() { List <CustSaber> modsList = new List <CustSaber>(); foreach (string sab in Plugin.RetrieveCustomSabers()) { var tempbundle = AssetBundle.LoadFromFile(sab); GameObject sabroot = tempbundle.LoadAsset <GameObject>("_customsaber"); SaberDescriptor tempdesciptor = sabroot.GetComponent <SaberDescriptor>(); CustSaber tempsab = new CustSaber(); if (tempdesciptor == null) { tempsab.Name = sab.Split('/').Last().Split('.').First(); tempsab.Author = "THIS SHOULD NEVER HAPPEN"; tempsab.Path = sab; } else { tempsab.Name = tempdesciptor.SaberName; tempsab.Author = tempdesciptor.AuthorName; tempsab.Path = sab; } modsList.Add(tempsab); tempbundle.Unload(true); } Console.WriteLine("Added all sabers"); return(modsList.ToList()); }
public CustomSaberData(string fileName) { FileName = fileName; if (fileName != "DefaultSabers") { try { AssetBundle = AssetBundle.LoadFromFile(Path.Combine(Plugin.PluginAssetPath, fileName)); Sabers = AssetBundle.LoadAsset <GameObject>("_CustomSaber"); Descriptor = Sabers.GetComponent <SaberDescriptor>(); Descriptor.CoverImage = Descriptor.CoverImage ?? Utils.GetDefaultCoverImage(); } catch { Logger.log.Warn($"Something went wrong getting the AssetBundle for '{fileName}'!"); Descriptor = new SaberDescriptor { SaberName = "Invalid Saber (Delete it)", AuthorName = fileName, CoverImage = Utils.GetErrorCoverImage() }; ErrorMessage = $"File: '{fileName}'" + "\n\nThis file failed to load." + "\n\nThis may have been caused by having duplicated files," + " another saber with the same name already exists or that the custom saber is simply just broken." + "\n\nThe best thing is probably just to delete it!"; FileName = "DefaultSabers"; } } else { Descriptor = new SaberDescriptor { SaberName = "Default", AuthorName = "Beat Saber", Description = "This is the default sabers. (No preview available)", CoverImage = Utils.GetRandomCoverImage(), }; } }
public CustomSaberData(string fileName) { FileName = fileName; if (fileName != "DefaultSabers") { try { AssetBundle = AssetBundle.LoadFromFile(Path.Combine(Plugin.PluginAssetPath, fileName)); Sabers = AssetBundle.LoadAsset <GameObject>("_CustomSaber"); SaberDescriptor = Sabers.GetComponent <SaberDescriptor>(); if (SaberDescriptor.CoverImage == null) { SaberDescriptor.CoverImage = Utils.GetDefaultCoverImage(); } } catch { Logger.log.Warn($"Something went wrong getting the AssetBundle for '{fileName}'!"); SaberDescriptor = new SaberDescriptor { SaberName = "Invalid Saber (Delete it)", AuthorName = FileName, CoverImage = Utils.GetErrorCoverImage() }; FileName = "DefaultSabers"; } } else { SaberDescriptor = new SaberDescriptor { SaberName = "Default", AuthorName = "Beat Saber", CoverImage = Utils.GetRandomCoverImage(), }; } }
public CustomSaberData(Saber leftSaber, Saber rightSaber) { FileName = "DefaultSabers"; SaberDescriptor = new SaberDescriptor { SaberName = "Default", AuthorName = "Beat Games", CoverImage = Utils.GetRandomCoverImage(), }; GameObject saberParent = new GameObject(); if (saberParent) { leftSaber.transform.SetParent(saberParent.transform); rightSaber.transform.SetParent(saberParent.transform); } Sabers = saberParent; }
IEnumerator LoadSabersRoutine() { string[] allBundlePaths = Directory.GetFiles(SettingsManager.Instance.Settings["Other"]["RootFolderPath"].StringValue + "CustomSabers", "*.saber"); for (int i = 0; i < allBundlePaths.Length; i++) { string bundlePath = allBundlePaths[i]; if (IsPathAlreadyLoaded(bundlePath)) { continue; } var bundleRequest = AssetBundle.LoadFromFileAsync(bundlePath); yield return(bundleRequest); var bundle = bundleRequest.assetBundle; if (bundle == null) { continue; } var prefabRequest = bundle.LoadAssetAsync <GameObject>("_customsaber"); yield return(prefabRequest); GameObject prefab = (GameObject)prefabRequest.asset; SaberDescriptor customSaber = prefab.GetComponent <SaberDescriptor>(); var saberInfo = new CustomSaberInfo { Path = bundlePath, SaberDescriptor = customSaber, }; SetupSaber(prefab, saberInfo); bundle.Unload(false); yield return(null); } }
// ReSharper disable once InconsistentNaming public void LoadSabers(bool FirstRun) { Console.WriteLine("Loading sabers!"); if (FirstRun) { foreach (string sab in Plugin.RetrieveCustomSabers()) { CustomSaber tempsab = new CustomSaber(); if (sab == "DefaultSabers") { tempsab.Name = "Default Sabers"; tempsab.Author = "Beat Games"; tempsab.Path = "DefaultSabers"; tempsab.AssetBundle = null; tempsab.GameObject = null; } else { try { AssetBundle tempbundle = AssetBundle.LoadFromFile(sab); GameObject sabroot = tempbundle.LoadAsset <GameObject>("_customsaber"); SaberDescriptor tempdesciptor = sabroot.GetComponent <SaberDescriptor>(); if (tempdesciptor == null) { tempsab.Name = sab.Split('/').Last().Split('.').First(); tempsab.Author = "THIS SHOULD NEVER HAPPEN"; tempsab.Path = sab; tempsab.AssetBundle = null; tempsab.GameObject = null; } else { tempsab.Name = tempdesciptor.SaberName; tempsab.Author = tempdesciptor.AuthorName; tempsab.Path = sab; tempsab.AssetBundle = tempbundle; tempsab.GameObject = sabroot; } } catch (Exception e) { Console.WriteLine(e); tempsab.Name = "This saber is broken, delete it."; tempsab.Author = sab.Split('/').Last();//.Split('.').First(); tempsab.Path = sab; tempsab.AssetBundle = null; tempsab.GameObject = null; } } _sabers.Add(tempsab); } } else { foreach (CustomSaber tempsab in _sabers) { if (tempsab.Path != "DefaultSabers") { var tempbundle = AssetBundle.LoadFromFile(tempsab.Path); GameObject sabroot = tempbundle.LoadAsset <GameObject>("_customsaber"); SaberDescriptor tempdesciptor = sabroot.GetComponent <SaberDescriptor>(); if (tempdesciptor == null) { tempsab.AssetBundle = null; tempsab.GameObject = null; } else { tempsab.AssetBundle = tempbundle; tempsab.GameObject = sabroot; } } } } Console.WriteLine("Added all sabers"); }