public static PedalOption AddRadialPedalToSubMenu(Action <float> onUpdate, string text = "Button Text", float startingValue = 0, Texture2D icon = null) { ActionMenuOpener actionMenuOpener = Utilities.GetActionMenuOpener(); if (actionMenuOpener == null) { return(null); } PedalOption pedalOption = actionMenuOpener.GetActionMenu().AddOption(); pedalOption.setText(text); pedalOption.setIcon(icon); pedalOption.field_Public_ActionButton_0.prop_String_1 = $"{Math.Round(startingValue)}%"; pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = Utilities.GetExpressionsIcons().typeRadial; pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(new Action(delegate { Action <float> combinedAction = (System.Action <float>) Delegate.Combine(new Action <float>(delegate(float f) { startingValue = f; pedalOption.field_Public_ActionButton_0.prop_String_1 = $"{Math.Round(startingValue)}%"; }), onUpdate); RadialPuppetManager.OpenRadialMenu(startingValue, combinedAction, text); })); return(pedalOption); }
public static PedalOption AddTogglePedalToSubMenu(Action <bool> onToggle, bool startingState, string text, Texture2D icon = null) { ActionMenuOpener actionMenuOpener = Utilities.GetActionMenuOpener(); if (actionMenuOpener == null) { return(null); } PedalOption pedalOption = actionMenuOpener.GetActionMenu().AddOption(); pedalOption.setText(text); pedalOption.setIcon(icon); if (startingState) { pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = Utilities.GetExpressionsIcons().typeToggleOn; } else { pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = Utilities.GetExpressionsIcons().typeToggleOff; } pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(new Action(delegate { startingState = !startingState; if (startingState) { pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = Utilities.GetExpressionsIcons().typeToggleOn; } else { pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = Utilities.GetExpressionsIcons().typeToggleOff; } onToggle.Invoke(startingState); })); return(pedalOption); }
public static PedalOption AddButtonPedalToSubMenu(Action triggerEvent, string text = "Button Text", Texture2D icon = null) { ActionMenuOpener actionMenuOpener = Utilities.GetActionMenuOpener(); if (actionMenuOpener == null) { return(null); } PedalOption pedalOption = actionMenuOpener.GetActionMenu().AddOption(); pedalOption.setText(text); pedalOption.setIcon(icon); pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(triggerEvent); return(pedalOption); }
/// <summary> /// If you create a custom Submenu you can use this to add your pedals to it /// </summary> /// <param name="triggerEvent">Called on pedal click</param> /// <param name="text">Pedal Text</param> /// <param name="icon">Pedal Icon</param> public PedalOption AddPedalToCustomMenu(System.Action triggerEvent, string text = "Button Text", Texture2D icon = null) { ActionMenuOpener actionMenuOpener = GetActionMenuOpener(); if (actionMenuOpener == null) { return(null); } PedalOption pedalOption = actionMenuOpener.field_Public_ActionMenu_0.AddOption(); pedalOption.setText(text); // VVV pedalOption.setIcon(icon); //Pretty self explanatory pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(triggerEvent); return(pedalOption); }
public static PedalOption AddFourAxisPedalToSubMenu(string text, Vector2 startingValue, Action <Vector2> onUpdate, Texture2D icon = null, string topButtonText = "Up", string rightButtonText = "Right", string downButtonText = "Down", string leftButtonText = "Left") { ActionMenuOpener actionMenuOpener = Utilities.GetActionMenuOpener(); if (actionMenuOpener == null) { return(null); } PedalOption pedalOption = actionMenuOpener.GetActionMenu().AddOption(); pedalOption.setText(text); pedalOption.setIcon(icon); pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = Utilities.GetExpressionsIcons().typeAxis; pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(new Action(delegate { FourAxisPuppetManager.OpenFourAxisMenu(startingValue, v => startingValue = v, text, onUpdate); FourAxisPuppetManager.current.GetButtonUp().SetButtonText(topButtonText); FourAxisPuppetManager.current.GetButtonRight().SetButtonText(rightButtonText); FourAxisPuppetManager.current.GetButtonDown().SetButtonText(downButtonText); FourAxisPuppetManager.current.GetButtonLeft().SetButtonText(leftButtonText); })); return(pedalOption); }
/// <summary> /// This function will handle the main override of the ActionMenuOpener object according /// to the configuration supplied by MelonPrefs /// </summary> /// <param name="__0">Target state for the ActionMenu, either open or close</param> /// <param name="__instance">Instance of ActionMenuOpener __instance.name gives the MenuL or MenuR needed to determine hand</param> public static bool OnActionMenuOpen(bool __0, ref ActionMenuOpener __instance) { //MelonLogger.Log($"ActionMenuOpener OpenActionMenu Called OpenerName: {__instance.name}, BoolState: {__0}"); if ((MelonPreferences.GetEntryValue <bool>(settingsCategory, rightHandSetting) && __instance.name.Equals("MenuR")) || (MelonPreferences.GetEntryValue <bool>(settingsCategory, leftHandSetting) && __instance.name.Equals("MenuL"))) { if (__0) { HandGestureController.Method_Public_Static_Void_Boolean_0(!HandGestureController.Method_Public_Static_Boolean_0()); } else { HandGestureController.Method_Public_Static_Void_Boolean_0(__0); } return(false); //Skip original function } //Check if action menu is disabled for hand if ((MelonPreferences.GetEntryValue <bool>(settingsCategory, rightHandActionDisable) && __instance.name.Equals("MenuR")) || (MelonPreferences.GetEntryValue <bool>(settingsCategory, leftHandActionDisable) && __instance.name.Equals("MenuL"))) { return(false); } return(true); }
public static ActionMenu GetActionMenu(this ActionMenuOpener actionMenuOpener) { return(actionMenuOpener.field_Public_ActionMenu_0); }
public static bool isOpen(this ActionMenuOpener actionMenuOpener) { return(actionMenuOpener.field_Private_Boolean_0); //only bool on action menu opener, shouldnt change }
public static bool isOpen(this ActionMenuOpener actionMenuOpener) { return(actionMenuOpener.field_Private_Boolean_0); }
public static ActionMenu GetActionMenu(this ActionMenuOpener actionMenuOpener) => actionMenuOpener.field_Public_ActionMenu_0;