コード例 #1
0
 public static void CloseRadialMenu()
 {
     current.gameObject.SetActive(false);
     current = null;
     open    = false;
     hand    = ActionMenuHand.Invalid;
     onClose.Invoke(radialPuppetValue);
 }
コード例 #2
0
 public static void Setup()
 {
     radialPuppetMenuLeft = Utilities
                            .CloneGameObject("UserInterface/ActionMenu/MenuL/ActionMenu/RadialPuppetMenu",
                                             "UserInterface/ActionMenu/MenuL/ActionMenu").GetComponent <RadialPuppetMenu>();
     radialPuppetMenuRight = Utilities
                             .CloneGameObject("UserInterface/ActionMenu/MenuR/ActionMenu/RadialPuppetMenu",
                                              "UserInterface/ActionMenu/MenuR/ActionMenu").GetComponent <RadialPuppetMenu>();
 }
コード例 #3
0
 private static System.Collections.IEnumerator WaitForRadialMenu()
 {
     while (GameObject.Find("UserInterface/ActionMenu/MenuR/ActionMenu/RadialPuppetMenu") == null)
     {
         yield return(null);
     }
     radialPuppetMenuLeft  = Utilities.CloneGameObject("UserInterface/ActionMenu/MenuL/ActionMenu/RadialPuppetMenu", "UserInterface/ActionMenu/MenuL/ActionMenu").GetComponent <RadialPuppetMenu>();
     radialPuppetMenuRight = Utilities.CloneGameObject("UserInterface/ActionMenu/MenuR/ActionMenu/RadialPuppetMenu", "UserInterface/ActionMenu/MenuR/ActionMenu").GetComponent <RadialPuppetMenu>();
     yield break;
 }
コード例 #4
0
 public static void UpdateArrow(this RadialPuppetMenu radialPuppet, float angleOriginal, float eulerAngle)
 {
     //MelonLogger.Msg($"Original: {angleOriginal}, Euler Angle:{eulerAngle}");
     radialPuppet.GetArrow().transform.localPosition = new Vector3(
         120 * Mathf.Cos(angleOriginal / Constants.RAD_TO_DEG),
         120 * Mathf.Sin(angleOriginal / Constants.RAD_TO_DEG),
         radialPuppet.GetArrow().transform.localPosition.z);
     radialPuppet.GetArrow().transform.localEulerAngles = new Vector3(
         radialPuppet.GetArrow().transform.localEulerAngles.x,
         radialPuppet.GetArrow().transform.localEulerAngles.y, 180 - eulerAngle);
 }
コード例 #5
0
 public static void CloseRadialMenu()
 {
     if (current == null)
     {
         return;
     }
     CallUpdateAction();
     current.gameObject.SetActive(false);
     current = null;
     open    = false;
     hand    = ActionMenuHand.Invalid;
 }
コード例 #6
0
 GetRadialArrowGameObject(
     RadialPuppetMenu radialPuppetMenu)     //Build 1088 radialPuppetMenu.field_Public_GameObject_0
 {
     if (radialPuppetArrowProperty != null)
     {
         return(getRadialArrowGameObjectDelegate(radialPuppetMenu));
     }
     radialPuppetArrowProperty = typeof(RadialPuppetMenu)
                                 .GetProperties(BindingFlags.Public | BindingFlags.Instance).Single(
         p => p.PropertyType == typeof(GameObject) &&
         ((GameObject)p.GetValue(radialPuppetMenu)).name.Equals("Arrow")
         );
     getRadialArrowGameObjectDelegate = getRadialArrowGameObjectDelegate =
         (Func <RadialPuppetMenu, GameObject>)Delegate.CreateDelegate(typeof(Func <RadialPuppetMenu, GameObject>),
                                                                      radialPuppetArrowProperty.GetGetMethod());
     return(getRadialArrowGameObjectDelegate(radialPuppetMenu));
 }
コード例 #7
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);
        }
コード例 #8
0
        public static void OpenRadialMenu(float startingValue, Action <float> close, string title)
        {
            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;
            }
            Input.ResetInputAxes();
            onClose = close;
            current.gameObject.SetActive(true);
            current.GetFill().field_Public_Single_3 = startingValue;
            onUpdate = onClose;
            current.GetTitle().text      = title;
            current.GetCenterText().text = (Math.Round(radialPuppetMenuRight.GetFill().field_Public_Single_3 / 360 * 100)) + "%";
            current.GetFill().UpdateGeometry();
            current.transform.localPosition = new Vector3(-256f, 0, 0);
            double angleOriginal = (startingValue / 100) * 360;
            double eulerAngle    = Utilities.ConvertFromDegToEuler(angleOriginal);

            current.UpdateArrow(angleOriginal, eulerAngle);
        }
