< Summary

Class:DCL.Components.AvatarOnPointerDown
Assembly:MainScripts
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/UUIDComponent/AvatarOnPointerDown.cs
Covered lines:5
Uncovered lines:32
Coverable lines:37
Total lines:98
Line coverage:13.5% (5 of 37)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
GetActionButton()0%2100%
SetHoverState(...)0%2100%
Awake()0%110100%
OnDestroy()0%220100%
Initialize(...)0%12300%
IsAtHoverDistance(...)0%2100%
IsVisible()0%2100%
ShouldReportEvent(...)0%12300%
Report(...)0%30500%
GetEventType()0%2100%
ReEnableOnInfoCardClosed(...)0%6200%
GetTransform()0%2100%
OnPoolRelease()0%2100%
OnPoolGet()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/UUIDComponent/AvatarOnPointerDown.cs

#LineLine coverage
 1using DCL.Interface;
 2using UnityEngine;
 3using DCL.Helpers;
 4using DCL.Models;
 5using Ray = UnityEngine.Ray;
 6
 7namespace DCL.Components
 8{
 9    public class AvatarOnPointerDown : MonoBehaviour, IPointerEvent, IPoolLifecycleHandler
 10    {
 11        public new Collider collider;
 12        private OnPointerEvent.Model model;
 13        private OnPointerEventHandler eventHandler;
 014        public IDCLEntity entity { get; private set; }
 15        public event System.Action OnPointerDownReport;
 16
 017        public WebInterface.ACTION_BUTTON GetActionButton() { return model.GetActionButton(); }
 18
 019        public void SetHoverState(bool state) { eventHandler.SetFeedbackState(model.showFeedback, state, model.button, m
 20
 221        void Awake() { CommonScriptableObjects.playerInfoCardVisibleState.OnChange += ReEnableOnInfoCardClosed; }
 22
 23        void OnDestroy()
 24        {
 125            CommonScriptableObjects.playerInfoCardVisibleState.OnChange -= ReEnableOnInfoCardClosed;
 126            eventHandler?.Dispose();
 127            CollidersManager.i.RemoveEntityCollider(entity, collider);
 128        }
 29
 30        public void Initialize(OnPointerEvent.Model model, IDCLEntity entity)
 31        {
 032            this.model = model;
 033            this.entity = entity;
 34
 035            if (eventHandler == null)
 036                eventHandler = new OnPointerEventHandler();
 37
 038            eventHandler?.SetColliders(entity);
 039            CollidersManager.i.AddOrUpdateEntityCollider(entity, collider);
 040        }
 41
 042        public bool IsAtHoverDistance(float distance) { return distance <= model.distance; }
 43
 044        public bool IsVisible() { return true; }
 45
 46        public bool ShouldReportEvent(WebInterface.ACTION_BUTTON buttonId, HitInfo hit)
 47        {
 048            return IsAtHoverDistance(hit.distance) &&
 49                   (model.button == "ANY" || buttonId.ToString() == model.button);
 50        }
 51
 52        public void Report(WebInterface.ACTION_BUTTON buttonId, Ray ray, HitInfo hit)
 53        {
 054            if (!enabled)
 055                return;
 56
 057            if (ShouldReportEvent(buttonId, hit))
 58            {
 059                string meshName = null;
 60
 061                if (hit.collider != null)
 062                    meshName = eventHandler.GetMeshName(hit.collider);
 63
 064                WebInterface.ReportOnPointerDownEvent(
 65                    buttonId,
 66                    entity.scene.sceneData.id,
 67                    model.uuid,
 68                    entity.entityId,
 69                    meshName,
 70                    ray,
 71                    hit.point,
 72                    hit.normal,
 73                    hit.distance);
 74
 075                eventHandler.SetFeedbackState(model.showFeedback, false, model.button, model.hoverText);
 076                enabled = false;
 77
 078                OnPointerDownReport?.Invoke();
 79            }
 080        }
 81
 082        public PointerEventType GetEventType() { return PointerEventType.DOWN; }
 83
 84        void ReEnableOnInfoCardClosed(bool newState, bool prevState)
 85        {
 086            if (enabled || newState)
 087                return;
 88
 089            enabled = true;
 090        }
 91
 092        public Transform GetTransform() { return transform; }
 93
 094        public void OnPoolRelease() { eventHandler.Dispose(); }
 95
 096        public void OnPoolGet() { }
 97    }
 98}