#include "cInside.hpp" using MathEngine::cInside; using MathEngine::Vector4; using MathEngine::Vector2; using MathEngine::iVector4; using MathEngine::iVector2; cInside::cInside() { } cInside::~cInside() { } /// Functions /*static*/ const Vector2 cInside::Inside(const Vector4& a, const Vector4& b) { Vector2 rtn; rtn.x = 0.0f; rtn.y = 0.0f; /// Check if left side of b is inside of a if (b.x < a.x) rtn.x = a.x - b.x; /// Check if right side of b is inside of a if ((b.x + b.z) > (a.x + a.z)) rtn.x = (a.x + a.z) - (b.x + b.z); /// Check if top side of b is inside of a if (b.y < a.y) rtn.y = a.y - b.y; /// Check if bottom side of b is inside of a if ((b.y + b.w) > (a.y + a.w)) rtn.y = (a.y + a.w) - (b.y + b.w); return rtn; } /*static*/ const Vector2 cInside::Inside(const SDL_Rect& a, const Vector4& b) { Vector4 temp = a; return cInside::Inside(temp, b); } /*static*/ const Vector2 cInside::Inside(const Vector4& a, const SDL_Rect& b) { Vector4 temp = b; return cInside::Inside(a, temp); } /*static*/ const bool cInside::isInside(const signed long int x, const signed long int y, const SDL_Rect& inside) { iVector4 temp = inside; return cInside::isInside(x, y, temp); } /*static*/ const bool cInside::isInside(const signed long int x, const signed long int y, const iVector4& inside) { bool rtn = false; if ((inside.x < x) && (inside.w > x)) { if ((inside.y < y) && (inside.z > y)) rtn = true; } return rtn; } /*static*/ const iVector2 cInside::Inside(const SDL_Rect& a, const SDL_Rect& b) { iVector2 rtn; rtn.x = 0.0f; rtn.y = 0.0f; /// Check if left side of b is inside of a if (b.x < a.x) rtn.x = (float)(b.x - a.x); /// Check if right side of b is inside of a if ((b.x + b.w) > (a.x + a.w)) rtn.x = (float)((b.x + b.w) - (a.x + a.w)); /// Check if top side of b is inside of a if (b.y < a.y) rtn.y = (float)(b.y - a.y); /// Check if bottom side of b is inside of a if ((b.y + b.h) > (a.y + a.h)) rtn.y = (float)((b.y + b.h) - (a.y + a.h)); return rtn; } /*static*/ const iVector2 cInside::Inside(const iVector4& a, const iVector4& b) { iVector2 rtn; rtn.x = 0; rtn.y = 0; /// Check if left side of b is inside of a if (b.x < a.x) rtn.x = b.x - a.x; /// Check if right side of b is inside of a if ((b.x + b.z) > (a.x + a.z)) rtn.x = (b.x + b.z) - (a.x + a.z); /// Check if top side of b is inside of a if (b.y < a.y) rtn.y = b.y - a.y; /// Check if bottom side of b is inside of a if ((b.y + b.w) > (a.y + a.w)) rtn.y = (b.y + b.w) - (a.y + a.w); return rtn; } /*static*/ const iVector2 cInside::Inside(const SDL_Rect& a, const iVector4& b) { iVector4 temp = a; return cInside::Inside(temp, b); } /*static*/ const iVector2 cInside::Inside(const iVector4& a, const SDL_Rect& b) { return cInside::Inside(b, a); } /*static*/ const Vector2 cInside::Inside(const iVector4& a, const Vector4& b) { Vector4 temp = a; return cInside::Inside(temp, b); } /*static*/ const Vector2 cInside::Inside(const Vector4& a, const iVector4& b) { return cInside::Inside(b, a); }