Example #1
0
        /// <summary>
        ///     Add a radial puppet 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="onUpdate">Calls action with a float between 0 - 1 depending on the current value of the radial puppet</param>
        /// <param name="startingValue">(optional) Starting value for radial puppet 0-1</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 PedalRadial AddRadialPuppet(ActionMenuPage pageType, string text, Action <float> onUpdate,
                                                  float startingValue = 0, Texture2D icon = null, bool locked = false, Insertion insertion = Insertion.Post)
        {
            var pedal = new PedalRadial(text, startingValue, icon, onUpdate, locked);

            AddPedalToList(pageType, pedal, insertion);
            return(pedal);
        }
Example #2
0
        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;
                }
            }
        }