mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 14:29:25 +00:00
Move many mods to Deprecated folder, fix spelling
This commit is contained in:
parent
5e822cec8d
commit
0042590aa6
539 changed files with 7475 additions and 3120 deletions
2
.Deprecated/FuckMetrics/FuckMetrics.csproj
Normal file
2
.Deprecated/FuckMetrics/FuckMetrics.csproj
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk"/>
|
64
.Deprecated/FuckMetrics/HarmonyPatches.cs
Normal file
64
.Deprecated/FuckMetrics/HarmonyPatches.cs
Normal file
|
@ -0,0 +1,64 @@
|
|||
using ABI_RC.Core.InteractionSystem;
|
||||
using ABI_RC.Core.IO;
|
||||
using cohtml;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace NAK.FuckMetrics.HarmonyPatches;
|
||||
|
||||
public static class CVR_MenuManagerPatches
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(CVR_MenuManager), "ToggleQuickMenu", new Type[] { typeof(bool) })]
|
||||
private static void Postfix_CVR_MenuManager_ToggleQuickMenu(bool show)
|
||||
{
|
||||
FuckMetrics.ApplyMetricsSettings(show);
|
||||
FuckMetrics.ApplyCoreUpdatesSettings(show);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ViewManagerPatches
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ViewManager), "UiStateToggle", new Type[] { typeof(bool) })]
|
||||
private static void Postfix_ViewManager_UiStateToggle(bool show)
|
||||
{
|
||||
FuckMetrics.ApplyMetricsSettings(show);
|
||||
FuckMetrics.ApplyCoreUpdatesSettings(show);
|
||||
}
|
||||
}
|
||||
|
||||
public static class CohtmlViewPatches
|
||||
{
|
||||
private static CohtmlView _quickMenuView;
|
||||
private static CohtmlView _gameMenuView;
|
||||
private static Traverse _quickMenuOpenTraverse;
|
||||
private static Traverse _gameMenuOpenTraverse;
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(CVR_MenuManager), "Start")]
|
||||
private static void Postfix_CVRMenuManager_Start(ref CVR_MenuManager __instance, ref CohtmlView ___quickMenu)
|
||||
{
|
||||
_quickMenuView = ___quickMenu;
|
||||
_quickMenuOpenTraverse = Traverse.Create(__instance).Field("_quickMenuOpen");
|
||||
SchedulerSystem.AddJob(() => FuckMetrics.CohtmlAdvanceView(_quickMenuView, _quickMenuOpenTraverse), 15f, 6f, -1);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ViewManager), "Start")]
|
||||
private static void Postfix_ViewManager_Start(ref ViewManager __instance, ref CohtmlView ___gameMenuView)
|
||||
{
|
||||
_gameMenuView = ___gameMenuView;
|
||||
_gameMenuOpenTraverse = Traverse.Create(__instance).Field("_gameMenuOpen");
|
||||
SchedulerSystem.AddJob(() => FuckMetrics.CohtmlAdvanceView(_gameMenuView, _gameMenuOpenTraverse), 12f, 6f, -1);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ViewManager), "OnMicrophoneStatusSwitched")]
|
||||
private static void Postfix_ViewManager_OnMicrophoneStatusSwitched()
|
||||
{
|
||||
if (_quickMenuOpenTraverse.GetValue<bool>())
|
||||
{
|
||||
CVR_MenuManager.Instance.SendCoreUpdate();
|
||||
}
|
||||
}
|
||||
}
|
186
.Deprecated/FuckMetrics/Main.cs
Normal file
186
.Deprecated/FuckMetrics/Main.cs
Normal file
|
@ -0,0 +1,186 @@
|
|||
using ABI_RC.Core.InteractionSystem;
|
||||
using ABI_RC.Core.IO;
|
||||
using ABI_RC.Core.Player;
|
||||
using cohtml;
|
||||
using HarmonyLib;
|
||||
using MelonLoader;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NAK.FuckMetrics;
|
||||
|
||||
public class FuckMetrics : MelonMod
|
||||
{
|
||||
internal static MelonLogger.Instance Logger;
|
||||
|
||||
public static readonly MelonPreferences_Category CategoryFuckMetrics =
|
||||
MelonPreferences.CreateCategory(nameof(FuckMetrics));
|
||||
|
||||
public static readonly MelonPreferences_Entry<bool> EntryDisableCohtmlViewOnIdle =
|
||||
CategoryFuckMetrics.CreateEntry("Disable CohtmlView On Idle", false, description: "Disables CohtmlView on the menus when idle. Takes up to 6 seconds after menu exit. This can give a huge performance boost.");
|
||||
|
||||
public static readonly MelonPreferences_Entry<FuckMetrics.SettingState> EntryDisableMetrics =
|
||||
CategoryFuckMetrics.CreateEntry("Menu Metrics", FuckMetrics.SettingState.MenuOnly, description: "Disables menu metrics (FPS & Ping). Updates once on menu open if disabled.");
|
||||
|
||||
public static readonly MelonPreferences_Entry<FuckMetrics.SettingState> EntryDisableCoreUpdates =
|
||||
CategoryFuckMetrics.CreateEntry("Menu Core Updates", FuckMetrics.SettingState.MenuOnly, description: "Disables menu core updates (Gamerule Icons & Debug Status). Updates once on menu open if disabled.");
|
||||
|
||||
public static readonly MelonPreferences_Entry<float> EntryMetricsUpdateRate =
|
||||
CategoryFuckMetrics.CreateEntry("Metrics Update Rate", 1f, description: "Sets the update rate for the menu metrics. Default is 0.5f. Recommended to be 1f or higher.");
|
||||
|
||||
public static readonly MelonPreferences_Entry<float> EntryCoreUpdateRate =
|
||||
CategoryFuckMetrics.CreateEntry("Core Update Rate", 2f, description: "Sets the update rate for the menu core updates. Default is 0.1f. Recommended to be 2f or higher.");
|
||||
|
||||
public override void OnInitializeMelon()
|
||||
{
|
||||
Logger = LoggerInstance;
|
||||
|
||||
EntryDisableMetrics.OnEntryValueChangedUntyped.Subscribe(OnDisableMetrics);
|
||||
EntryDisableCoreUpdates.OnEntryValueChangedUntyped.Subscribe(OnDisableCoreUpdates);
|
||||
EntryMetricsUpdateRate.OnEntryValueChangedUntyped.Subscribe(OnChangeMetricsUpdateRate);
|
||||
EntryCoreUpdateRate.OnEntryValueChangedUntyped.Subscribe(OnChangeCoreUpdateRate);
|
||||
|
||||
ApplyPatches(typeof(HarmonyPatches.CVR_MenuManagerPatches));
|
||||
ApplyPatches(typeof(HarmonyPatches.ViewManagerPatches));
|
||||
ApplyPatches(typeof(HarmonyPatches.CohtmlViewPatches));
|
||||
MelonCoroutines.Start(WaitForLocalPlayer());
|
||||
}
|
||||
|
||||
private IEnumerator WaitForLocalPlayer()
|
||||
{
|
||||
while (PlayerSetup.Instance == null)
|
||||
yield return null;
|
||||
InitializeSettings();
|
||||
}
|
||||
|
||||
private void InitializeSettings()
|
||||
{
|
||||
FuckMetrics.ToggleMetrics(false);
|
||||
FuckMetrics.ToggleCoreUpdates(false);
|
||||
FuckMetrics.ToggleMetrics(EntryDisableMetrics.Value == FuckMetrics.SettingState.Always);
|
||||
FuckMetrics.ToggleCoreUpdates(EntryDisableCoreUpdates.Value == FuckMetrics.SettingState.Always);
|
||||
}
|
||||
|
||||
private void OnDisableMetrics(object arg1, object arg2)
|
||||
{
|
||||
FuckMetrics.ToggleMetrics(EntryDisableMetrics.Value != FuckMetrics.SettingState.Disabled);
|
||||
}
|
||||
|
||||
private void OnDisableCoreUpdates(object arg1, object arg2)
|
||||
{
|
||||
FuckMetrics.ToggleCoreUpdates(EntryDisableCoreUpdates.Value != FuckMetrics.SettingState.Disabled);
|
||||
}
|
||||
|
||||
private void OnChangeMetricsUpdateRate(object arg1, object arg2)
|
||||
{
|
||||
if (EntryDisableMetrics.Value != FuckMetrics.SettingState.Disabled)
|
||||
{
|
||||
FuckMetrics.ToggleMetrics(false);
|
||||
FuckMetrics.ToggleMetrics(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnChangeCoreUpdateRate(object arg1, object arg2)
|
||||
{
|
||||
if (EntryDisableCoreUpdates.Value != FuckMetrics.SettingState.Disabled)
|
||||
{
|
||||
FuckMetrics.ToggleCoreUpdates(false);
|
||||
FuckMetrics.ToggleCoreUpdates(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyPatches(Type type)
|
||||
{
|
||||
try
|
||||
{
|
||||
HarmonyInstance.PatchAll(type);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Msg($"Failed while patching {type.Name}!");
|
||||
Logger.Error(e);
|
||||
}
|
||||
}
|
||||
|
||||
public enum SettingState
|
||||
{
|
||||
Always,
|
||||
MenuOnly,
|
||||
Disabled
|
||||
}
|
||||
|
||||
public static void ToggleMetrics(bool enable)
|
||||
{
|
||||
var job = SchedulerSystem.Instance.activeJobs.FirstOrDefault(pair => pair.Job.Method.Name == "UpdateMetrics").Job;
|
||||
if (enable && job == null)
|
||||
{
|
||||
SchedulerSystem.AddJob(new SchedulerSystem.Job(ViewManager.Instance.UpdateMetrics), 0f, FuckMetrics.EntryMetricsUpdateRate.Value, -1);
|
||||
}
|
||||
else if (!enable && job != null)
|
||||
{
|
||||
SchedulerSystem.RemoveJob(job);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ToggleCoreUpdates(bool enable)
|
||||
{
|
||||
var job = SchedulerSystem.Instance.activeJobs.FirstOrDefault(pair => pair.Job.Method.Name == "SendCoreUpdate").Job;
|
||||
if (enable && job == null)
|
||||
{
|
||||
SchedulerSystem.AddJob(new SchedulerSystem.Job(CVR_MenuManager.Instance.SendCoreUpdate), 0f, FuckMetrics.EntryCoreUpdateRate.Value, -1);
|
||||
}
|
||||
else if (!enable && job != null)
|
||||
{
|
||||
SchedulerSystem.RemoveJob(job);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ApplyMetricsSettings(bool show)
|
||||
{
|
||||
var disableMetrics = FuckMetrics.EntryDisableMetrics.Value;
|
||||
if (disableMetrics == FuckMetrics.SettingState.Always) return;
|
||||
|
||||
if (disableMetrics == FuckMetrics.SettingState.MenuOnly)
|
||||
{
|
||||
FuckMetrics.ToggleMetrics(show);
|
||||
}
|
||||
else if (disableMetrics == FuckMetrics.SettingState.Disabled && show)
|
||||
{
|
||||
ViewManager.Instance.UpdateMetrics();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ApplyCoreUpdatesSettings(bool show)
|
||||
{
|
||||
var disableCoreUpdates = FuckMetrics.EntryDisableCoreUpdates.Value;
|
||||
if (disableCoreUpdates == FuckMetrics.SettingState.Always) return;
|
||||
|
||||
if (disableCoreUpdates == FuckMetrics.SettingState.MenuOnly)
|
||||
{
|
||||
FuckMetrics.ToggleCoreUpdates(show);
|
||||
}
|
||||
else if (disableCoreUpdates == FuckMetrics.SettingState.Disabled && show)
|
||||
{
|
||||
CVR_MenuManager.Instance.SendCoreUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
public static void CohtmlAdvanceView(CohtmlView cohtmlView, Traverse menuOpenTraverse)
|
||||
{
|
||||
if (!FuckMetrics.EntryDisableCohtmlViewOnIdle.Value) return;
|
||||
|
||||
if (cohtmlView != null && !menuOpenTraverse.GetValue<bool>())
|
||||
{
|
||||
cohtmlView.enabled = false;
|
||||
|
||||
try
|
||||
{
|
||||
cohtmlView.View.Advance(cohtmlView.CohtmlUISystem?.Id ?? 0, (double)Time.unscaledTime * 1000.0);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FuckMetrics.Logger.Error($"An exception was thrown while calling CohtmlView.Advance(). Error message: {e.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
0
.Deprecated/FuckMetrics/ManagedLibs/.keep
Normal file
0
.Deprecated/FuckMetrics/ManagedLibs/.keep
Normal file
30
.Deprecated/FuckMetrics/Properties/AssemblyInfo.cs
Normal file
30
.Deprecated/FuckMetrics/Properties/AssemblyInfo.cs
Normal file
|
@ -0,0 +1,30 @@
|
|||
using MelonLoader;
|
||||
using NAK.FuckMetrics.Properties;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyVersion(AssemblyInfoParams.Version)]
|
||||
[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)]
|
||||
[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)]
|
||||
[assembly: AssemblyTitle(nameof(NAK.FuckMetrics))]
|
||||
[assembly: AssemblyCompany(AssemblyInfoParams.Author)]
|
||||
[assembly: AssemblyProduct(nameof(NAK.FuckMetrics))]
|
||||
|
||||
[assembly: MelonInfo(
|
||||
typeof(NAK.FuckMetrics.FuckMetrics),
|
||||
nameof(NAK.FuckMetrics),
|
||||
AssemblyInfoParams.Version,
|
||||
AssemblyInfoParams.Author,
|
||||
downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/FuckMetrics"
|
||||
)]
|
||||
|
||||
[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")]
|
||||
[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
|
||||
[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
|
||||
[assembly: HarmonyDontPatchAll]
|
||||
|
||||
namespace NAK.FuckMetrics.Properties;
|
||||
internal static class AssemblyInfoParams
|
||||
{
|
||||
public const string Version = "1.0.4";
|
||||
public const string Author = "NotAKidoS";
|
||||
}
|
24
.Deprecated/FuckMetrics/format.json
Normal file
24
.Deprecated/FuckMetrics/format.json
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"_id": 135,
|
||||
"name": "FuckMetrics",
|
||||
"modversion": "1.0.4",
|
||||
"gameversion": "2022r170p1",
|
||||
"loaderversion": "0.6.1",
|
||||
"modtype": "Mod",
|
||||
"author": "NotAKidoS",
|
||||
"description": "This mod limits UpdateMetrics & SendCoreUpdate while the menus are closed. This helps to alleviate hitching and performance issues, particularly with FPS drops while unmuted in online instances and VRIK tapping in place.\n\nPlease view the Github README for more info.",
|
||||
"searchtags": [
|
||||
"cohtml",
|
||||
"menus",
|
||||
"quick",
|
||||
"fps",
|
||||
"performance"
|
||||
],
|
||||
"requirements": [
|
||||
"None"
|
||||
],
|
||||
"downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r3/FuckMetrics.dll",
|
||||
"sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/FuckMetrics/",
|
||||
"changelog": "- Initial Release.\n- Renamed to FuckMetrics.\n- Add Update Rate settings.\n- Add back CohtmlView disabling as option.\n- Update CoreUpdate on mic toggle if QM is open.\n- Fix Cohtml disabling not using menu instance.",
|
||||
"embedcolor": "#8ed6fb"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue