#pragma once #include #include "../Math/Vec2.h" #include "../Global/Globals.h" /* * The axis aligned bounding box contains * two vectors to represent the top left * and bottom right of a box. This can * then be used to calculate collision * against other bounding box's. */ struct SDL_Surface; class Texture; class AABB { public: AABB(void); AABB(Vec2 &min, Vec2 &max); ~AABB(void); Vec2 GetMax(void) { return _max; } void SetMax(Vec2 &max) { SetMax(max.x, max.y); } void SetMax(float maxX, float maxY) { _max.x = maxX; _max.y = maxY; _staticMax = _max; } Vec2 GetMin(void) { return _min; } void SetMin(Vec2 &min) { SetMin(min.x, min.y); } void SetMin(float minX, float minY) { _min.x = minX; _min.y = minY; _staticMin = _min; } void SetRelativePosition(float x, float y); void SetPositionOffset(float x, float y); bool InCollision(AABB* otherAABB); void CreateAABBFromSprite(const char* filename); void Render(void); private: Vec2 _min; Vec2 _max; Vec2 _staticMin; Vec2 _staticMax; SDL_Surface* _surface; Texture* _texture; };