Showing with 14 additions and 4 deletions.
  1. +1 −1 ConfigurationManager/ConfigurationManager.cs
  2. +13 −3 ConfigurationManager/Utilities/Utilities.cs
2 changes: 1 addition & 1 deletion ConfigurationManager/ConfigurationManager.cs
Expand Up @@ -31,7 +31,7 @@ public class ConfigurationManager : BaseUnityPlugin
/// <summary>
/// Version constant
/// </summary>
public const string Version = "18.0";
public const string Version = "18.0.1";

internal static new ManualLogSource Logger;
private static SettingFieldDrawer _fieldDrawer;
Expand Down
16 changes: 13 additions & 3 deletions ConfigurationManager/Utilities/Utilities.cs
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