Expand quadtree range for platform contact.

This commit is contained in:
Steve 2018-02-09 08:21:08 +00:00
parent 4cd3322799
commit d8c9337a2e
1 changed files with 8 additions and 6 deletions

View File

@ -37,7 +37,6 @@ static void compareEnvironments(void);
static int getMarkerType(void); static int getMarkerType(void);
static int drawComparator(const void *a, const void *b); static int drawComparator(const void *a, const void *b);
static SDL_Rect srcRect;
static Entity *riders[MAX_RIDERS]; static Entity *riders[MAX_RIDERS];
static Entity *touched[MAX_TOUCHED]; static Entity *touched[MAX_TOUCHED];
static Texture *atlasTexture; static Texture *atlasTexture;
@ -304,11 +303,12 @@ static void checkPlatformContact(void)
Entity *e; Entity *e;
Entity **candidates; Entity **candidates;
int i; int i;
SDL_Rect srcRect;
srcRect.x = self->x; srcRect.x = self->x - MAP_TILE_SIZE;
srcRect.y = self->y + 4; srcRect.y = self->y - MAP_TILE_SIZE;
srcRect.w = self->w; srcRect.w = self->w + MAP_TILE_SIZE * 2;
srcRect.h = self->h; srcRect.h = self->h + MAP_TILE_SIZE * 2;
candidates = getAllEntsWithin(srcRect.x, srcRect.y, srcRect.w, srcRect.h, NULL); candidates = getAllEntsWithin(srcRect.x, srcRect.y, srcRect.w, srcRect.h, NULL);
@ -319,7 +319,7 @@ static void checkPlatformContact(void)
continue; continue;
} }
if (e->y > self->y + self->h - (8 + self->dy) && collision(srcRect.x, srcRect.y, srcRect.w, srcRect.h, e->x, e->y, e->w, e->h)) if (e->y > self->y + self->h - (8 + self->dy) && collision(self->x, self->y + 4, self->w, self->h, e->x, e->y, e->w, e->h))
{ {
self->riding = e; self->riding = e;
self->isOnGround = 1; self->isOnGround = 1;
@ -490,6 +490,7 @@ static int canWalkOnEntity(float x, float y)
int i; int i;
Entity *e; Entity *e;
Entity **candidates; Entity **candidates;
SDL_Rect srcRect;
srcRect.x = x; srcRect.x = x;
srcRect.x = y; srcRect.x = y;
@ -514,6 +515,7 @@ static void moveToOthers(float dx, float dy, PointF *position)
Entity *e; Entity *e;
Entity **candidates; Entity **candidates;
int clearTouched, hit, dirX, dirY, solidLoopHits, i; int clearTouched, hit, dirX, dirY, solidLoopHits, i;
SDL_Rect srcRect;
srcRect.x = (int) position->x; srcRect.x = (int) position->x;
srcRect.y = (int) position->y; srcRect.y = (int) position->y;