< 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:59
Uncovered lines:5
Coverable lines:64
Total lines:116
Line coverage:92.1% (59 of 64)
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%880100%
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            if (voiceChatCanvasGroup != null)
 30855                voiceChatCanvasGroup.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 30856        }
 57
 58        public void SetPlayer(Player newPlayer)
 59        {
 660            player = newPlayer;
 661            if (player == null)
 162                return;
 63
 564            name.text = newPlayer.name;
 565            name.ForceMeshUpdate(); //To get the new bounds
 566            UpdatePosition();
 567        }
 68
 69        public void UpdatePosition()
 70        {
 671            if (mainCamera == null)
 172                mainCamera = Camera.main;
 73
 674            if (player == null || mainCamera == null)
 075                return;
 76
 677            Vector3 screenPoint = mainCamera == null ? Vector3.zero : mainCamera.WorldToViewportPoint(player.worldPositi
 678            float lodDistance = DataStore.i.avatarsLOD.LODDistance.Get();
 679            float startingFade = lodDistance * 0.75f;
 680            float alpha = DataStore.i.HUDs.avatarNamesOpacity.Get() * Mathf.Lerp(1, 0, (screenPoint.z - startingFade) / 
 81
 682            if (screenPoint.z > 0)
 83            {
 484                screenPoint.Scale(canvasRect.rect.size);
 485                name.rectTransform.anchoredPosition = screenPoint;
 486                background.rectTransform.anchoredPosition = screenPoint;
 487                background.rectTransform.sizeDelta = new Vector2(name.textBounds.extents.x * 2.5f, 30);
 488                Vector2 voiceChatOffset = -Vector2.Scale(Vector2.right, background.rectTransform.sizeDelta) * 0.5f;
 489                (voiceChatCanvasGroup.transform as RectTransform).anchoredPosition = background.rectTransform.anchoredPo
 90
 491                voiceChatCanvasGroup.alpha = alpha;
 492                name.color = new Color(name.color.r, name.color.g, name.color.b, alpha);
 493                backgroundCanvasGroup.alpha = alpha;
 494                voiceChatCanvasGroup?.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 495                voiceChatAnimator.SetBool(VOICE_CHAT_ANIMATOR_TALKING, player.isTalking);
 96
 497                background.gameObject.SetActive(visibility);
 498                name.gameObject.SetActive(visibility);
 499                voiceChatCanvasGroup.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 4100            }
 101            else
 102            {
 2103                background.gameObject.SetActive(false);
 2104                name.gameObject.SetActive(false);
 2105                voiceChatCanvasGroup.gameObject.SetActive(false);
 106            }
 2107        }
 108
 109        public void DestroyUIElements()
 110        {
 0111            GameObject.Destroy(background.gameObject);
 0112            Object.Destroy(name.gameObject);
 0113            Object.Destroy(voiceChatCanvasGroup.gameObject);
 0114        }
 115    }
 116}