< Summary

Class:DCL.ECSRuntime.ECSComponentWriter
Assembly:DCL.ECSRuntime.ComponentWriter
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentWriter/ECSComponentWriter.cs
Covered lines:16
Uncovered lines:9
Coverable lines:25
Total lines:70
Line coverage:64% (16 of 25)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentWriter(...)0%110100%
AddOrReplaceComponentSerializer[T](...)0%110100%
RemoveComponentSerializer(...)0%2100%
PutComponent[T](...)0%110100%
PutComponent[T](...)0%4.123050%
RemoveComponent(...)0%110100%
RemoveComponent(...)0%110100%
Dispose()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentWriter/ECSComponentWriter.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.Controllers;
 4using DCL.Models;
 5using UnityEngine;
 6
 7namespace DCL.ECSRuntime
 8{
 9    public class ECSComponentWriter : IECSComponentWriter
 10    {
 11        public delegate void WriteComponent(string sceneId, long entityId, int componentId, byte[] data, ECSComponentWri
 12
 213        private readonly Dictionary<int, object> serializers = new Dictionary<int, object>();
 14        private WriteComponent writeComponent;
 15
 216        public ECSComponentWriter(WriteComponent writeComponent)
 17        {
 218            this.writeComponent = writeComponent;
 219        }
 20
 21        public void AddOrReplaceComponentSerializer<T>(int componentId, Func<T, byte[]> serializer)
 22        {
 223            serializers[componentId] = serializer;
 224        }
 25
 26        public void RemoveComponentSerializer(int componentId)
 27        {
 028            serializers.Remove(componentId);
 029        }
 30
 31        public void PutComponent<T>(IParcelScene scene, IDCLEntity entity, int componentId, T model, ECSComponentWriteTy
 32        {
 133            PutComponent(scene.sceneData.id, entity.entityId, componentId, model, writeType);
 134        }
 35
 36        public void PutComponent<T>(string sceneId, long entityId, int componentId, T model, ECSComponentWriteType write
 37        {
 138            if (!serializers.TryGetValue(componentId, out object serializer))
 39            {
 040                Debug.LogError($"Trying to write component but no serializer was found for {componentId}");
 041                return;
 42            }
 43
 144            if (serializer is Func<T, byte[]> typedSerializer)
 45            {
 146                writeComponent(sceneId, entityId, componentId, typedSerializer(model), writeType);
 147            }
 48            else
 49            {
 050                Debug.LogError($"Trying to write component but serializer for {componentId} does not match {nameof(T)}")
 51            }
 052        }
 53
 54        public void RemoveComponent(IParcelScene scene, IDCLEntity entity, int componentId, ECSComponentWriteType writeT
 55        {
 156            RemoveComponent(scene.sceneData.id, entity.entityId, componentId, writeType);
 157        }
 58
 59        public void RemoveComponent(string sceneId, long entityId, int componentId, ECSComponentWriteType writeType)
 60        {
 161            writeComponent(sceneId, entityId, componentId, null, writeType);
 162        }
 63
 64        public void Dispose()
 65        {
 066            serializers.Clear();
 067            writeComponent = null;
 068        }
 69    }
 70}