< Summary

Class:InternalECSComponents
Assembly:ECS7Plugin.InternalECSComponents
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/InternalECSComponents/InternalECSComponents.cs
Covered lines:45
Uncovered lines:1
Coverable lines:46
Total lines:114
Line coverage:97.8% (45 of 46)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
InternalECSComponents(...)0%110100%
Dispose()0%110100%
WriteSystemUpdate()0%660100%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.ECS7.InternalComponents;
 4using DCL.ECSRuntime;
 5
 6public class InternalECSComponents : IDisposable, IInternalECSComponents
 7{
 638    internal readonly IList<InternalComponentWriteData> scheduledWrite = new List<InternalComponentWriteData>(50);
 9
 110    public IInternalECSComponent<InternalTexturizable> texturizableComponent { get; }
 111    public IInternalECSComponent<InternalMaterial> materialComponent { get; }
 112    public IInternalECSComponent<InternalColliders> onPointerColliderComponent { get; }
 013    public IInternalECSComponent<InternalColliders> physicColliderComponent { get; }
 214    public IInternalECSComponent<InternalInputEventResults> inputEventResultsComponent { get; }
 115    public IInternalECSComponent<InternalRenderers> renderersComponent { get; }
 116    public IInternalECSComponent<InternalVisibility> visibilityComponent { get; }
 4317    public IInternalECSComponent<InternalUiContainer> uiContainerComponent { get; }
 18
 6319    public InternalECSComponents(ECSComponentsManager componentsManager, ECSComponentsFactory componentsFactory)
 20    {
 6321        texturizableComponent = new InternalECSComponent<InternalTexturizable>(
 22            InternalECSComponentsId.TEXTURIZABLE,
 23            componentsManager,
 24            componentsFactory,
 1325            () => new RemoveOnConditionHandler<InternalTexturizable>(
 3326                () => texturizableComponent, model => model.renderers.Count == 0),
 27            scheduledWrite);
 28
 6329        materialComponent = new InternalECSComponent<InternalMaterial>(
 30            InternalECSComponentsId.MATERIAL,
 31            componentsManager,
 32            componentsFactory,
 33            null,
 34            scheduledWrite);
 35
 6336        onPointerColliderComponent = new InternalECSComponent<InternalColliders>(
 37            InternalECSComponentsId.COLLIDER_POINTER,
 38            componentsManager,
 39            componentsFactory,
 4740            () => new RemoveOnConditionHandler<InternalColliders>(
 10941                () => onPointerColliderComponent, model => model.colliders.Count == 0),
 42            scheduledWrite);
 43
 6344        physicColliderComponent = new InternalECSComponent<InternalColliders>(
 45            InternalECSComponentsId.COLLIDER_PHYSICAL,
 46            componentsManager,
 47            componentsFactory,
 2248            () => new RemoveOnConditionHandler<InternalColliders>(
 4449                () => physicColliderComponent, model => model.colliders.Count == 0),
 50            scheduledWrite);
 51
 6352        renderersComponent = new InternalECSComponent<InternalRenderers>(
 53            InternalECSComponentsId.RENDERERS,
 54            componentsManager,
 55            componentsFactory,
 2256            () => new RemoveOnConditionHandler<InternalRenderers>(
 7457                () => renderersComponent, model => model.renderers.Count == 0),
 58            scheduledWrite);
 59
 6360        visibilityComponent = new InternalECSComponent<InternalVisibility>(
 61            InternalECSComponentsId.VISIBILITY,
 62            componentsManager,
 63            componentsFactory,
 64            null,
 65            scheduledWrite);
 66
 6367        inputEventResultsComponent = new InternalECSComponent<InternalInputEventResults>(
 68            InternalECSComponentsId.INPUT_EVENTS_RESULT,
 69            componentsManager,
 70            componentsFactory,
 71            null,
 72            scheduledWrite);
 73
 6374        uiContainerComponent = new InternalECSComponent<InternalUiContainer>(
 75            InternalECSComponentsId.UI_CONTAINER,
 76            componentsManager,
 77            componentsFactory,
 3278            () => new UiContainerHandler(() => uiContainerComponent),
 79            scheduledWrite);
 6380    }
 81
 82    public void Dispose()
 83    {
 184        scheduledWrite.Clear();
 85
 186        texturizableComponent.Dispose();
 187        materialComponent.Dispose();
 188        onPointerColliderComponent.Dispose();
 189        physicColliderComponent.Dispose();
 190        renderersComponent.Dispose();
 191        inputEventResultsComponent.Dispose();
 192    }
 93
 94    public void WriteSystemUpdate()
 95    {
 11496        for (int i = 0; i < scheduledWrite.Count; i++)
 97        {
 4098            var writeData = scheduledWrite[i];
 4099            if (writeData.scene?.crdtExecutor == null)
 100                continue;
 101
 40102            InternalComponent data = writeData.data;
 40103            if (data != null)
 104            {
 38105                data._dirty = false;
 38106            }
 107            else
 108            {
 2109                writeData.scene.crdtExecutor.ExecuteWithoutStoringState(writeData.entityId, writeData.componentId, null)
 110            }
 111        }
 17112        scheduledWrite.Clear();
 17113    }
 114}