using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; using RecRoom.Systems; using System; namespace Radium.InputManagerPatch { /// /// Patch for InputManager in Radium's 2021 build to set the input type to whatever you desire! /// [BepInPlugin("com.radium.inputmanager", "Radium.InputManagerPatch", "1.0.3")] public class Plugin : BasePlugin { internal static new ManualLogSource Log; internal static readonly Harmony _harmony = new(MyPluginInfo.PLUGIN_GUID); /// /// The input type we wish to set. If no value is provided, it defaults to SteamVR_Vive. /// internal static ConfigEntry VRInputDeviceType; /// /// If this plugin should be enabled or not or if we should break before anything gets patched /// internal static ConfigEntry Enabled; public override void Load() { Log = base.Log; Enabled = Config.Bind( section: "General", key: "Enabled", defaultValue: true, description: "Determines if the patch is enabled."); if (!Enabled.Value) return; VRInputDeviceType = Config.Bind( section: "Input", key: "VRInputDeviceType", defaultValue: InputManager.LNEHPBFDEGG.SteamVR_Vive, description: "Fixed input mode. Set it to any of the acceptable values below."); Log.LogInfo($"{MyPluginInfo.PLUGIN_GUID} loaded! (VRInputDeviceType: {VRInputDeviceType.Value})"); _harmony.PatchAll(); } /// /// Sets GetVRInputMode (NACIMCNEHMP) of InputManager to whatever we desire! /// [HarmonyPatch(typeof(InputManager), "NACIMCNEHMP")] public class InputManagerPatch() { private static bool Prefix(ref InputManager.LNEHPBFDEGG __result) { __result = Plugin.VRInputDeviceType.Value; #if DEBUG Log.LogInfo($"We are set! ({VRInputDeviceType.Value})"); #endif return false; } } } }