< Summary

Class:AvatarNamesHUD.AvatarNamesTracker
Assembly:AvatarNamesHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarNamesHUD/AvatarNamesTracker.cs
Covered lines:58
Uncovered lines:5
Coverable lines:63
Total lines:115
Line coverage:92% (58 of 63)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AvatarNamesTracker()0%110100%
AvatarNamesTracker(...)0%110100%
SetVisibility(...)0%220100%
UpdateElementsVisibility()0%770100%
SetPlayer(...)0%220100%
UpdatePosition()0%15.0115096.43%
DestroyUIElements()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarNamesHUD/AvatarNamesTracker.cs

#LineLine coverage
 1using DCL;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace AvatarNamesHUD
 7{
 8    public class AvatarNamesTracker
 9    {
 110        private static readonly Vector3 OFFSET = new Vector3(0, 3f, 0);
 111        private static readonly int VOICE_CHAT_ANIMATOR_TALKING = Animator.StringToHash("Talking");
 12
 13        internal readonly RectTransform canvasRect;
 14        internal readonly Image background;
 15        internal readonly CanvasGroup backgroundCanvasGroup;
 16        internal readonly TextMeshProUGUI name;
 17        internal readonly CanvasGroup voiceChatCanvasGroup;
 18        internal readonly Animator voiceChatAnimator;
 19
 20        internal Player player;
 21        internal bool visibility = false;
 22
 123        private static Camera mainCamera = null;
 24
 30025        public AvatarNamesTracker(RectTransform canvasRect, RectTransform backgroundRect, RectTransform nameRect, RectTr
 26        {
 30027            this.canvasRect = canvasRect;
 30028            backgroundCanvasGroup = backgroundRect.GetComponent<CanvasGroup>();
 30029            background = backgroundRect.GetComponent<Image>();
 30030            name = nameRect.GetComponent<TextMeshProUGUI>();
 30031            voiceChatCanvasGroup = voiceChatRect.GetComponent<CanvasGroup>();
 30032            voiceChatAnimator = voiceChatRect.GetComponent<Animator>();
 33
 30034            visibility = false;
 30035            UpdateElementsVisibility();
 30036        }
 37
 38        public void SetVisibility(bool visible)
 39        {
 34140            if (visibility == visible)
 33341                return;
 842            visibility = visible;
 843            UpdateElementsVisibility();
 844        }
 45
 46        private void UpdateElementsVisibility()
 47        {
 30848            if ( background != null )
 30849                background.gameObject.SetActive(visibility);
 50
 30851            if ( name != null )
 30852                name.gameObject.SetActive(visibility);
 53
 30854            voiceChatCanvasGroup.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 30855        }
 56
 57        public void SetPlayer(Player newPlayer)
 58        {
 659            player = newPlayer;
 660            if (player == null)
 161                return;
 62
 563            name.text = newPlayer.name;
 564            name.ForceMeshUpdate(); //To get the new bounds
 565            UpdatePosition();
 566        }
 67
 68        public void UpdatePosition()
 69        {
 670            if (mainCamera == null)
 171                mainCamera = Camera.main;
 72
 673            if (player == null || mainCamera == null)
 074                return;
 75
 676            Vector3 screenPoint = mainCamera == null ? Vector3.zero : mainCamera.WorldToViewportPoint(player.worldPositi
 677            float lodDistance = DataStore.i.avatarsLOD.LODDistance.Get();
 678            float startingFade = lodDistance * 0.75f;
 679            float alpha = Mathf.Lerp(1, 0, (screenPoint.z - startingFade) / (lodDistance - startingFade)); //Lerp just a
 80
 681            if (screenPoint.z > 0)
 82            {
 483                screenPoint.Scale(canvasRect.rect.size);
 484                name.rectTransform.anchoredPosition = screenPoint;
 485                background.rectTransform.anchoredPosition = screenPoint;
 486                background.rectTransform.sizeDelta = new Vector2(name.textBounds.extents.x * 2.5f, 30);
 487                Vector2 voiceChatOffset = -Vector2.Scale(Vector2.right, background.rectTransform.sizeDelta) * 0.5f;
 488                (voiceChatCanvasGroup.transform as RectTransform).anchoredPosition = background.rectTransform.anchoredPo
 89
 490                voiceChatCanvasGroup.alpha = alpha;
 491                name.color = new Color(name.color.r, name.color.g, name.color.b, alpha);
 492                backgroundCanvasGroup.alpha = alpha;
 493                voiceChatCanvasGroup?.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 494                voiceChatAnimator.SetBool(VOICE_CHAT_ANIMATOR_TALKING, player.isTalking);
 95
 496                background.gameObject.SetActive(visibility);
 497                name.gameObject.SetActive(visibility);
 498                voiceChatCanvasGroup.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 499            }
 100            else
 101            {
 2102                background.gameObject.SetActive(false);
 2103                name.gameObject.SetActive(false);
 2104                voiceChatCanvasGroup.gameObject.SetActive(false);
 105            }
 2106        }
 107
 108        public void DestroyUIElements()
 109        {
 0110            GameObject.Destroy(background.gameObject);
 0111            Object.Destroy(name.gameObject);
 0112            Object.Destroy(voiceChatCanvasGroup.gameObject);
 0113        }
 114    }
 115}