Move_to_contact: handle allowed overlap correctly
This commit is contained in:
		| @@ -88,8 +88,9 @@ game_collision game_collision_move_to_contact( | ||||
|         // figure out what tile we're still in | ||||
|         sys_i32 tile_x0 = round_down(body_x0, TILE_SZ_MICROPIXEL); | ||||
|         sys_i32 tile_y0 = round_down(body_y0, TILE_SZ_MICROPIXEL); | ||||
|         sys_i32 tile_x1 = round_up(body_x1, TILE_SZ_MICROPIXEL); | ||||
|         sys_i32 tile_y1 = round_up(body_y1, TILE_SZ_MICROPIXEL); | ||||
|         sys_i32 max_overlap = PIXEL_SZ_MICROPIXEL - 1; | ||||
|         sys_i32 tile_x1 = round_up(body_x1 - max_overlap, TILE_SZ_MICROPIXEL) + max_overlap; | ||||
|         sys_i32 tile_y1 = round_up(body_y1 - max_overlap, TILE_SZ_MICROPIXEL) + max_overlap; | ||||
|  | ||||
|         // but we want the _next_ tile | ||||
|         if (tile_x0 == body_x0) { tile_x0 -= TILE_SZ_MICROPIXEL; } | ||||
|   | ||||
| @@ -48,7 +48,7 @@ void game_player_update() { | ||||
|     if (collision.collided_y) { game_player_dy = 0; } | ||||
|  | ||||
|     game_player_grounded = !game_collision_can_move( | ||||
|         game_player_bbox, 0, PIXEL_SZ_MICROPIXEL | ||||
|         game_player_bbox, 0, 1 | ||||
|     ); | ||||
|  | ||||
|     { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user