protected virtual void Mouse_Move(object sender, OpenTK.Input.MouseMoveEventArgs e)
        {
            Drag(e.X, e.Y);

            InputReceiverVisual irv = null;
            Component           cmp = (Component)GameObj.Camera.PickRendererAt(e.X, e.Y);

            if (cmp != null)
            {
                irv = cmp.GameObj.GetComponent <InputReceiverVisual>();
            }

            if (HoveredElement != irv)
            {
                if (HoveredElement != null)
                {
                    HoveredElement.MouseLeave();
                }

                if (irv != null)
                {
                    irv.MouseEnter();
                }
            }

            HoveredElement = irv;
        }
        protected virtual void Mouse_Move(object sender, OpenTK.Input.MouseMoveEventArgs e)
        {
            if (FocusedElement != null)
            {
                FocusedElement.MouseMove(e);
            }

            _currentMousePosition.X = e.X;
            _currentMousePosition.Y = e.Y;

            IEnumerable <Widget> activeGUIComponents  = Scene.Current.ActiveObjects.GetComponents <Widget>();
            IEnumerable <Widget> hoveredGUIComponents = activeGUIComponents.Where(gc => gc.ActiveArea != ActiveArea.None && gc.GetAreaOnScreen(GameObj.Camera).Contains(_currentMousePosition));

            Widget hgc = null;

            if (hoveredGUIComponents.Count() > 0)
            {
                float closestZ = hoveredGUIComponents.Min(gc => gc.GameObj.Transform.Pos.Z);
                hgc = hoveredGUIComponents.Where(gc => gc.GameObj.Transform.Pos.Z == closestZ).FirstOrDefault();

                if (hgc != null && !hgc.GetActiveAreaOnScreen(GameObj.Camera).Contains(_currentMousePosition))
                {
                    hgc = null;
                }

                if (hgc != null && _currentDialog != null)
                {
                    if (hgc.GameObj.FindAncestorWithComponent <SkinnedWindow>() != _currentDialog.GameObj)
                    {
                        hgc = null;
                    }
                }
            }

            if (HoveredElement != hgc)
            {
                if (HoveredElement != null)
                {
                    HoveredElement.MouseLeave();
                }

                if (hgc != null)
                {
                    hgc.MouseEnter();
                }
            }

            HoveredElement = hgc;
        }