Expand quadtree range for platform contact.
This commit is contained in:
parent
4cd3322799
commit
d8c9337a2e
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue