< 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_WorldObjects self, IDCLEntity entity, Rendereable rendereable 
 19        {
 28320            if ( entity == null )
 21            {
 022                logger.Log($"Null entity!");
 023                return;
 24            }
 25
 28326            if ( rendereable == null )
 27            {
 028                logger.Log( $"Trying to add null rendereable! (id: {entity.scene.sceneData.id})");
 029                return;
 30            }
 31
 28332            string sceneId = entity.scene.sceneData.id;
 28333            rendereable.ownerId = entity.entityId;
 34
 136435            foreach (var mesh in rendereable.meshes)
 36            {
 39937                self.AddMesh(entity, mesh);
 38            }
 39
 28340            self.AddRendereable( sceneId, rendereable );
 28341        }
 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_WorldObjects self, IDCLEntity entity, Rendereable rendereab
 50        {
 23851            if ( entity == null )
 52            {
 053                logger.Log($"Null entity!");
 054                return;
 55            }
 56
 23857            if ( rendereable == null )
 58            {
 159                logger.Log( $"Trying to remove null rendereable! (id: {entity.scene.sceneData.id})");
 160                return;
 61            }
 62
 23763            string sceneId = entity.scene.sceneData.id;
 64
 108665            foreach (var mesh in rendereable.meshes)
 66            {
 30667                self.RemoveMesh(entity, mesh);
 68            }
 69
 23770            self.RemoveRendereable( sceneId, rendereable );
 23771        }
 72
 73        private static void AddMesh( this DataStore_WorldObjects self, string sceneId, Mesh mesh )
 74        {
 39975            if (!self.sceneData.ContainsKey(sceneId))
 21676                self.sceneData.Add(sceneId, new DataStore_WorldObjects.SceneData());
 77
 39978            BaseDictionary<Mesh, int> sceneMeshes = self.sceneData[sceneId].refCountedMeshes;
 79
 39980            if ( sceneMeshes.ContainsKey(mesh))
 5881                sceneMeshes[mesh]++;
 82            else
 83            {
 34184                sceneMeshes.Add(mesh, 1);
 34185                logger.Log($"Adding mesh {mesh.GetInstanceID()} to {sceneId} (refCount = {sceneMeshes[mesh]})");
 86            }
 34187        }
 88
 89        private static void RemoveMesh( this DataStore_WorldObjects self, string sceneId, Mesh mesh )
 90        {
 30591            BaseDictionary<Mesh, int> sceneMeshes = self.sceneData[sceneId].refCountedMeshes;
 92
 30593            if (!sceneMeshes.ContainsKey(mesh))
 094                return;
 95
 30596            sceneMeshes[mesh]--;
 97
 30598            if (sceneMeshes[mesh] == 0)
 99            {
 251100                logger.Log($"Removing mesh {mesh.GetInstanceID()} from {sceneId} (refCount == 0)");
 251101                sceneMeshes.Remove(mesh);
 251102            }
 103            else
 104            {
 54105                logger.Log($"Removing mesh {mesh.GetInstanceID()} from {sceneId} (refCount == {sceneMeshes[mesh]})");
 106            }
 107
 305108            if (self.sceneData[sceneId].IsEmpty())
 0109                self.sceneData.Remove(sceneId);
 305110        }
 111
 112        private static void AddMesh( this DataStore_WorldObjects self, IDCLEntity entity, Mesh mesh )
 113        {
 399114            if (entity == null)
 115            {
 0116                logger.LogWarning($"AddMesh", $"invalid entity!");
 0117                return;
 118            }
 119
 399120            string sceneId = entity.scene.sceneData.id;
 121
 399122            if (mesh == null)
 123            {
 0124                logger.Log( $"Trying to add null mesh! (id: {sceneId})");
 0125                return;
 126            }
 127
 399128            self.AddMesh( sceneId, mesh );
 399129        }
 130
 131        private static void RemoveMesh( this DataStore_WorldObjects self, IDCLEntity entity, Mesh mesh )
 132        {
 306133            if (entity == null)
 134            {
 0135                logger.LogWarning($"RemoveMesh", $"invalid entity!");
 0136                return;
 137            }
 138
 306139            string sceneId = entity.scene.sceneData.id;
 140
 306141            if ( mesh == null )
 142            {
 1143                logger.Log( $"Trying to remove null mesh! (id: {sceneId})");
 1144                return;
 145            }
 146
 305147            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 148            {
 0149                logger.LogWarning($"RemoveMesh", $"invalid sceneId! (id: {sceneId})");
 0150                return;
 151            }
 152
 305153            self.RemoveMesh( sceneId, mesh );
 305154        }
 155
 156        private static void AddRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable )
 157        {
 283158            if ( rendereable == null )
 159            {
 0160                logger.Log( $"Trying to add null rendereable! (id: {sceneId})");
 0161                return;
 162            }
 163
 283164            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 165            {
 0166                logger.LogWarning($"AddRendereable", $"invalid sceneId! (id: {sceneId})");
 0167                return;
 168            }
 169
 283170            var sceneData = self.sceneData[sceneId];
 171
 283172            if ( !sceneData.renderedObjects.Contains(rendereable) )
 283173                sceneData.renderedObjects.Add(rendereable);
 283174        }
 175
 176        private static void RemoveRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable
 177        {
 237178            if ( rendereable == null )
 179            {
 0180                logger.Log( $"Trying to remove null rendereable! (id: {sceneId})");
 0181                return;
 182            }
 183
 237184            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 185            {
 0186                logger.LogWarning($"RemoveRendereable", $"invalid sceneId! (id: {sceneId})");
 0187                return;
 188            }
 189
 237190            var sceneData = self.sceneData[sceneId];
 191
 237192            if ( sceneData.renderedObjects.Contains(rendereable) )
 237193                sceneData.renderedObjects.Remove(rendereable);
 194
 237195            if (self.sceneData[sceneId].IsEmpty())
 173196                self.sceneData.Remove(sceneId);
 237197        }
 198
 199        private static bool IsEmpty( this DataStore_WorldObjects.SceneData self)
 200        {
 542201            return self.refCountedMeshes.Count() == 0 && self.renderedObjects.Count() == 0;
 202        }
 203    }
 204}