| | 1 | | using UnityEngine; |
| | 2 | |
|
| | 3 | | namespace DCLServices.MapRendererV2.Culling |
| | 4 | | { |
| | 5 | | internal class MapCullingRectVisibilityChecker : IMapCullingVisibilityChecker |
| | 6 | | { |
| | 7 | | internal readonly float size; |
| | 8 | |
|
| 97 | 9 | | internal MapCullingRectVisibilityChecker(float size) |
| | 10 | | { |
| 97 | 11 | | this.size = size; |
| 97 | 12 | | } |
| | 13 | |
|
| | 14 | | public bool IsVisible<T>(T obj, CameraState cameraState) where T: IMapPositionProvider |
| | 15 | | { |
| 0 | 16 | | var objSize = Vector2.one * size; |
| 0 | 17 | | return Intersects(cameraState.Rect, new Rect((Vector2) obj.CurrentPosition - (objSize / 2f), objSize)); |
| | 18 | | } |
| | 19 | |
|
| | 20 | | private static bool Intersects(Rect r1, Rect r2) => |
| 0 | 21 | | r1.min.x <= r2.max.x |
| | 22 | | && r1.max.x >= r2.min.x |
| | 23 | | && r1.min.y <= r2.max.y |
| | 24 | | && r1.max.y >= r2.min.y; |
| | 25 | | } |
| | 26 | | } |