< 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:46
Uncovered lines:9
Coverable lines:55
Total lines:104
Line coverage:83.6% (46 of 55)
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%770100%
SetPlayer(...)0%220100%
UpdatePosition()0%17.8216080.77%
DestroyUIElements()0%2100%

File(s)

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

#LineLine coverage
 1using TMPro;
 2using UnityEngine;
 3using UnityEngine.UI;
 4
 5namespace AvatarNamesHUD
 6{
 7    public class AvatarNamesTracker
 8    {
 19        private static readonly Vector3 OFFSET = new Vector3(0, 3f, 0);
 110        private static readonly int VOICE_CHAT_ANIMATOR_TALKING = Animator.StringToHash("Talking");
 11        private const float NAME_VANISHING_POINT_DISTANCE = 15.0f;
 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
 21225        public AvatarNamesTracker(RectTransform canvasRect, RectTransform backgroundRect, RectTransform nameRect, RectTr
 26        {
 21227            this.canvasRect = canvasRect;
 21228            backgroundCanvasGroup = backgroundRect.GetComponent<CanvasGroup>();
 21229            background = backgroundRect.GetComponent<Image>();
 21230            name = nameRect.GetComponent<TextMeshProUGUI>();
 21231            voiceChatCanvasGroup = voiceChatRect.GetComponent<CanvasGroup>();
 21232            voiceChatAnimator = voiceChatRect.GetComponent<Animator>();
 21233        }
 34
 35        public void SetVisibility(bool visible)
 36        {
 21737            visibility = visible;
 38
 21739            if ( background != null )
 21740                background.gameObject.SetActive(visibility);
 41
 21742            if ( name != null )
 21743                name.gameObject.SetActive(visibility);
 44
 21745            voiceChatCanvasGroup.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 21746        }
 47
 48        public void SetPlayer(Player newPlayer)
 49        {
 550            player = newPlayer;
 551            if (player == null)
 152                return;
 53
 454            name.text = newPlayer.name;
 455            name.ForceMeshUpdate(); //To get the new bounds
 456            UpdatePosition();
 457        }
 58
 59        public void UpdatePosition()
 60        {
 3961            if (mainCamera == null)
 162                mainCamera = Camera.main;
 63
 3964            if (player == null || mainCamera == null)
 065                return;
 66
 3967            Vector3 screenPoint = mainCamera == null ? Vector3.zero : mainCamera.WorldToViewportPoint(player.worldPositi
 3968            float alpha = screenPoint.z < 0 ? 0 : 1.0f + (1.0f - (screenPoint.z / NAME_VANISHING_POINT_DISTANCE));
 69
 3970            if (screenPoint.z > 0)
 71            {
 3972                screenPoint.Scale(canvasRect.rect.size);
 3973                name.rectTransform.anchoredPosition = screenPoint;
 3974                background.rectTransform.anchoredPosition = screenPoint;
 3975                background.rectTransform.sizeDelta = new Vector2(name.textBounds.extents.x * 2.5f, 30);
 3976                Vector2 voiceChatOffset = -Vector2.Scale(Vector2.right, background.rectTransform.sizeDelta) * 0.5f;
 3977                (voiceChatCanvasGroup.transform as RectTransform).anchoredPosition = background.rectTransform.anchoredPo
 78
 3979                voiceChatCanvasGroup.alpha = alpha;
 3980                name.color = new Color(name.color.r, name.color.g, name.color.b, alpha);
 3981                backgroundCanvasGroup.alpha = alpha;
 3982                voiceChatCanvasGroup?.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 3983                voiceChatAnimator.SetBool(VOICE_CHAT_ANIMATOR_TALKING, player.isTalking);
 84
 3985                background.gameObject.SetActive(visibility);
 3986                name.gameObject.SetActive(visibility);
 3987                voiceChatCanvasGroup.gameObject.SetActive(visibility && (player?.isTalking ?? false));
 3988            }
 89            else
 90            {
 091                background.gameObject.SetActive(false);
 092                name.gameObject.SetActive(false);
 093                voiceChatCanvasGroup.gameObject.SetActive(false);
 94            }
 095        }
 96
 97        public void DestroyUIElements()
 98        {
 099            GameObject.Destroy(background.gameObject);
 0100            Object.Destroy(name.gameObject);
 0101            Object.Destroy(voiceChatCanvasGroup.gameObject);
 0102        }
 103    }
 104}