< Summary

Class:DCL.ECSRuntime.ECSComponentsGroup[T1,T2,T3]
Assembly:DCL.ECSRuntime.ComponentsGroup
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentsGroup/ECSComponentsGroupTriple.cs
Covered lines:35
Uncovered lines:2
Coverable lines:37
Total lines:103
Line coverage:94.5% (35 of 37)
Covered branches:0
Total branches:0
Covered methods:10
Total methods:10
Method coverage:100% (10 of 10)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentsGroup(...)0%110100%
DCL.ECSRuntime.IECSReadOnlyComponentsGroup<T1,T2,T3>.get_group()0%110100%
MatchEntity(...)0%330100%
ShouldAddOnComponentAdd(...)0%330100%
ShouldRemoveOnComponentRemove(...)0%330100%
ShouldAddOnComponentRemove(...)0%110100%
ShouldRemoveOnComponentAdd(...)0%110100%
Add(...)0%110100%
Remove(...)0%3.143075%
Update(...)0%5.025090%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentsGroup/ECSComponentsGroupTriple.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.Models;
 3using System.Collections.Generic;
 4using UnityEngine.Assertions;
 5
 6namespace DCL.ECSRuntime
 7{
 8    public class ECSComponentsGroup<T1, T2, T3> : IECSComponentsGroup, IECSReadOnlyComponentsGroup<T1, T2, T3>
 9    {
 10        private readonly IECSComponent component1;
 11        private readonly IECSComponent component2;
 12        private readonly IECSComponent component3;
 1313        private readonly List<ECSComponentsGroupData<T1, T2, T3>> list = new List<ECSComponentsGroupData<T1, T2, T3>>();
 14
 915        IReadOnlyList<ECSComponentsGroupData<T1, T2, T3>> IECSReadOnlyComponentsGroup<T1, T2, T3>.group => list;
 16
 1317        public ECSComponentsGroup(IECSComponent component1, IECSComponent component2, IECSComponent component3)
 18        {
 1319            Assert.IsNotNull(component1, $"component1 must not be null");
 1320            Assert.IsNotNull(component2, $"component2 must not be null");
 1321            Assert.IsNotNull(component3, $"component3 must not be null");
 1322            this.component1 = component1;
 1323            this.component2 = component2;
 1324            this.component3 = component3;
 1325        }
 26
 27        bool IECSComponentsGroup.MatchEntity(IParcelScene scene, IDCLEntity entity)
 28        {
 2829            return component1.HasComponent(scene, entity)
 30                   && component2.HasComponent(scene, entity)
 31                   && component3.HasComponent(scene, entity);
 32        }
 33
 34        bool IECSComponentsGroup.ShouldAddOnComponentAdd(IECSComponent component)
 35        {
 3536            return component == component1 || component == component2 || component == component3;
 37        }
 38
 39        bool IECSComponentsGroup.ShouldRemoveOnComponentRemove(IECSComponent component)
 40        {
 241            return component == component1 || component == component2 || component == component3;
 42        }
 43
 44        bool IECSComponentsGroup.ShouldAddOnComponentRemove(IECSComponent component)
 45        {
 446            return false;
 47        }
 48
 49        bool IECSComponentsGroup.ShouldRemoveOnComponentAdd(IECSComponent component)
 50        {
 151            return false;
 52        }
 53
 54        void IECSComponentsGroup.Add(IParcelScene scene, IDCLEntity entity)
 55        {
 856            ((ECSComponent<T1>)component1).TryGet(scene, entity.entityId, out var componentData1);
 857            ((ECSComponent<T2>)component2).TryGet(scene, entity.entityId, out var componentData2);
 858            ((ECSComponent<T3>)component3).TryGet(scene, entity.entityId, out var componentData3);
 59
 860            ECSComponentsGroupData<T1, T2, T3> data = new ECSComponentsGroupData<T1, T2, T3>
 61            (
 62                scene: scene,
 63                entity: entity,
 64                componentData1: componentData1,
 65                componentData2: componentData2,
 66                componentData3: componentData3
 67            );
 68
 869            list.Add(data);
 870        }
 71
 72        bool IECSComponentsGroup.Remove(IDCLEntity entity)
 73        {
 1274            for (int i = 0; i < list.Count; i++)
 75            {
 676                ECSComponentsGroupData<T1, T2, T3> data = list[i];
 77
 678                if (data.entity != entity)
 79                    continue;
 80
 681                list.RemoveAt(i);
 682                return true;
 83            }
 84
 085            return false;
 86        }
 87
 88        void IECSComponentsGroup.Update(IParcelScene scene, IDCLEntity entity, IECSComponent component)
 89        {
 1990            long entityId = entity.entityId;
 1991            if (!Utils.TryGetDataIndex(list, entity, out int index))
 092                return;
 93
 1994            if (Utils.TryGetComponentData<T1>(scene, entityId, component1, component, out var d1))
 395                list[index] = list[index].With(d1);
 1996            if (Utils.TryGetComponentData<T2>(scene, entityId, component2, component, out var d2))
 397                list[index] = list[index].With(d2);
 1998            if (Utils.TryGetComponentData<T3>(scene, entityId, component3, component, out var d3))
 999                list[index] = list[index].With(d3);
 100
 19101        }
 102    }
 103}