コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public static void OpenFourAxisMenu(string title, Action <Vector2> update, PedalOption pedalOption)
        {
            if (open)
            {
                return;
            }
            switch (Utilities.GetActionMenuHand())
            {
            case ActionMenuHand.Invalid:
                return;

            case ActionMenuHand.Left:
                current = fourAxisPuppetMenuLeft;
                hand    = ActionMenuHand.Left;
                open    = true;
                break;

            case ActionMenuHand.Right:
                current = fourAxisPuppetMenuRight;
                hand    = ActionMenuHand.Right;
                open    = true;
                break;
            }

            Input.ResetInputAxes();
            onUpdate = update;
            current.gameObject.SetActive(true);
            current.GetTitle().text = title;
            current.transform.localPosition = pedalOption.GetActionButton().transform.localPosition;
        }
コード例 #4
0
 private static void AddPedalsInList(List <PedalStruct> pedalStructs, ActionMenu instance)
 {
     foreach (PedalStruct pedalStruct in pedalStructs)
     {
         PedalOption pedalOption = instance.AddOption();
         pedalOption.setText(pedalStruct.text); //    VVV
         pedalOption.setIcon(pedalStruct.icon); //Pretty self explanatory
         pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(pedalStruct.triggerEvent);
     }
 }
コード例 #5
0
ファイル: Utilities.cs プロジェクト: VRCMG/ActionMenuApi
        public static void AddPedalsInList(List <PedalStruct> list, ActionMenu instance)
        {
            foreach (var pedalStruct in list)
            {
                PedalOption pedalOption = instance.AddOption();
                switch (pedalStruct.Type)
                {
                case PedalType.Button:
                    pedalOption.setText(pedalStruct.text);
                    pedalOption.setIcon(pedalStruct.icon);
                    pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(pedalStruct.triggerEvent);
                    break;

                case PedalType.SubMenu:
                    pedalOption.setText(pedalStruct.text);
                    pedalOption.setIcon(pedalStruct.icon);
                    pedalOption.field_Public_ActionButton_0.prop_Texture2D_2          = GetExpressionsIcons().typeFolder;
                    pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(pedalStruct.triggerEvent);
                    break;

                case PedalType.RadialPuppet:
                    PedalRadial pedalRadial = (PedalRadial)pedalStruct;
                    pedalOption.setText(pedalStruct.text);
                    pedalOption.setIcon(pedalStruct.icon);
                    pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = GetExpressionsIcons().typeRadial;
                    pedalOption.field_Public_ActionButton_0.prop_String_1    = $"{Math.Round(pedalRadial.currentValue)}%";
                    pedalRadial.pedal = pedalOption;
                    pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(pedalStruct.triggerEvent);
                    break;

                case PedalType.Toggle:
                    PedalToggle pedalToggle = (PedalToggle)pedalStruct;
                    pedalOption.setText(pedalStruct.text);
                    if (pedalToggle.toggled)
                    {
                        pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = GetExpressionsIcons().typeToggleOn;
                    }
                    else
                    {
                        pedalOption.field_Public_ActionButton_0.prop_Texture2D_2 = GetExpressionsIcons().typeToggleOff;
                    }
                    pedalOption.setIcon(pedalToggle.icon);
                    pedalToggle.pedal = pedalOption;
                    pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(pedalStruct.triggerEvent);
                    break;

                case PedalType.FourAxisPuppet:
                    pedalOption.setText(pedalStruct.text);
                    pedalOption.setIcon(pedalStruct.icon);
                    pedalOption.field_Public_ActionButton_0.prop_Texture2D_2          = GetExpressionsIcons().typeAxis;
                    pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(pedalStruct.triggerEvent);
                    break;
                }
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        SetButtonPercentText(this PedalOption pedalOption,
                             string text) //pedalOption.GetActionButton().prop_String_1
        {
            if (actionButtonPercentProperty != null)
            {
                actionButtonPercentProperty.SetValue(pedalOption.GetActionButton(), text);
                return;
            }

            var button = pedalOption.GetActionButton();

            actionButtonPercentProperty = typeof(ActionButton)
                                          .GetProperties(BindingFlags.Public | BindingFlags.Instance).Single(
                p => p.PropertyType == typeof(string) && ((string)p.GetValue(button)).Equals("100%")
                );
            actionButtonPercentProperty.SetValue(pedalOption.GetActionButton(), text);
        }
コード例 #9
0
        public static void OpenRadialMenu(float startingValue, Action <float> onUpdate, string title,
                                          PedalOption pedalOption, bool restricted = false)
        {
            if (open)
            {
                return;
            }
            switch (Utilities.GetActionMenuHand())
            {
            case ActionMenuHand.Invalid:
                return;

            case ActionMenuHand.Left:
                current = radialPuppetMenuLeft;
                hand    = ActionMenuHand.Left;
                open    = true;
                break;

            case ActionMenuHand.Right:
                current = radialPuppetMenuRight;
                hand    = ActionMenuHand.Right;
                open    = true;
                break;
            }

            RadialPuppetManager.restricted = restricted;
            Input.ResetInputAxes();
            current.gameObject.SetActive(true);
            current.GetFill().SetFillAngle(startingValue * 360); //Please dont break
            RadialPuppetManager.onUpdate = onUpdate;
            currentValue = startingValue;
            current.GetTitle().text      = title;
            current.GetCenterText().text = $"{Mathf.Round(startingValue * 100f)}%";
            current.GetFill().UpdateGeometry();
            ;
            current.transform.localPosition =
                pedalOption.GetActionButton().transform.localPosition; //new Vector3(-256f, 0, 0);
            var angleOriginal = Utilities.ConvertFromEuler(startingValue * 360);
            var eulerAngle    = Utilities.ConvertFromDegToEuler(angleOriginal);

            current.UpdateArrow(angleOriginal, eulerAngle);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
 public static void SetPedalTriggerEvent(this PedalOption pedalOption, PedalOptionTriggerEvent triggerEvent)
 {
     pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 = triggerEvent; //only one
 }
コード例 #12
0
 public static ActionButton GetActionButton(this PedalOption pedalOption)
 {
     return(pedalOption.field_Public_ActionButton_0); //only one
 }
コード例 #13
0
 //Only texture2d prop on PedalOption. shouldnt change unless drastic changes are made to the action menu
 public static void SetForegroundIcon(this PedalOption pedal, Texture2D icon)
 {
     pedal.prop_Texture2D_0 = icon;
 }
コード例 #14
0
 public static void SetBackgroundIcon(this PedalOption pedal, Texture2D icon)
 {
     pedal.GetActionButton().prop_Texture2D_0 = icon;
 }
コード例 #15
0
 public static Texture2D getIcon(this PedalOption pedal)
 {
     return(pedal.prop_Texture2D_0);
 }
コード例 #16
0
 public static void SetPedalTypeIcon(this PedalOption pedalOption, Texture2D icon)
 {
     pedalOption.GetActionButton().prop_Texture2D_2 = icon; //No choice needs to be hardcoded in sadly
 }
コード例 #17
0
 public static string setText(this PedalOption pedal, string text)
 {
     return(pedal.prop_String_0 = text); //Likewise... should be safe
 }
コード例 #18
0
 public static string getText(this PedalOption pedal)
 {
     return(pedal.prop_String_0); //Likewise... should be safe
 }
コード例 #19
0
ファイル: TrkOptions.cs プロジェクト: notator/Moritz
 public PedalControl(PedalOption pedalOption)
 {
     _pedalOption = pedalOption;
 }
コード例 #20
0
ファイル: TrkOptions.cs プロジェクト: notator/Moritz
 public void Add(PedalControl pedalTrkOption)
 {
     _pedalOption = pedalTrkOption.PedalOption;
 }
コード例 #21
0
 public static void SetPedalAction(this PedalOption pedalOption, Action action)
 {
     pedalOption.field_Public_MulticastDelegateNPublicSealedBoUnique_0 =
         DelegateSupport.ConvertDelegate <PedalOptionTriggerEvent>(action);
 }
コード例 #22
0
 public static void Lock(this PedalOption pedalOption)
 {
     pedalOption.prop_Boolean_0 = true;
     ResourcesManager.AddLockChildIcon(pedalOption.GetActionButton().gameObject.GetChild("Inner"));
 }
コード例 #23
0
 public static void SetText(this PedalOption pedal, string text)
 {
     pedal.prop_String_0 = text;
 }
コード例 #24
0
 public static string GetText(this PedalOption pedal)
 {
     return
         (pedal.prop_String_0); //Only string prop on PedalOption. shouldnt change unless drastic changes are made to the action menu
 }
コード例 #25
0
 public static Texture2D setIcon(this PedalOption pedal, Texture2D icon)
 {
     //PropertyInfo texture = typeof(PedalOption).GetProperties().Where(p => p.PropertyType == typeof(Texture2D)).First(); meh
     return(pedal.prop_Texture2D_0 = icon);
 }