< Summary

Class:DCLServices.MapRendererV2.CoordsUtils.ChunkCoordsUtils
Assembly:MapRendererV2
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/MapRendererV2/CoordsUtils/ChunkCoordsUtils.cs
Covered lines:17
Uncovered lines:12
Coverable lines:29
Total lines:74
Line coverage:58.6% (17 of 29)
Covered branches:0
Total branches:0
Covered methods:6
Total methods:12
Method coverage:50% (6 of 12)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ChunkCoordsUtils()0%110100%
ChunkCoordsUtils(...)0%110100%
TryGetCoordsWithinInteractableBounds(...)0%12300%
PositionToCoords(...)0%2100%
PositionToCoordsUnclamped(...)0%2100%
CoordsToPositionUnclamped(...)0%2100%
CoordsToPosition(...)0%110100%
CoordsToPositionWithOffset(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/MapRendererV2/CoordsUtils/ChunkCoordsUtils.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using UnityEngine;
 4
 5namespace DCLServices.MapRendererV2.CoordsUtils
 6{
 7    internal class ChunkCoordsUtils : ICoordsUtils
 8    {
 19        private static readonly Vector2Int WORLD_MIN_COORDS = new (-150, -150);
 110        private static readonly Vector2Int WORLD_MAX_COORDS = new (175, 175); // DCL map is not squared, there are some 
 11
 112        private static readonly Vector2Int VISIBLE_WORLD_MIN_COORDS = new (-175, -175);
 113        private static readonly Vector2Int VISIBLE_WORLD_MAX_COORDS = new (175, 175); // DCL map is not squared, there a
 14
 115        private static readonly Rect[] INTERACTABLE_WORLD_BOUNDS =
 16        {
 17            Rect.MinMaxRect(-150, -150, 150, 150),
 18            Rect.MinMaxRect(62, 151, 162, 158),
 19            Rect.MinMaxRect(151, 59, 163, 150)
 20        };
 21
 22        private readonly List<Rect> interactableWorldBoundsInLocalCoordinates;
 23
 39824        public Vector2Int WorldMinCoords => WORLD_MIN_COORDS;
 86625        public Vector2Int WorldMaxCoords => WORLD_MAX_COORDS;
 26
 2809927        public int ParcelSize { get; }
 028        public Rect VisibleWorldBounds { get; }
 29
 9730        public ChunkCoordsUtils(int parcelSize)
 31        {
 9732            ParcelSize = parcelSize;
 33
 9734            var min = (VISIBLE_WORLD_MIN_COORDS - Vector2Int.one) * parcelSize;
 9735            var max = VISIBLE_WORLD_MAX_COORDS * parcelSize;
 9736            VisibleWorldBounds = Rect.MinMaxRect(min.x, min.y, max.x, max.y);
 37
 9738            interactableWorldBoundsInLocalCoordinates = INTERACTABLE_WORLD_BOUNDS
 29139                                                       .Select(chunk => Rect.MinMaxRect((chunk.xMin - 1) * parcelSize, (
 40                                                       .ToList();
 9741        }
 42
 43        public bool TryGetCoordsWithinInteractableBounds(Vector3 pos, out Vector2Int coords)
 44        {
 045            coords = default;
 46
 047            foreach (Rect rect in interactableWorldBoundsInLocalCoordinates)
 48            {
 049                if (rect.Contains(pos))
 50                {
 051                    coords = PositionToCoords(pos);
 052                    return true;
 53                }
 54            }
 55
 056            return false;
 057        }
 58
 59        public Vector2Int PositionToCoords(Vector3 pos) =>
 060            new (Mathf.CeilToInt(pos.x / ParcelSize), Mathf.CeilToInt(pos.y / ParcelSize));
 61
 62        public Vector2 PositionToCoordsUnclamped(Vector3 pos) =>
 063            pos / ParcelSize;
 64
 65        public Vector3 CoordsToPositionUnclamped(Vector2 coords) =>
 066            coords * ParcelSize;
 67
 68        public Vector3 CoordsToPosition(Vector2Int coords) =>
 9669            (Vector2)(coords * ParcelSize);
 70
 71        public Vector3 CoordsToPositionWithOffset(Vector2 coords) =>
 072            (coords * ParcelSize) - new Vector2(ParcelSize / 2f, ParcelSize / 2f);
 73    }
 74}