< Summary

Class:ECSSystemsController
Assembly:ECS7Plugin.Systems
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/ECSSystemsController.cs
Covered lines:24
Uncovered lines:10
Coverable lines:34
Total lines:106
Line coverage:70.5% (24 of 34)
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.ScenesUiSystem;
 10using ECSSystems.VisibilitySystem;
 11using UnityEngine;
 12using UnityEngine.UIElements;
 13using ECS7System = System.Action;
 14using Environment = DCL.Environment;
 15using Object = UnityEngine.Object;
 16
 17public class ECSSystemsController : IDisposable
 18{
 19    private readonly IList<ECS7System> updateSystems;
 20    private readonly IList<ECS7System> lateUpdateSystems;
 21    private readonly IUpdateEventHandler updateEventHandler;
 22    private readonly ECS7System componentWriteSystem;
 23    private readonly ECS7System internalComponentWriteSystem;
 24    private readonly ECSScenesUiSystem uiSystem;
 25    private readonly GameObject hoverCanvas;
 26    private readonly GameObject scenesUi;
 27
 128    public ECSSystemsController(ECS7System componentWriteSystem, SystemsContext context)
 29    {
 130        this.updateEventHandler = Environment.i.platform.updateEventHandler;
 131        this.componentWriteSystem = componentWriteSystem;
 132        this.internalComponentWriteSystem = context.internalEcsComponents.WriteSystemUpdate;
 33
 134        var canvas = Resources.Load<GameObject>("ECSInteractionHoverCanvas");
 135        hoverCanvas = Object.Instantiate(canvas);
 136        hoverCanvas.name = "_ECSInteractionHoverCanvas";
 137        IECSInteractionHoverCanvas interactionHoverCanvas = hoverCanvas.GetComponent<IECSInteractionHoverCanvas>();
 38
 139        var scenesUiResource = Resources.Load<UIDocument>("ScenesUI");
 140        var scenesUiDocument = Object.Instantiate(scenesUiResource);
 141        scenesUiDocument.name = "_ECSScenesUI";
 142        scenesUi = scenesUiDocument.gameObject;
 43
 144        uiSystem = new ECSScenesUiSystem(scenesUiDocument,
 45            context.internalEcsComponents.uiContainerComponent,
 46            DataStore.i.ecs7.scenes, Environment.i.world.state);
 47
 148        updateEventHandler.AddListener(IUpdateEventHandler.EventType.Update, Update);
 149        updateEventHandler.AddListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 50
 151        updateSystems = new ECS7System[]
 52        {
 53            ECSTransformParentingSystem.Update,
 54            ECSMaterialSystem.CreateSystem(context.componentGroups.texturizableGroup,
 55                context.internalEcsComponents.texturizableComponent, context.internalEcsComponents.materialComponent),
 56            ECSVisibilitySystem.CreateSystem(context.componentGroups.visibilityGroup,
 57                context.internalEcsComponents.renderersComponent, context.internalEcsComponents.visibilityComponent),
 58            ECSPointerInputSystem.CreateSystem(
 59                context.internalEcsComponents.onPointerColliderComponent,
 60                context.internalEcsComponents.inputEventResultsComponent,
 61                context.pointerEvents,
 62                interactionHoverCanvas,
 63                Environment.i.world.state,
 64                DataStore.i.ecs7),
 65            ECSInputSenderSystem.CreateSystem(context.internalEcsComponents.inputEventResultsComponent, context.componen
 66            uiSystem.Update
 67        };
 68
 169        lateUpdateSystems = new ECS7System[]
 70        {
 71            ECSCameraEntitySystem.CreateSystem(context.componentWriter),
 72            ECSPlayerTransformSystem.CreateSystem(context.componentWriter)
 73        };
 174    }
 75
 76    public void Dispose()
 77    {
 178        updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.Update, Update);
 179        updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 180        uiSystem.Dispose();
 181        Object.Destroy(hoverCanvas);
 182        Object.Destroy(scenesUi);
 183    }
 84
 85    private void Update()
 86    {
 087        componentWriteSystem.Invoke();
 88
 089        int count = updateSystems.Count;
 090        for (int i = 0; i < count; i++)
 91        {
 092            updateSystems[i].Invoke();
 93        }
 94
 095        internalComponentWriteSystem.Invoke();
 096    }
 97
 98    private void LateUpdate()
 99    {
 0100        int count = lateUpdateSystems.Count;
 0101        for (int i = 0; i < count; i++)
 102        {
 0103            lateUpdateSystems[i].Invoke();
 104        }
 0105    }
 106}