< Summary

Class:DCLServices.MapRendererV2.ConsumerUtils.PixelPerfectMapRendererTextureProvider
Assembly:MapRendererConsumerUtils
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/MapRendererV2/ConsumerUtils/PixelPerfectMapRendererTextureProvider.cs
Covered lines:17
Uncovered lines:4
Coverable lines:21
Total lines:66
Line coverage:80.9% (17 of 21)
Covered branches:0
Total branches:0
Covered methods:7
Total methods:8
Method coverage:87.5% (7 of 8)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PixelPerfectMapRendererTextureProvider()0%110100%
Activate(...)0%110100%
SetHudCamera(...)0%110100%
Deactivate()0%110100%
GetPixelPerfectTextureResolution()0%110100%
OnRectTransformDimensionsChange()0%2.862040%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/MapRendererV2/ConsumerUtils/PixelPerfectMapRendererTextureProvider.cs

#LineLine coverage
 1using DCLServices.MapRendererV2.MapCameraController;
 2using System;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace DCLServices.MapRendererV2.ConsumerUtils
 7{
 8    [RequireComponent(typeof(RawImage))]
 9    [RequireComponent(typeof(RectTransform))]
 10    public class PixelPerfectMapRendererTextureProvider : MonoBehaviour
 11    {
 12        [NonSerialized]
 13        private RectTransform cachedRectTransform;
 2014        private RectTransform rectTransform => cachedRectTransform ??= (RectTransform)transform;
 15
 16        private RawImage rawImage;
 017        private RawImage targetImage => rawImage ??= GetComponent<RawImage>();
 18
 19        private IMapCameraController cameraController;
 20        private Camera hudCamera;
 21
 122        private static Vector3[] worldCorners = new Vector3[4];
 23
 24        public void Activate(IMapCameraController cameraController)
 25        {
 1026            this.cameraController = cameraController;
 1027        }
 28
 29        public void SetHudCamera(Camera hudCamera)
 30        {
 1131            this.hudCamera = hudCamera;
 1132        }
 33
 34        public void Deactivate()
 35        {
 1036            cameraController = null;
 1037        }
 38
 39        public Vector2Int GetPixelPerfectTextureResolution()
 40        {
 41            // assumes CanvasScale Match Height = 1;
 42
 1043            var rectSize = rectTransform.rect.size;
 1044            var ratio = rectSize.x / rectSize.y;
 45
 46            // translate rect to screen space
 1047            rectTransform.GetWorldCorners(worldCorners);
 48
 1049            Vector2 bottomLeft = RectTransformUtility.WorldToScreenPoint(hudCamera, worldCorners[0]);
 1050            Vector2 topRight = RectTransformUtility.WorldToScreenPoint(hudCamera, worldCorners[2]);
 51
 1052            var screenSize = topRight - bottomLeft;
 1053            return new Vector2Int((int) screenSize.x, (int) screenSize.y);
 54        }
 55
 56        private void OnRectTransformDimensionsChange()
 57        {
 3558            if (cameraController == null)
 3559                return;
 60
 061            cameraController.ResizeTexture(GetPixelPerfectTextureResolution());
 62
 063            targetImage.SetAllDirty();
 064        }
 65    }
 66}