/*public AxiosPoint Center { get { return new AxiosPoint(Top + (Width / 2), Bottom - (Width / 2)); } }*/ public bool Intersect(AxiosRectangle rect) { //bool intersects = true; if (Bottom < rect.Top) return false; if (Top > rect.Bottom) return false; if (Right < rect.Left) return false; if (Left > rect.Right) return false; return true; }
private void HandleMouseEvents(InputState input) { Vector2 position = this.Camera.ConvertScreenToWorld(input.Cursor); Fixture fix = this.World.TestPoint(position); AxiosGameObject gobj; if (fix != null && fix.UserData != null && fix.UserData is AxiosGameObject) { gobj = (AxiosGameObject)fix.UserData; if (gobj != null && gobj != prevobj) { gobj.OnMouseHover(this, input); if (prevobj != gobj && prevobj != null) prevobj.OnMouseLeave(this, input); } else if (gobj != null) { if (input.IsNewMouseButtonRelease(MouseButtons.LeftButton)) { if (prevobj != null) prevobj.OnFocusLeave(this, input); gobj.OnFocusEnter(this, input); gobj.OnMouseUp(this, input); prevfocusobj = gobj; //prevobj = gobj; } if (input.IsNewMouseButtonPress(MouseButtons.LeftButton)) gobj.OnMouseDown(this, input); } if (gobj != null) prevobj = gobj; } else { if (prevobj != null) prevobj.OnMouseLeave(this, input); if (input.IsNewMouseButtonPress(MouseButtons.LeftButton) && prevfocusobj != null) { prevfocusobj.OnFocusLeave(this, input); prevfocusobj = null; } prevobj = null; } Vector2 uiobjpos; //Rectangle uirect; AxiosRectangle uirect; bool foundobject = false; Vector2 mousepos = this.Camera.ConvertScreenToWorld(input.Cursor); //Vector2 objpos; //System.Diagnostics.Debugger.Break(); AxiosRectangle mousrect = new AxiosRectangle(mousepos.X, mousepos.Y, ConvertUnits.ToSimUnits(25), ConvertUnits.ToSimUnits(25)); foreach(AxiosUIObject uiobject in _uiobjects) { uiobjpos = uiobject.Position; //objpos = this.Camera.ConvertScreenToWorld(uiobjpos); uirect = new AxiosRectangle(ConvertUnits.ToSimUnits(uiobjpos.X), ConvertUnits.ToSimUnits(uiobjpos.Y), ConvertUnits.ToSimUnits(uiobject.Width), ConvertUnits.ToSimUnits(uiobject.Height)); if (uirect.Intersect(mousrect)) { if (input.IsNewMouseButtonPress(MouseButtons.LeftButton)) { uiobject.OnMouseDown(this, input); } if (input.IsNewMouseButtonRelease(MouseButtons.LeftButton)) { //System.Diagnostics.Debugger.Break(); if (prevuifocusobj != uiobject) { uiobject.OnFocusEnter(this, input); if (prevuifocusobj != null) prevuifocusobj.OnFocusLeave(this, input); prevuifocusobj = uiobject; } uiobject.OnMouseUp(this, input); } if (prevuiobj != uiobject) { //System.Diagnostics.Debugger.Break(); uiobject.OnMouseHover(this, input); if (prevuiobj != null) prevuiobj.OnMouseLeave(this, input); prevuiobj = uiobject; } foundobject = true; break; } } if (!foundobject && prevuiobj != null) { //mouse moved away from object prevuiobj.OnMouseLeave(this, input); prevuiobj = null; } if (input.IsNewMouseButtonRelease(MouseButtons.LeftButton)) { if (!foundobject && prevuifocusobj != null) { prevuifocusobj.OnFocusLeave(this, input); prevuifocusobj = null; } } }