UnityEditor.SplitView.DragOver C# (CSharp) Method

DragOver() public method

public DragOver ( EditorWindow w, Vector2 mouseScreenPosition ) : DropInfo
w EditorWindow
mouseScreenPosition Vector2
return DropInfo
        public DropInfo DragOver(EditorWindow w, Vector2 mouseScreenPosition)
        {
            for (int i = 0; i < base.children.Length; i++)
            {
                View view = base.children[i];
                if ((view != DockArea.s_IgnoreDockingForView) && !(view is SplitView))
                {
                    ViewEdge none = ViewEdge.None;
                    Rect screenPosition = view.screenPosition;
                    Rect rect = this.RectFromEdge(screenPosition, ViewEdge.Bottom, screenPosition.height - 39f, 0f);
                    float thickness = Mathf.Min(Mathf.Round(rect.width / 3f), 300f);
                    float num3 = Mathf.Min(Mathf.Round(rect.height / 3f), 300f);
                    Rect rect3 = this.RectFromEdge(rect, ViewEdge.Left, thickness, 0f);
                    Rect rect4 = this.RectFromEdge(rect, ViewEdge.Right, thickness, 0f);
                    Rect rect5 = this.RectFromEdge(rect, ViewEdge.Bottom, num3, 0f);
                    Rect rect6 = this.RectFromEdge(rect, ViewEdge.Top, num3, 0f);
                    if (rect3.Contains(mouseScreenPosition))
                    {
                        none |= ViewEdge.Left;
                    }
                    if (rect4.Contains(mouseScreenPosition))
                    {
                        none |= ViewEdge.Right;
                    }
                    if (rect5.Contains(mouseScreenPosition))
                    {
                        none |= ViewEdge.Bottom;
                    }
                    if (rect6.Contains(mouseScreenPosition))
                    {
                        none |= ViewEdge.Top;
                    }
                    Vector2 zero = Vector2.zero;
                    Vector2 vector2 = Vector2.zero;
                    ViewEdge bottom = none;
                    ViewEdge left = none;
                    switch (none)
                    {
                        case ViewEdge.BottomLeft:
                            bottom = ViewEdge.Bottom;
                            left = ViewEdge.Left;
                            zero = new Vector2(rect.x, rect.yMax) - mouseScreenPosition;
                            vector2 = new Vector2(-thickness, num3);
                            break;

                        case ViewEdge.Before:
                            bottom = ViewEdge.Left;
                            left = ViewEdge.Top;
                            zero = new Vector2(rect.x, rect.y) - mouseScreenPosition;
                            vector2 = new Vector2(-thickness, -num3);
                            break;

                        case ViewEdge.After:
                            bottom = ViewEdge.Right;
                            left = ViewEdge.Bottom;
                            zero = new Vector2(rect.xMax, rect.yMax) - mouseScreenPosition;
                            vector2 = new Vector2(thickness, num3);
                            break;

                        case ViewEdge.TopRight:
                            bottom = ViewEdge.Top;
                            left = ViewEdge.Right;
                            zero = new Vector2(rect.xMax, rect.y) - mouseScreenPosition;
                            vector2 = new Vector2(thickness, -num3);
                            break;
                    }
                    none = (((zero.x * vector2.y) - (zero.y * vector2.x)) >= 0f) ? left : bottom;
                    if (none != ViewEdge.None)
                    {
                        float num4 = Mathf.Max(Mathf.Round((((none & ViewEdge.FitsHorizontal) == ViewEdge.None) ? screenPosition.height : screenPosition.width) / 3f), 100f);
                        return new DropInfo(this) { 
                            userData = new ExtraDropInfo(false, none, i),
                            type = DropInfo.Type.Pane,
                            rect = this.RectFromEdge(screenPosition, none, num4, 0f)
                        };
                    }
                }
            }
            if (base.screenPosition.Contains(mouseScreenPosition) && !(base.parent is SplitView))
            {
                return new DropInfo(null);
            }
            return null;
        }