< Summary

Class:InteractionHoverCanvasController
Assembly:DCL.Components.Events
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InteractionHoverCanvas/InteractionHoverCanvasController.cs
Covered lines:50
Uncovered lines:9
Coverable lines:59
Total lines:142
Line coverage:84.7% (50 of 59)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%110100%
OnDestroy()0%2.012085.71%
OnChangeFeedbackHoverState(...)0%110100%
OnChangeFeedbackEnabled(...)0%110100%
OnChangeFeedbackText(...)0%110100%
OnChangeFeedbackButton(...)0%110100%
Setup(...)0%2100%
ConfigureIcon(...)0%6.25063.64%
SetHoverState(...)0%330100%
GetCurrentHoverIcon()0%110100%
UpdateCanvas()0%440100%
Update()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InteractionHoverCanvas/InteractionHoverCanvasController.cs

#LineLine coverage
 1using UnityEngine;
 2using TMPro;
 3using DCL;
 4using DCL.Helpers;
 5
 6public class InteractionHoverCanvasController : MonoBehaviour
 7{
 8    public Canvas canvas;
 9    public RectTransform backgroundTransform;
 10    public TextMeshProUGUI text;
 11    public GameObject[] icons;
 12    public RectTransform anchor;
 13    private Vector2 defaultAnchorOffset;
 14
 15    bool isHovered = false;
 16    GameObject hoverIcon;
 17    private Vector3 meshCenteredPos;
 18
 19    const string ACTION_BUTTON_POINTER = "POINTER";
 20    const string ACTION_BUTTON_PRIMARY = "PRIMARY";
 21    const string ACTION_BUTTON_SECONDARY = "SECONDARY";
 22
 23    private DataStore_Cursor dataStore;
 24
 25    void Awake()
 26    {
 8527        defaultAnchorOffset = anchor.anchoredPosition;
 8528        dataStore = DataStore.i.Get<DataStore_Cursor>();
 8529        backgroundTransform.gameObject.SetActive(false);
 30
 8531        dataStore.hoverFeedbackButton.OnChange += OnChangeFeedbackButton;
 8532        dataStore.hoverFeedbackText.OnChange += OnChangeFeedbackText;
 8533        dataStore.hoverFeedbackEnabled.OnChange += OnChangeFeedbackEnabled;
 8534        dataStore.hoverFeedbackHoverState.OnChange += OnChangeFeedbackHoverState;
 35
 8536        UpdateCanvas();
 8537    }
 38
 39    private void OnDestroy()
 40    {
 8541        if (dataStore == null)
 042            return;
 43
 8544        dataStore.hoverFeedbackButton.OnChange -= OnChangeFeedbackButton;
 8545        dataStore.hoverFeedbackText.OnChange -= OnChangeFeedbackText;
 8546        dataStore.hoverFeedbackEnabled.OnChange -= OnChangeFeedbackEnabled;
 8547        dataStore.hoverFeedbackHoverState.OnChange -= OnChangeFeedbackHoverState;
 8548    }
 49
 50    private void OnChangeFeedbackHoverState(bool current, bool previous)
 51    {
 1652        SetHoverState(current);
 1653    }
 54
 55    private void OnChangeFeedbackEnabled(bool current, bool previous)
 56    {
 1457        enabled = current;
 1458        UpdateCanvas();
 1459    }
 60
 61    private void OnChangeFeedbackText(string current, string previous)
 62    {
 1363        text.text = current;
 1364        UpdateCanvas();
 1365    }
 66
 67    private void OnChangeFeedbackButton(string current, string previous)
 68    {
 1369        ConfigureIcon(current);
 1370        UpdateCanvas();
 1371    }
 72
 73    public void Setup(string button, string feedbackText)
 74    {
 075        text.text = feedbackText;
 076        ConfigureIcon(button);
 077        UpdateCanvas();
 078    }
 79
 80    void ConfigureIcon(string button)
 81    {
 1382        hoverIcon?.SetActive(false);
 83
 84        switch (button)
 85        {
 86            case ACTION_BUTTON_POINTER:
 087                hoverIcon = icons[0];
 088                break;
 89            case ACTION_BUTTON_PRIMARY:
 190                hoverIcon = icons[1];
 191                break;
 92            case ACTION_BUTTON_SECONDARY:
 093                hoverIcon = icons[2];
 094                break;
 95            default: // ANY
 1296                hoverIcon = icons[3];
 97                break;
 98        }
 99
 13100        hoverIcon.SetActive(true);
 13101        backgroundTransform.gameObject.SetActive(true);
 13102    }
 103
 104    public void SetHoverState(bool hoverState)
 105    {
 1662106        if (!enabled || hoverState == isHovered)
 1646107            return;
 108
 16109        isHovered = hoverState;
 16110        UpdateCanvas();
 16111    }
 112
 113    public GameObject GetCurrentHoverIcon()
 114    {
 3115        return hoverIcon;
 116    }
 117
 118    void UpdateCanvas()
 119    {
 141120        bool newValue = enabled && isHovered;
 121
 141122        if (canvas.enabled != newValue)
 101123            canvas.enabled = newValue;
 141124    }
 125
 126    private void Update()
 127    {
 19225128        if (Utils.IsCursorLocked)
 129        {
 16785130            anchor.anchoredPosition = defaultAnchorOffset;
 16785131            return;
 132        }
 133
 2440134        RectTransformUtility.ScreenPointToLocalPointInRectangle(
 135            (RectTransform)canvas.transform,
 136            Input.mousePosition, canvas.worldCamera,
 137            out Vector2 movePos);
 138
 2440139        anchor.position = canvas.transform.TransformPoint(movePos);
 2440140        anchor.anchoredPosition += defaultAnchorOffset;
 2440141    }
 142}