//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
//**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************//
using System;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Math
* @{
*/
///
/// Represents a 2D rectangle using real values. Rectangle is represented with an origin in top left and width/height.
///
[StructLayout(LayoutKind.Sequential), SerializeObject]
public struct Rect2 // Note: Must match C++ struct Rect2
{
public float x, y, width, height;
///
/// Creates a new 2D rectangle.
///
/// Left-most coordinate of the rectangle.
/// Top-most coordinate of the rectangle.
/// Width of the rectangle.
/// Height of the rectangle.
public Rect2(float x, float y, float width, float height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public static bool operator ==(Rect2 lhs, Rect2 rhs)
{
return lhs.x == rhs.x && lhs.y == rhs.y && lhs.width == rhs.width && lhs.height == rhs.height;
}
public static bool operator !=(Rect2 lhs, Rect2 rhs)
{
return !(lhs == rhs);
}
///
public override bool Equals(object other)
{
if (!(other is Rect2))
return false;
Rect2 rect = (Rect2)other;
if (x.Equals(rect.x) && y.Equals(rect.y) && width.Equals(rect.width) && height.Equals(rect.height))
return true;
return false;
}
///
public override int GetHashCode()
{
return base.GetHashCode();
}
///
public override string ToString()
{
return String.Format("(x:{0} y:{1} width:{2} height:{3})", x, y, width, height);
}
}
/** @} */
}