UnityEngine.UI.Selectable.GetPointOnRectEdge C# (CSharp) Method

GetPointOnRectEdge() private static method

private static GetPointOnRectEdge ( RectTransform rect, System.Vector2 dir ) : System.Vector3
rect RectTransform
dir System.Vector2
return System.Vector3
        private static Vector3 GetPointOnRectEdge(RectTransform rect, Vector2 dir)
        {
            if (rect == null)
            {
                return Vector3.zero;
            }
            if (dir != Vector2.zero)
            {
                dir = (Vector2) (dir / Mathf.Max(Mathf.Abs(dir.x), Mathf.Abs(dir.y)));
            }
            dir = rect.rect.center + Vector2.Scale(rect.rect.size, (Vector2) (dir * 0.5f));
            return (Vector3) dir;
        }

Usage Example

コード例 #1
0
        public Selectable FindSelectable(Vector3 dir)
        {
            dir = dir.normalized;
            Vector3    v      = Quaternion.Inverse(base.transform.rotation) * dir;
            Vector3    b      = base.transform.TransformPoint(Selectable.GetPointOnRectEdge(base.transform as RectTransform, v));
            float      num    = float.NegativeInfinity;
            Selectable result = null;

            for (int i = 0; i < Selectable.s_List.Count; i++)
            {
                Selectable selectable = Selectable.s_List[i];
                if (!(selectable == this) && !(selectable == null))
                {
                    if (selectable.IsInteractable() && selectable.navigation.mode != Navigation.Mode.None)
                    {
                        RectTransform rectTransform = selectable.transform as RectTransform;
                        Vector3       position      = (!(rectTransform != null)) ? Vector3.zero : rectTransform.rect.center;
                        Vector3       rhs           = selectable.transform.TransformPoint(position) - b;
                        float         num2          = Vector3.Dot(dir, rhs);
                        if (num2 > 0f)
                        {
                            float num3 = num2 / rhs.sqrMagnitude;
                            if (num3 > num)
                            {
                                num    = num3;
                                result = selectable;
                            }
                        }
                    }
                }
            }
            return(result);
        }
All Usage Examples Of UnityEngine.UI.Selectable::GetPointOnRectEdge