< Summary

Class:ECSSystemsController
Assembly:ECS7Plugin.Systems
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/ECSSystemsController.cs
Covered lines:17
Uncovered lines:10
Coverable lines:27
Total lines:90
Line coverage:62.9% (17 of 27)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSSystemsController(...)0%110100%
Dispose()0%110100%
Update()0%6200%
LateUpdate()0%6200%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using ECSSystems.CameraSystem;
 5using ECSSystems.InputSenderSystem;
 6using ECSSystems.MaterialSystem;
 7using ECSSystems.PlayerSystem;
 8using ECSSystems.PointerInputSystem;
 9using ECSSystems.VisibilitySystem;
 10using UnityEngine;
 11using ECS7System = System.Action;
 12using Environment = DCL.Environment;
 13using Object = UnityEngine.Object;
 14
 15public class ECSSystemsController : IDisposable
 16{
 17    private readonly IList<ECS7System> updateSystems;
 18    private readonly IList<ECS7System> lateUpdateSystems;
 19    private readonly IUpdateEventHandler updateEventHandler;
 20    private readonly ECS7System componentWriteSystem;
 21    private readonly ECS7System internalComponentWriteSystem;
 22    private readonly GameObject hoverCanvas;
 23
 124    public ECSSystemsController(ECS7System componentWriteSystem, SystemsContext context)
 25    {
 126        this.updateEventHandler = Environment.i.platform.updateEventHandler;
 127        this.componentWriteSystem = componentWriteSystem;
 128        this.internalComponentWriteSystem = context.internalEcsComponents.WriteSystemUpdate;
 29
 130        var canvas = Resources.Load<GameObject>("ECSInteractionHoverCanvas");
 131        hoverCanvas = Object.Instantiate(canvas);
 132        hoverCanvas.name = "_ECSInteractionHoverCanvas";
 133        IECSInteractionHoverCanvas interactionHoverCanvas = hoverCanvas.GetComponent<IECSInteractionHoverCanvas>();
 34
 135        updateEventHandler.AddListener(IUpdateEventHandler.EventType.Update, Update);
 136        updateEventHandler.AddListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 37
 138        updateSystems = new ECS7System[]
 39        {
 40            ECSTransformParentingSystem.Update,
 41            ECSMaterialSystem.CreateSystem(context.componentGroups.texturizableGroup,
 42                context.internalEcsComponents.texturizableComponent, context.internalEcsComponents.materialComponent),
 43            ECSVisibilitySystem.CreateSystem(context.componentGroups.visibilityGroup,
 44                context.internalEcsComponents.renderersComponent, context.internalEcsComponents.visibilityComponent),
 45            ECSPointerInputSystem.CreateSystem(
 46                context.internalEcsComponents.onPointerColliderComponent,
 47                context.internalEcsComponents.inputEventResultsComponent,
 48                context.pointerEvents,
 49                interactionHoverCanvas,
 50                Environment.i.world.state,
 51                DataStore.i.ecs7),
 52            ECSInputSenderSystem.CreateSystem(context.internalEcsComponents.inputEventResultsComponent, context.componen
 53        };
 54
 155        lateUpdateSystems = new ECS7System[]
 56        {
 57            ECSCameraEntitySystem.CreateSystem(context.componentWriter),
 58            ECSPlayerTransformSystem.CreateSystem(context.componentWriter)
 59        };
 160    }
 61
 62    public void Dispose()
 63    {
 164        updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.Update, Update);
 165        updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 166        Object.Destroy(hoverCanvas);
 167    }
 68
 69    private void Update()
 70    {
 071        componentWriteSystem.Invoke();
 72
 073        int count = updateSystems.Count;
 074        for (int i = 0; i < count; i++)
 75        {
 076            updateSystems[i].Invoke();
 77        }
 78
 079        internalComponentWriteSystem.Invoke();
 080    }
 81
 82    private void LateUpdate()
 83    {
 084        int count = lateUpdateSystems.Count;
 085        for (int i = 0; i < count; i++)
 86        {
 087            lateUpdateSystems[i].Invoke();
 88        }
 089    }
 90}