< Summary

Class:ECSSystems.VisibilitySystem.ECSVisibilitySystem
Assembly:ECS7Plugin.Systems.Visibility
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/VisibilitySystem/ECSVisibilitySystem.cs
Covered lines:13
Uncovered lines:0
Coverable lines:13
Total lines:57
Line coverage:100% (13 of 13)
Covered branches:0
Total branches:0

Metrics

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

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/VisibilitySystem/ECSVisibilitySystem.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.ECS7.InternalComponents;
 4using DCL.ECSRuntime;
 5using UnityEngine;
 6
 7namespace ECSSystems.VisibilitySystem
 8{
 9    public static class ECSVisibilitySystem
 10    {
 11        private class State
 12        {
 13            public IECSReadOnlyComponentsGroup<InternalRenderers, InternalVisibility> componentsGroup;
 14            public IInternalECSComponent<InternalRenderers> renderersComponent;
 15            public IInternalECSComponent<InternalVisibility> visibilityComponent;
 16
 17        }
 18
 19        public static Action CreateSystem(IECSReadOnlyComponentsGroup<InternalRenderers, InternalVisibility> componentsG
 20            IInternalECSComponent<InternalRenderers> renderersComponent,
 21            IInternalECSComponent<InternalVisibility> visibilityComponent)
 22        {
 323            var state = new State()
 24            {
 25                componentsGroup = componentsGroup,
 26                renderersComponent = renderersComponent,
 27                visibilityComponent = visibilityComponent
 28            };
 2029            return () => Update(state);
 30        }
 31
 32        private static void Update(State state)
 33        {
 1734            var componentGroup = state.componentsGroup.group;
 35
 5036            for (int i = 0; i < componentGroup.Count; i++)
 37            {
 838                var entityData = componentGroup[i];
 839                InternalRenderers renderersModel = entityData.componentData1.model;
 840                InternalVisibility visibilityModel = entityData.componentData2.model;
 41
 42
 43                // if neither component has changed then we skip this entity
 844                if (!renderersModel.dirty && !visibilityModel.dirty)
 45                    continue;
 46
 447                IList<Renderer> renderers = renderersModel.renderers;
 48
 1649                for (int j = 0; j < renderers.Count; j++)
 50                {
 451                    Renderer renderer = renderers[j];
 452                    renderer.enabled = visibilityModel.visible;
 53                }
 54            }
 1755        }
 56    }
 57}