< Summary

Class:DCL.ECSComponents.UIPointerEventsHandler
Assembly:DCL.ECSComponents.PointerEvents
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/PointerEvents/UIPointerEventsHandler.cs
Covered lines:7
Uncovered lines:8
Coverable lines:15
Total lines:53
Line coverage:46.6% (7 of 15)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
UIPointerEventsHandler(...)0%110100%
OnComponentCreated(...)0%110100%
OnComponentRemoved(...)0%6200%
OnComponentModelUpdated(...)0%9.665042.86%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/PointerEvents/UIPointerEventsHandler.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.ECS7.InternalComponents;
 3using DCL.ECSComponents.UIAbstractElements;
 4using DCL.ECSRuntime;
 5using DCL.Models;
 6
 7namespace DCL.ECSComponents
 8{
 9    /// <summary>
 10    /// Adds interactivity to UI components
 11    /// </summary>
 12    public class UIPointerEventsHandler : UIElementHandlerBase, IECSComponentHandler<PBPointerEvents>
 13    {
 14        private UIEventsSubscriptions eventsSubscriptions;
 15
 16        private readonly IInternalECSComponent<InternalInputEventResults> internalInputResults;
 17
 18        public UIPointerEventsHandler(
 19            IInternalECSComponent<InternalInputEventResults> internalInputResults,
 20            IInternalECSComponent<InternalUiContainer> internalUiContainer,
 621            int componentId) : base(internalUiContainer, componentId)
 22        {
 623            this.internalInputResults = internalInputResults;
 624        }
 25
 626        public void OnComponentCreated(IParcelScene scene, IDCLEntity entity) { }
 27
 28        public void OnComponentRemoved(IParcelScene scene, IDCLEntity entity)
 29        {
 030            RemoveComponentFromEntity(scene, entity);
 031            eventsSubscriptions?.Dispose();
 032            eventsSubscriptions = null;
 033        }
 34
 35        public void OnComponentModelUpdated(IParcelScene scene, IDCLEntity entity, PBPointerEvents model)
 36        {
 37            // PBPointerEvents is used for both 3D objects and UI
 38            // but for the former the handler is not needed.
 39            // TODO: how to avoid allocation of this class?
 40
 641            var containerModel = internalUiContainer.GetFor(scene, entity)?.model;
 42            // if container model is null it's not a UI entity or it does not contain a root element
 643            if (containerModel == null)
 644                return;
 45
 046            if (containerModel.components.Add(componentId))
 47            {
 048                eventsSubscriptions = UIPointerEventsUtils.AddCommonInteractivity(containerModel.rootElement, scene, ent
 049                internalUiContainer.PutFor(scene, entity, containerModel);
 50            }
 051        }
 52    }
 53}