Fixing issue with UI objects and collision with mouse pointer

This commit is contained in:
nathan@daedalus 2012-03-23 23:54:58 -05:00
parent 1d8e6f1493
commit a47ec71bc2
3 changed files with 13 additions and 6 deletions

View File

@ -20,6 +20,7 @@ using Axios.Engine.UI;
using Axios.Engine.Log; using Axios.Engine.Log;
using Axios.Engine.File; using Axios.Engine.File;
using System.IO; using System.IO;
using Axios.Engine.Structures;
namespace Axios.Engine namespace Axios.Engine
{ {
@ -280,19 +281,21 @@ namespace Axios.Engine
} }
Vector2 uiobjpos; Vector2 uiobjpos;
Rectangle uirect; //Rectangle uirect;
AxiosRectangle uirect;
bool foundobject = false; bool foundobject = false;
Vector2 mousepos = ConvertUnits.ToSimUnits(input.Cursor); Vector2 mousepos = this.Camera.ConvertScreenToWorld(input.Cursor);
//Vector2 objpos; //Vector2 objpos;
//System.Diagnostics.Debugger.Break(); //System.Diagnostics.Debugger.Break();
AxiosRectangle mousrect = new AxiosRectangle(mousepos.X, mousepos.Y, ConvertUnits.ToSimUnits(25), ConvertUnits.ToSimUnits(25));
foreach(AxiosUIObject uiobject in _uiobjects) foreach(AxiosUIObject uiobject in _uiobjects)
{ {
uiobjpos = uiobject.Position; uiobjpos = uiobject.Position;
//objpos = this.Camera.ConvertScreenToWorld(uiobjpos); //objpos = this.Camera.ConvertScreenToWorld(uiobjpos);
uirect = new Rectangle((int)uiobjpos.X, (int)uiobjpos.Y, (int)Math.Ceiling(ConvertUnits.ToSimUnits(uiobject.Width)), (int)Math.Ceiling(ConvertUnits.ToSimUnits(uiobject.Height) + 1)); uirect = new AxiosRectangle(uiobjpos.X, uiobjpos.Y, ConvertUnits.ToSimUnits(uiobject.Width), ConvertUnits.ToSimUnits(uiobject.Height));
if (uirect.Contains((int)position.X, (int)position.Y)) if (uirect.Intersect(mousrect))
{ {
if (input.IsNewMouseButtonPress(MouseButtons.LeftButton)) if (input.IsNewMouseButtonPress(MouseButtons.LeftButton))

View File

@ -5,7 +5,7 @@ using System.Text;
namespace Axios.Engine.Structures namespace Axios.Engine.Structures
{ {
class AxiosPoint public class AxiosPoint
{ {
private float _x; private float _x;
private float _y; private float _y;

View File

@ -5,7 +5,7 @@ using System.Text;
namespace Axios.Engine.Structures namespace Axios.Engine.Structures
{ {
class AxiosRectangle public class AxiosRectangle
{ {
private AxiosPoint _point; private AxiosPoint _point;
@ -73,6 +73,10 @@ namespace Axios.Engine.Structures
_point = new AxiosPoint(X, Y); _point = new AxiosPoint(X, Y);
} }
public override string ToString()
{
return String.Format("{{X:{0} Y:{1} Width:{2} Height:{3}}}", _point.X, _point.Y, Width, Height);
}
} }
} }