From c1b19ea1786a8443f40dd3526102ebef8ee03a7b Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Thu, 12 Apr 2012 00:33:44 +0100 Subject: [PATCH] [Add] Working on AABB, trying to find the top left and bottom right of a surface. --- src/Collision/AABB.cpp | 16 +++++++++++++++- src/Collision/AABB.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Collision/AABB.cpp b/src/Collision/AABB.cpp index 0253e29..dead861 100644 --- a/src/Collision/AABB.cpp +++ b/src/Collision/AABB.cpp @@ -64,9 +64,23 @@ void AABB::CreateAABBFromSprite(const char* filename) { // Find the min, look through until we find a first instance of a white color. bool found = false; int color = 0; + DWORD* pixels = (DWORD*)screen->pixels; + for(int width = 0; width < _sprite->GetWidth(); width++) { for(int height = 0; height < _sprite->GetHeight(); height++) { - DWORD offset; + // FUCKING PAIN IN THE ASS MOTHERFUCKER!!!! + DWORD offset = height * screen->pitch + width; + if(((DWORD)pixels[offset]) != 0 && !found) { + _min = Vec2((float)width, (float)height); + found = true; + color = ((DWORD)pixels[offset]); + // Break out of these god forsaken loops. + width = _sprite->GetWidth(); + height = _sprite->GetHeight(); + } } } + + // Let's try to find the max.x now.. + _max.x = (float)_sprite->GetWidth(); } diff --git a/src/Collision/AABB.h b/src/Collision/AABB.h index 0098673..3dfb289 100644 --- a/src/Collision/AABB.h +++ b/src/Collision/AABB.h @@ -3,6 +3,7 @@ #include "../Math/Vec2.h" #include "../Sprite/Sprite.h" +#include "../Global/Globals.h" /* * The axis aligned bounding box contains