< 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:15
Uncovered lines:0
Coverable lines:15
Total lines:68
Line coverage:100% (15 of 15)
Covered branches:0
Total branches:0

Metrics

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

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        {
 421            var state = new State()
 22            {
 23                inputResultComponent = inputResultComponent,
 24                componentWriter = componentWriter
 25            };
 726            return () => Update(state);
 27        }
 28
 29        private static void Update(State state)
 30        {
 331            var inputResults = state.inputResultComponent.GetForAll();
 332            var writer = state.componentWriter;
 33
 1234            for (int i = 0; i < inputResults.Count; i++)
 35            {
 336                var model = inputResults[i].value.model;
 337                if (!model.dirty)
 38                    continue;
 39
 240                var scene = inputResults[i].value.scene;
 241                var entity = inputResults[i].value.entity;
 42
 243                PBPointerEventsResult result = new PBPointerEventsResult();
 244                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
 2448                foreach (InternalInputEventResults.EventData inputEvent in model.events)
 49                {
 1050                    result.Commands.Add(new PBPointerEventsResult.Types.PointerCommand()
 51                    {
 52                        Analog = inputEvent.analog,
 53                        Button = inputEvent.button,
 54                        Hit = inputEvent.hit,
 55                        State = inputEvent.type,
 56                        Timestamp = inputEvent.timestamp
 57                    });
 58                }
 59
 260                writer.PutComponent(scene.sceneData.id,
 61                    entity.entityId,
 62                    ComponentID.POINTER_EVENTS_RESULT,
 63                    result,
 64                    ECSComponentWriteType.SEND_TO_SCENE | ECSComponentWriteType.WRITE_STATE_LOCALLY);
 65            }
 366        }
 67    }
 68}