/// <summary> /// Add a button pedal to a specific ActionMenu page /// </summary> /// <param name="pageType">The page to add the button to</param> /// <param name="text">Button text</param> /// <param name="triggerEvent">Button click action</param> /// <param name="icon">(optional) The Button Icon</param> /// <param name="locked">(optional)The starting state for the lockable pedal, true = locked, false = unlocked</param> /// <param name="insertion"> /// (optional) Determines whether or not the button is added before or after VRChat's buttons for /// the target page /// </param> public static PedalButton AddButton(ActionMenuPage pageType, string text, Action triggerEvent, Texture2D icon = null, bool locked = false, Insertion insertion = Insertion.Post) { var pedal = new PedalButton(text, icon, triggerEvent, locked); AddPedalToList(pageType, pedal, insertion); return(pedal); }
private void DoButtonDown(ref bool oldValue, byte pedalOutput, PedalButton button) { bool value = (pedalOutput & (byte)button) != 0; if (oldValue == value) { return; } oldValue = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Enum.GetName(typeof(PedalButton), button) ?? "")); PickEvent(button, value)?.Invoke(this, EventArgs.Empty); }
protected void OnPedalButtonChanged(PedalButton button, PedalButtonStatus status) { PedalButtonChanged?.ThreadAwareRaise(this, new PedalButtonEventArgs(button, status)); }
void Start() { spriteRenderer = gameObject.GetComponent <SpriteRenderer>(); instance = this; Debug.Log("pedal button setup"); }
internal PedalButtonEventArgs(PedalButton button, PedalButtonStatus status) { Button = button; Status = status; }
private EventHandler?PickEvent(PedalButton button, in bool value) =>