fix(chnk visibility) Use long to avoid int overflow

Use long representation of the distance between tested chunk and center of tested limit to avoid int overflow while computing the distance compared to limit radius using square delta value
This commit is contained in:
gmfamily 2022-08-31 19:35:18 +02:00 committed by GitHub
parent 66fe5d4a8b
commit 61bfe66430
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,7 +25,11 @@ public class RoundVisibilityLimit implements VisibilityLimit {
else
chunk_corner_z = chunk_z * 16 + 15;
return (chunk_corner_x - x_center) * (chunk_corner_x - x_center) + (chunk_corner_z - z_center) * (chunk_corner_z - z_center) < radius * radius;
// By gmfamily - Use long representation of the distance between tested chunk and center of tested limit
// to avoid int overflow while computing the distance compared to limit radius using square delta value
long chunk_delta_x = chunk_corner_x - x_center;
long chunk_delta_z = chunk_corner_z - z_center;
return chunk_delta_x * chunk_delta_x + chunk_delta_z * chunk_delta_z < (long) radius * radius;
}
@Override