mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-01 05:49:23 +00:00
90 lines
No EOL
3.5 KiB
C#
90 lines
No EOL
3.5 KiB
C#
using BTKUILib;
|
|
using BTKUILib.UIObjects;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace NAK.AlternateIKSystem.Integrations;
|
|
|
|
public static class BTKUIAddon
|
|
{
|
|
#region Initialization
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
public static void Initialize()
|
|
{
|
|
// Add mod to the Misc Menu
|
|
Page miscPage = QuickMenuAPI.MiscTabPage;
|
|
Category miscCategory = miscPage.AddCategory(ModSettings.SettingsCategory);
|
|
|
|
AddMelonToggle(ref miscCategory, ModSettings.EntryEnabled);
|
|
|
|
SetupGeneralIKConfigurationPage(ref miscCategory);
|
|
SetupDesktopIKConfigurationPage(ref miscCategory);
|
|
SetupHalfBodyIKConfigurationPage(ref miscCategory);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Pages Setup
|
|
|
|
private static void SetupGeneralIKConfigurationPage(ref Category parentCategory)
|
|
{
|
|
Page generalIKPage = parentCategory.AddPage("General IK Settings", "", "Configure the settings for general IK.", ModSettings.SettingsCategory);
|
|
generalIKPage.MenuTitle = "General IK Settings";
|
|
Category generalIKCategory = generalIKPage.AddCategory(generalIKPage.MenuTitle);
|
|
|
|
// General Settings
|
|
AddMelonToggle(ref generalIKCategory, ModSettings.EntryPlantFeet);
|
|
|
|
// Calibration Settings
|
|
AddMelonToggle(ref generalIKCategory, ModSettings.EntryUseToesForVRIK);
|
|
|
|
// Fine-tuning Settings
|
|
AddMelonToggle(ref generalIKCategory, ModSettings.EntryResetFootstepsOnIdle);
|
|
|
|
// Fake root heading limit
|
|
AddMelonSlider(ref generalIKPage, ModSettings.EntryBodyHeadingLimit, 0, 90f, 0);
|
|
|
|
// Lerp Speed
|
|
AddMelonSlider(ref generalIKPage, ModSettings.EntryIKLerpSpeed, 0, 20f, 0);
|
|
}
|
|
|
|
private static void SetupDesktopIKConfigurationPage(ref Category parentCategory)
|
|
{
|
|
Page desktopIKPage = parentCategory.AddPage("Desktop IK Settings", "", "Configure the settings for desktop IK.", ModSettings.SettingsCategory);
|
|
desktopIKPage.MenuTitle = "Desktop IK Settings";
|
|
Category desktopIKCategory = desktopIKPage.AddCategory(desktopIKPage.MenuTitle);
|
|
|
|
// Funny Settings
|
|
AddMelonToggle(ref desktopIKCategory, ModSettings.EntryProneThrusting);
|
|
|
|
// Body Leaning Weight
|
|
AddMelonSlider(ref desktopIKPage, ModSettings.EntryBodyLeanWeight, 0, 1f, 1);
|
|
|
|
// Max Root Heading Limit & Weights
|
|
AddMelonSlider(ref desktopIKPage, ModSettings.EntryPelvisHeadingWeight, 0, 1f, 1);
|
|
AddMelonSlider(ref desktopIKPage, ModSettings.EntryChestHeadingWeight, 0, 1f, 1);
|
|
}
|
|
|
|
private static void SetupHalfBodyIKConfigurationPage(ref Category parentCategory)
|
|
{
|
|
Page halfBodyIKPage = parentCategory.AddPage("HalfBody IK Settings", "", "Configure the settings for halfbody IK.", ModSettings.SettingsCategory);
|
|
halfBodyIKPage.MenuTitle = "HalfBody IK Settings";
|
|
//Category halfBodyIKCategory = halfBodyIKPage.AddCategory(halfBodyIKPage.MenuTitle);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Melon Pref Helpers
|
|
|
|
private static void AddMelonToggle(ref Category category, MelonLoader.MelonPreferences_Entry<bool> entry)
|
|
{
|
|
category.AddToggle(entry.DisplayName, entry.Description, entry.Value).OnValueUpdated += b => entry.Value = b;
|
|
}
|
|
|
|
private static void AddMelonSlider(ref Page page, MelonLoader.MelonPreferences_Entry<float> entry, float min, float max, int decimalPlaces = 2)
|
|
{
|
|
page.AddSlider(entry.DisplayName, entry.Description, entry.Value, min, max, decimalPlaces).OnValueUpdated += f => entry.Value = f;
|
|
}
|
|
|
|
#endregion
|
|
} |