< Summary

Class:ECSSystems.InputSenderSystem.ECSInputSenderSystem
Assembly:ECS7Plugin.Systems.InputSender
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/InputSenderSystem/ECSInputSenderSystem.cs
Covered lines:6
Uncovered lines:9
Coverable lines:15
Total lines:67
Line coverage:40% (6 of 15)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CreateSystem(...)0%110100%
Update(...)0%9.634029.41%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/InputSenderSystem/ECSInputSenderSystem.cs

#LineLine coverage
 1using System;
 2using DCL.ECS7;
 3using DCL.ECS7.InternalComponents;
 4using DCL.ECSComponents;
 5using DCL.ECSRuntime;
 6
 7namespace ECSSystems.InputSenderSystem
 8{
 9    public static class ECSInputSenderSystem
 10    {
 11        private class State
 12        {
 13            public IInternalECSComponent<InternalInputEventResults> inputResultComponent;
 14            public IECSComponentWriter componentWriter;
 15        }
 16
 17        public static Action CreateSystem(
 18            IInternalECSComponent<InternalInputEventResults> inputResultComponent,
 19            IECSComponentWriter componentWriter)
 20        {
 221            var state = new State()
 22            {
 23                inputResultComponent = inputResultComponent,
 24                componentWriter = componentWriter
 25            };
 1526            return () => Update(state);
 27        }
 28
 29        private static void Update(State state)
 30        {
 1331            var inputResults = state.inputResultComponent.GetForAll();
 1332            var writer = state.componentWriter;
 33
 2634            for (int i = 0; i < inputResults.Count; i++)
 35            {
 036                var model = inputResults[i].value.model;
 037                if (!model.dirty)
 38                    continue;
 39
 040                var scene = inputResults[i].value.scene;
 041                var entity = inputResults[i].value.entity;
 42
 043                PBPointerEventsResult result = new PBPointerEventsResult();
 044                result.Commands.Capacity = model.events.Count;
 45
 46                // using foreach to iterate through queue without removing it elements
 47                // if it proves too slow we should switch the queue for a list
 048                foreach (InternalInputEventResults.EventData inputEvent in model.events)
 49                {
 050                    result.Commands.Add(new PBPointerEventsResult.Types.PointerCommand()
 51                    {
 52                        Button = inputEvent.button,
 53                        Hit = inputEvent.hit,
 54                        State = inputEvent.type,
 55                        Timestamp = inputEvent.timestamp
 56                    });
 57                }
 58
 059                writer.PutComponent(scene.sceneData.sceneNumber,
 60                    entity.entityId,
 61                    ComponentID.POINTER_EVENTS_RESULT,
 62                    result,
 63                    ECSComponentWriteType.SEND_TO_SCENE | ECSComponentWriteType.WRITE_STATE_LOCALLY);
 64            }
 1365        }
 66    }
 67}