< Summary

Class:DCL.ECS7.ECS7Plugin
Assembly:ECS7Plugin
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECS7Plugin.cs
Covered lines:33
Uncovered lines:0
Coverable lines:33
Total lines:84
Line coverage:100% (33 of 33)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECS7Plugin()0%110100%
Dispose()0%110100%
SceneControllerOnOnNewSceneAdded(...)0%220100%
SceneControllerOnOnSceneRemoved(...)0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECS7Plugin.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.CRDT;
 3using DCL.ECSComponents;
 4using DCL.ECSRuntime;
 5using System.Collections.Generic;
 6
 7namespace DCL.ECS7
 8{
 9    public class ECS7Plugin : IPlugin
 10    {
 11        private readonly ComponentCrdtWriteSystem crdtWriteSystem;
 12        private readonly IECSComponentWriter componentWriter;
 13        private readonly ECS7ComponentsComposer componentsComposer;
 14        private readonly ECSSystemsController systemsController;
 15        private readonly ECSComponentsFactory componentsFactory;
 16        private readonly InternalECSComponents internalEcsComponents;
 17        private readonly CrdtExecutorsManager crdtExecutorsManager;
 18
 19        internal readonly ECSComponentsManager componentsManager;
 20        private readonly BaseList<IParcelScene> loadedScenes;
 21        private readonly ISceneController sceneController;
 22
 223        public ECS7Plugin()
 24        {
 225            DataStore.i.ecs7.isEcs7Enabled = true;
 226            loadedScenes = DataStore.i.ecs7.scenes;
 27
 228            sceneController = Environment.i.world.sceneController;
 229            Dictionary<int, ICRDTExecutor> crdtExecutors = new Dictionary<int, ICRDTExecutor>(10);
 230            DataStore.i.rpc.context.crdt.CrdtExecutors = crdtExecutors;
 31
 232            componentsFactory = new ECSComponentsFactory();
 233            componentsManager = new ECSComponentsManager(componentsFactory.componentBuilders);
 234            internalEcsComponents = new InternalECSComponents(componentsManager, componentsFactory);
 35
 236            crdtExecutorsManager = new CrdtExecutorsManager(crdtExecutors, componentsManager, sceneController, DataStore
 37
 238            crdtWriteSystem = new ComponentCrdtWriteSystem(crdtExecutors, sceneController, DataStore.i.rpc.context);
 239            componentWriter = new ECSComponentWriter(crdtWriteSystem.WriteMessage);
 40
 241            componentsComposer = new ECS7ComponentsComposer(componentsFactory, componentWriter, internalEcsComponents);
 42
 243            SystemsContext systemsContext = new SystemsContext(componentWriter,
 44                internalEcsComponents,
 45                new ComponentGroups(componentsManager),
 46                (ECSComponent<PBPointerEvents>)componentsManager.GetOrCreateComponent(ComponentID.POINTER_EVENTS),
 47                (ECSComponent<PBBillboard>)componentsManager.GetOrCreateComponent(ComponentID.BILLBOARD));
 48
 249            systemsController = new ECSSystemsController(crdtWriteSystem.LateUpdate, systemsContext);
 50
 251            sceneController.OnNewSceneAdded += SceneControllerOnOnNewSceneAdded;
 252            sceneController.OnSceneRemoved += SceneControllerOnOnSceneRemoved;
 253        }
 54
 55        public void Dispose()
 56        {
 257            componentsComposer.Dispose();
 258            crdtWriteSystem.Dispose();
 259            componentWriter.Dispose();
 260            systemsController.Dispose();
 261            internalEcsComponents.Dispose();
 262            crdtExecutorsManager.Dispose();
 63
 264            sceneController.OnNewSceneAdded -= SceneControllerOnOnNewSceneAdded;
 265            sceneController.OnSceneRemoved -= SceneControllerOnOnSceneRemoved;
 266        }
 67
 68        private void SceneControllerOnOnNewSceneAdded(IParcelScene scene)
 69        {
 270            if (scene.sceneData.sdk7)
 71            {
 272                loadedScenes.Add(scene);
 73            }
 274        }
 75
 76        private void SceneControllerOnOnSceneRemoved(IParcelScene scene)
 77        {
 178            if (scene.sceneData.sdk7)
 79            {
 180                loadedScenes.Remove(scene);
 81            }
 182        }
 83    }
 84}