Skip to content

Commit

Permalink
Fix not detecting plugins if HideManagerGameObject = true
Browse files Browse the repository at this point in the history
  • Loading branch information
ManlyMarco committed Jul 4, 2023
1 parent 04ec8f6 commit 8fc53a4
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions ConfigurationManager/Utilities/Utilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using BepInEx.Logging;
using UnityEngine;
using Object = UnityEngine.Object;
using BepInEx.Bootstrap;

namespace ConfigurationManager.Utilities
{
Expand All @@ -34,9 +35,18 @@ public static string ToProperCase(this string str)
return result;
}

// Search for instances of BaseUnityPlugin to also find dynamically loaded plugins. Doing this makes checking Chainloader.PluginInfos redundant.
// Have to use FindObjectsOfType(Type) instead of FindObjectsOfType<T> because the latter is not available in some older unity versions.
public static BaseUnityPlugin[] FindPlugins() => Array.ConvertAll(Object.FindObjectsOfType(typeof(BaseUnityPlugin)), input => (BaseUnityPlugin)input);
/// <summary>
/// Search for all instances of BaseUnityPlugin loaded by chainloader or other means.
/// </summary>
public static BaseUnityPlugin[] FindPlugins()
{
// Search for instances of BaseUnityPlugin to also find dynamically loaded plugins.
// Have to use FindObjectsOfType(Type) instead of FindObjectsOfType<T> because the latter is not available in some older unity versions.
// Still look inside Chainloader.PluginInfos in case the BepInEx_Manager GameObject uses HideFlags.HideAndDontSave, which hides it from Object.Find methods.
return Chainloader.PluginInfos.Values.Select(x => x.Instance)
.Union(Object.FindObjectsOfType(typeof(BaseUnityPlugin)).Cast<BaseUnityPlugin>())
.ToArray();
}

public static string AppendZero(this string s)
{
Expand Down

0 comments on commit 8fc53a4

Please sign in to comment.
  翻译: