@@ -242,7 +242,7 @@ void MapRayCast(MapRay ray) {
242242 int i = 0 ;
243243 while (!ray -> is_colliding ) {
244244 MapRayHitSide hitSide ;
245-
245+
246246 if (sideDistX < sideDistY ) {
247247 sideDistX += deltaDistX ;
248248 mapX += sideX ;
@@ -256,8 +256,15 @@ void MapRayCast(MapRay ray) {
256256 }
257257
258258 ray -> is_colliding = MapGetTile (ray -> map , mapX , mapY ) != TILE_GROUND ;
259+
260+ if (!ray -> is_colliding ) {
261+ if (i == MAX_RAY_STEPS ) {
262+ break ;
263+ }
264+ i ++ ;
265+ continue ;
266+ }
259267
260- // If the colliding tile is transparent, then just continue
261268 if (ray -> is_colliding ) {
262269 // Calculate billboard collisions first because they are before the wall
263270 // Get possible Billboard collisions
@@ -312,7 +319,6 @@ void MapRayCast(MapRay ray) {
312319
313320 ListDestroy (& billboards );
314321
315-
316322 Tile collidingTile = MapGetTileObject (ray -> map , MapGetTile (ray -> map , mapX , mapY ));
317323 rayCollision * col = malloc (sizeof (rayCollision ));
318324 * col = (rayCollision ) {
@@ -325,8 +331,8 @@ void MapRayCast(MapRay ray) {
325331 .hitSide = hitSide
326332 };
327333 ListAppendFirst (ray -> collisions , col );
334+ // If the colliding tile is transparent, then just continue
328335 ray -> is_colliding = !TileIsTransparent (collidingTile );
329-
330336 }
331337
332338 if (i == MAX_RAY_STEPS ) {
0 commit comments