public bool OnMouseDown(Components.BaseUI ui, float x, float y) { if (ui.Collision != null) { var isCollision = ui.Collision.IsCollisionMouse(ui, x, y); if (isCollision) { var isChildCollision = false; ui.Childs.ForEach(childUI => { if (ui.ListenerMouse.OnMouseDown(childUI, x, y)) { isChildCollision = true; } }); if (!isChildCollision) { ui.ListenerMouse.ActiveDown(x, y, ui); } } return(isCollision); } else { return(false); } }
public ListenerMouse(Components.BaseUI ui) { this.UI = ui; this.IsMouseOver = true; MouseDown = new List <Action <MouseDate> >(); MouseMove = new List <Action <MouseDate> >(); MouseUp = new List <Action <MouseDate> >(); MouseLeave = new List <Action <MouseDate> >(); MouseEnter = new List <Action <MouseDate> >(); }
bool UICollision.IsCollisionMouse(Components.BaseUI ui, float x, float y) { var rect = ui as Components.RectangleComponent; if (x >= rect.X && x <= rect.Width + rect.X && y >= rect.Y && y <= rect.Y + rect.Hieght) { return(true); } else { return(false); } }
public bool OnMouseMove(Components.BaseUI ui, float x, float y) { if (ui.Collision != null) { var isCollision = ui.Collision.IsCollisionMouse(ui, x, y); if (isCollision) { var isChildCollision = false; ui.Childs.ForEach(childUI => { if (ui.ListenerMouse.OnMouseMove(childUI, x, y)) { isChildCollision = true; } }); if (!isChildCollision) { if (ui.ListenerMouse.IsMouseOver) { ui.ListenerMouse.ActiveEnter(x, y, ui); ui.ListenerMouse.IsMouseOver = false; } ui.ListenerMouse.ActiveMove(x, y, ui); } } else if (!ui.ListenerMouse.IsMouseOver) { ui.ListenerMouse.IsMouseOver = true; ui.ListenerMouse.ActiveLeave(x, y, ui); } return(isCollision); } else { return(false); } }
public MouseDate(float x, float y, Components.BaseUI ui) { this.X = x; this.Y = y; this.UI = ui; }
public void ActiveEnter(float x, float y, Components.BaseUI ui) => MouseEnter.ForEach(m => m(new MouseDate(x, y, ui)));