< Summary

Class:DCL.DataStore_WorldObjects_Extensions
Assembly:DataStore_Rendering_Extensions
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Helpers/DataStore_Rendering_Extensions/DataStore_WorldObjects_Extensions.cs
Covered lines:65
Uncovered lines:24
Coverable lines:89
Total lines:204
Line coverage:73% (65 of 89)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
DataStore_WorldObjects_Extensions()0%330100%
AddRendereable(...)0%4.374071.43%
RemoveRendereable(...)0%4.064084.62%
AddMesh(...)0%330100%
RemoveMesh(...)0%4.074083.33%
AddMesh(...)0%3.793055.56%
RemoveMesh(...)0%5.935066.67%
AddRendereable(...)0%6.65060%
RemoveRendereable(...)0%7.336066.67%
IsEmpty(...)0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Helpers/DataStore_Rendering_Extensions/DataStore_WorldObjects_Extensions.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using DCL.Models;
 3using UnityEngine;
 4
 5namespace DCL
 6{
 7    public static class DataStore_WorldObjects_Extensions
 8    {
 19        private static bool VERBOSE = false;
 110        private static ILogger logger = new Logger(Debug.unityLogger.logHandler) { filterLogType = VERBOSE ? LogType.Log
 11
 12        /// <summary>
 13        ///
 14        /// </summary>
 15        /// <param name="self"></param>
 16        /// <param name="entity"></param>
 17        /// <param name="rendereable"></param>
 18        public static void AddRendereable( this DataStore.DataStore_WorldObjects self, IDCLEntity entity, Rendereable re
 19        {
 27820            if ( entity == null )
 21            {
 022                logger.Log($"Null entity!");
 023                return;
 24            }
 25
 27826            if ( rendereable == null )
 27            {
 028                logger.Log( $"Trying to add null rendereable! (id: {entity.scene.sceneData.id})");
 029                return;
 30            }
 31
 27832            string sceneId = entity.scene.sceneData.id;
 27833            rendereable.ownerId = entity.entityId;
 34
 134235            foreach (var mesh in rendereable.meshes)
 36            {
 39337                self.AddMesh(entity, mesh);
 38            }
 39
 27840            self.AddRendereable( sceneId, rendereable );
 27841        }
 42
 43        /// <summary>
 44        ///
 45        /// </summary>
 46        /// <param name="self"></param>
 47        /// <param name="entity"></param>
 48        /// <param name="rendereable"></param>
 49        public static void RemoveRendereable( this DataStore.DataStore_WorldObjects self, IDCLEntity entity, Rendereable
 50        {
 27251            if ( entity == null )
 52            {
 053                logger.Log($"Null entity!");
 054                return;
 55            }
 56
 27257            if ( rendereable == null )
 58            {
 159                logger.Log( $"Trying to remove null rendereable! (id: {entity.scene.sceneData.id})");
 160                return;
 61            }
 62
 27163            string sceneId = entity.scene.sceneData.id;
 64
 130665            foreach (var mesh in rendereable.meshes)
 66            {
 38267                self.RemoveMesh(entity, mesh);
 68            }
 69
 27170            self.RemoveRendereable( sceneId, rendereable );
 27171        }
 72
 73        private static void AddMesh( this DataStore.DataStore_WorldObjects self, string sceneId, Mesh mesh )
 74        {
 39375            if (!self.sceneData.ContainsKey(sceneId))
 21276                self.sceneData.Add(sceneId, new DataStore.DataStore_WorldObjects.SceneData());
 77
 39378            BaseDictionary<Mesh, int> sceneMeshes = self.sceneData[sceneId].refCountedMeshes;
 79
 39380            if ( sceneMeshes.ContainsKey(mesh))
 5781                sceneMeshes[mesh]++;
 82            else
 83            {
 33684                sceneMeshes.Add(mesh, 1);
 33685                logger.Log($"Adding mesh {mesh.GetInstanceID()} to {sceneId} (refCount = {sceneMeshes[mesh]})");
 86            }
 33687        }
 88
 89        private static void RemoveMesh( this DataStore.DataStore_WorldObjects self, string sceneId, Mesh mesh )
 90        {
 38191            BaseDictionary<Mesh, int> sceneMeshes = self.sceneData[sceneId].refCountedMeshes;
 92
 38193            if (!sceneMeshes.ContainsKey(mesh))
 094                return;
 95
 38196            sceneMeshes[mesh]--;
 97
 38198            if (sceneMeshes[mesh] == 0)
 99            {
 324100                logger.Log($"Removing mesh {mesh.GetInstanceID()} from {sceneId} (refCount == 0)");
 324101                sceneMeshes.Remove(mesh);
 324102            }
 103            else
 104            {
 57105                logger.Log($"Removing mesh {mesh.GetInstanceID()} from {sceneId} (refCount == {sceneMeshes[mesh]})");
 106            }
 107
 381108            if (self.sceneData[sceneId].IsEmpty())
 0109                self.sceneData.Remove(sceneId);
 381110        }
 111
 112        private static void AddMesh( this DataStore.DataStore_WorldObjects self, IDCLEntity entity, Mesh mesh )
 113        {
 393114            if (entity == null)
 115            {
 0116                logger.LogWarning($"AddMesh", $"invalid entity!");
 0117                return;
 118            }
 119
 393120            string sceneId = entity.scene.sceneData.id;
 121
 393122            if (mesh == null)
 123            {
 0124                logger.Log( $"Trying to add null mesh! (id: {sceneId})");
 0125                return;
 126            }
 127
 393128            self.AddMesh( sceneId, mesh );
 393129        }
 130
 131        private static void RemoveMesh( this DataStore.DataStore_WorldObjects self, IDCLEntity entity, Mesh mesh )
 132        {
 382133            if (entity == null)
 134            {
 0135                logger.LogWarning($"RemoveMesh", $"invalid entity!");
 0136                return;
 137            }
 138
 382139            string sceneId = entity.scene.sceneData.id;
 140
 382141            if ( mesh == null )
 142            {
 1143                logger.Log( $"Trying to remove null mesh! (id: {sceneId})");
 1144                return;
 145            }
 146
 381147            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 148            {
 0149                logger.LogWarning($"RemoveMesh", $"invalid sceneId! (id: {sceneId})");
 0150                return;
 151            }
 152
 381153            self.RemoveMesh( sceneId, mesh );
 381154        }
 155
 156        private static void AddRendereable( this DataStore.DataStore_WorldObjects self, string sceneId, Rendereable rend
 157        {
 278158            if ( rendereable == null )
 159            {
 0160                logger.Log( $"Trying to add null rendereable! (id: {sceneId})");
 0161                return;
 162            }
 163
 278164            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 165            {
 0166                logger.LogWarning($"AddRendereable", $"invalid sceneId! (id: {sceneId})");
 0167                return;
 168            }
 169
 278170            var sceneData = self.sceneData[sceneId];
 171
 278172            if ( !sceneData.renderedObjects.Contains(rendereable) )
 278173                sceneData.renderedObjects.Add(rendereable);
 278174        }
 175
 176        private static void RemoveRendereable( this DataStore.DataStore_WorldObjects self, string sceneId, Rendereable r
 177        {
 271178            if ( rendereable == null )
 179            {
 0180                logger.Log( $"Trying to remove null rendereable! (id: {sceneId})");
 0181                return;
 182            }
 183
 271184            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 185            {
 0186                logger.LogWarning($"RemoveRendereable", $"invalid sceneId! (id: {sceneId})");
 0187                return;
 188            }
 189
 271190            var sceneData = self.sceneData[sceneId];
 191
 271192            if ( sceneData.renderedObjects.Contains(rendereable) )
 271193                sceneData.renderedObjects.Remove(rendereable);
 194
 271195            if (self.sceneData[sceneId].IsEmpty())
 204196                self.sceneData.Remove(sceneId);
 271197        }
 198
 199        private static bool IsEmpty( this DataStore.DataStore_WorldObjects.SceneData self)
 200        {
 652201            return self.refCountedMeshes.Count() == 0 && self.renderedObjects.Count() == 0;
 202        }
 203    }
 204}