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; }