< 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:17
Uncovered lines:0
Coverable lines:17
Total lines:65
Line coverage:100% (17 of 17)
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.ECSComponents;
 5using DCL.ECSRuntime;
 6using UnityEngine;
 7using UnityEngine.Rendering;
 8
 9namespace ECSSystems.VisibilitySystem
 10{
 11    public static class ECSVisibilitySystem
 12    {
 13        private class State
 14        {
 15            public IECSReadOnlyComponentsGroup<InternalRenderers, InternalVisibility> componentsGroup;
 16            public IInternalECSComponent<InternalRenderers> renderersComponent;
 17            public IInternalECSComponent<InternalVisibility> visibilityComponent;
 18
 19        }
 20
 21        public static Action CreateSystem(IECSReadOnlyComponentsGroup<InternalRenderers, InternalVisibility> componentsG
 22            IInternalECSComponent<InternalRenderers> renderersComponent,
 23            IInternalECSComponent<InternalVisibility> visibilityComponent)
 24        {
 125            var state = new State()
 26            {
 27                componentsGroup = componentsGroup,
 28                renderersComponent = renderersComponent,
 29                visibilityComponent = visibilityComponent
 30            };
 531            return () => Update(state);
 32        }
 33
 34        private static void Update(State state)
 35        {
 436            var componentGroup = state.componentsGroup.group;
 37
 2438            for (int i = 0; i < componentGroup.Count; i++)
 39            {
 840                var entityData = componentGroup[i];
 841                InternalRenderers renderersModel = entityData.componentData1.model;
 842                InternalVisibility visibilityModel = entityData.componentData2.model;
 43
 44
 45                // if neither component has changed then we skip this entity
 846                if (!renderersModel.dirty && !visibilityModel.dirty)
 47                    continue;
 48
 449                IList<Renderer> renderers = renderersModel.renderers;
 50
 1651                for (int j = 0; j < renderers.Count; j++)
 52                {
 453                    Renderer renderer = renderers[j];
 454                    renderer.enabled = visibilityModel.visible;
 55                }
 56
 457                renderersModel.dirty = false;
 458                visibilityModel.dirty = false;
 59
 460                state.renderersComponent.PutFor(entityData.scene, entityData.entity, renderersModel);
 461                state.visibilityComponent.PutFor(entityData.scene, entityData.entity, visibilityModel);
 62            }
 463        }
 64    }
 65}