コード例 #9
0
 public static void UpdateDisplay(this RadialPuppetMenu radialPuppet)
 {
     //MelonLogger.Msg($"Original: {radialPuppet.GetFill().field_Public_Single_3}, Math:{(radialPuppet.GetFill().field_Public_Single_3  / 360f)*100f}");
     radialPuppet.GetCenterText().text = Math.Round(radialPuppet.GetFill().GetFillAngle() / 360f * 100f) + "%";
     radialPuppet.GetFill().UpdateGeometry();
 }
コード例 #10
0
 public static PedalGraphic GetFill(this RadialPuppetMenu radialPuppetMenu) => radialPuppetMenu.field_Public_PedalGraphic_0;
コード例 #11
0
 public static void SetAngle(this RadialPuppetMenu radialPuppet, float angle)
 {
     radialPuppet.GetFill().SetFillAngle(angle);
     radialPuppet.UpdateDisplay();
 }
コード例 #12
0
 public static void SetValue(this RadialPuppetMenu radialPuppet, float value)
 {
     radialPuppet.GetFill().SetFillAngle(value / 100 * 360);
     radialPuppet.UpdateDisplay();
 }
コード例 #13
0
 public static TextMeshProUGUI GetTitle(this RadialPuppetMenu radialPuppetMenu)
 {
     return(((PuppetMenu)radialPuppetMenu).field_Public_TextMeshProUGUI_0); //only one
 }
コード例 #14
0
 public static TextMeshProUGUI GetCenterText(this RadialPuppetMenu radialPuppetMenu)
 {
     return(radialPuppetMenu.field_Public_TextMeshProUGUI_0); //only one
 }
コード例 #15
0
 public static GameObject GetArrow(this RadialPuppetMenu radialPuppetMenu)
 {
     return(GetRadialArrowGameObject(radialPuppetMenu));
 }
コード例 #16
0
 public static PedalGraphic GetFill(this RadialPuppetMenu radialPuppetMenu)
 {
     return(radialPuppetMenu.field_Public_PedalGraphic_0); //only one
 }
コード例 #17
0
 public static GameObject GetArrow(this RadialPuppetMenu radialPuppetMenu) => radialPuppetMenu.field_Public_GameObject_1;
コード例 #18
0
 public static TextMeshProUGUI GetTitle(this RadialPuppetMenu radialPuppetMenu) => ((PuppetMenu)radialPuppetMenu).field_Public_TextMeshProUGUI_0;
コード例 #19
0
 public static TextMeshProUGUI GetCenterText(this RadialPuppetMenu radialPuppetMenu) => radialPuppetMenu.field_Public_TextMeshProUGUI_0;
コード例 #20
0
 public static void SetAngle(this RadialPuppetMenu radialPuppet, float angle)
 {
     radialPuppet.GetFill().field_Public_Single_3 = angle;
     radialPuppet.UpdateDisplay();
 }
コード例 #21
0
 public static void SetValue(this RadialPuppetMenu radialPuppet, float value)
 {
     radialPuppet.GetFill().field_Public_Single_3 = (value / 100) * 360;
     radialPuppet.UpdateDisplay();
 }
コード例 #22
0
 public static void UpdateArrow(this RadialPuppetMenu radialPuppet, double angleOriginal, double eulerAngle)
 {
     radialPuppet.GetArrow().transform.localPosition = new Vector3((float)(120 * Math.Cos(angleOriginal / Constants.radToDeg)), (float)(120 * Math.Sin(angleOriginal / Constants.radToDeg)), radialPuppet.GetArrow().transform.localPosition.z);
     radialPuppet.GetArrow().transform.localEulerAngles = new Vector3(radialPuppet.GetArrow().transform.localEulerAngles.x, radialPuppet.GetArrow().transform.localEulerAngles.y, (float)(180 - eulerAngle));
 }
コード例 #23
0
 public static void UpdateDisplay(this RadialPuppetMenu radialPuppet)
 {
     radialPuppet.GetCenterText().text = (Math.Round(radialPuppet.GetFill().field_Public_Single_3 / 360 * 100)) + "%";
     radialPuppet.GetFill().UpdateGeometry();
 }
コード例 #24
0
 public static GameObject GetCursor(this RadialPuppetMenu radialPuppetMenu)
 {
     return(GetRadialCursorGameObject(radialPuppetMenu));
 }
コード例 #25
0
 public static GameObject GetCursor(this RadialPuppetMenu radialPuppetMenu) => radialPuppetMenu.field_Public_GameObject_0;