< 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        {
 30420            if ( entity == null )
 21            {
 022                logger.Log($"Null entity!");
 023                return;
 24            }
 25
 30426            if ( rendereable == null )
 27            {
 028                logger.Log( $"Trying to add null rendereable! (id: {entity.scene.sceneData.id})");
 029                return;
 30            }
 31
 30432            string sceneId = entity.scene.sceneData.id;
 30433            rendereable.ownerId = entity.entityId;
 34
 147635            foreach (var mesh in rendereable.meshes)
 36            {
 43437                self.AddMesh(entity, mesh);
 38            }
 39
 30440            self.AddRendereable( sceneId, rendereable );
 30441        }
 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        {
 24251            if ( entity == null )
 52            {
 053                logger.Log($"Null entity!");
 054                return;
 55            }
 56
 24257            if ( rendereable == null )
 58            {
 159                logger.Log( $"Trying to remove null rendereable! (id: {entity.scene.sceneData.id})");
 160                return;
 61            }
 62
 24163            string sceneId = entity.scene.sceneData.id;
 64
 110665            foreach (var mesh in rendereable.meshes)
 66            {
 31267                self.RemoveMesh(entity, mesh);
 68            }
 69
 24170            self.RemoveRendereable( sceneId, rendereable );
 24171        }
 72
 73        private static void AddMesh( this DataStore_WorldObjects self, string sceneId, Mesh mesh )
 74        {
 43475            if (!self.sceneData.ContainsKey(sceneId))
 23476                self.sceneData.Add(sceneId, new DataStore_WorldObjects.SceneData());
 77
 43478            BaseDictionary<Mesh, int> sceneMeshes = self.sceneData[sceneId].refCountedMeshes;
 79
 43480            if ( sceneMeshes.ContainsKey(mesh))
 6181                sceneMeshes[mesh]++;
 82            else
 83            {
 37384                sceneMeshes.Add(mesh, 1);
 37385                logger.Log($"Adding mesh {mesh.GetInstanceID()} to {sceneId} (refCount = {sceneMeshes[mesh]})");
 86            }
 37387        }
 88
 89        private static void RemoveMesh( this DataStore_WorldObjects self, string sceneId, Mesh mesh )
 90        {
 31191            BaseDictionary<Mesh, int> sceneMeshes = self.sceneData[sceneId].refCountedMeshes;
 92
 31193            if (!sceneMeshes.ContainsKey(mesh))
 094                return;
 95
 31196            sceneMeshes[mesh]--;
 97
 31198            if (sceneMeshes[mesh] == 0)
 99            {
 256100                logger.Log($"Removing mesh {mesh.GetInstanceID()} from {sceneId} (refCount == 0)");
 256101                sceneMeshes.Remove(mesh);
 256102            }
 103            else
 104            {
 55105                logger.Log($"Removing mesh {mesh.GetInstanceID()} from {sceneId} (refCount == {sceneMeshes[mesh]})");
 106            }
 107
 311108            if (self.sceneData[sceneId].IsEmpty())
 0109                self.sceneData.Remove(sceneId);
 311110        }
 111
 112        private static void AddMesh( this DataStore_WorldObjects self, IDCLEntity entity, Mesh mesh )
 113        {
 434114            if (entity == null)
 115            {
 0116                logger.LogWarning($"AddMesh", $"invalid entity!");
 0117                return;
 118            }
 119
 434120            string sceneId = entity.scene.sceneData.id;
 121
 434122            if (mesh == null)
 123            {
 0124                logger.Log( $"Trying to add null mesh! (id: {sceneId})");
 0125                return;
 126            }
 127
 434128            self.AddMesh( sceneId, mesh );
 434129        }
 130
 131        private static void RemoveMesh( this DataStore_WorldObjects self, IDCLEntity entity, Mesh mesh )
 132        {
 312133            if (entity == null)
 134            {
 0135                logger.LogWarning($"RemoveMesh", $"invalid entity!");
 0136                return;
 137            }
 138
 312139            string sceneId = entity.scene.sceneData.id;
 140
 312141            if ( mesh == null )
 142            {
 1143                logger.Log( $"Trying to remove null mesh! (id: {sceneId})");
 1144                return;
 145            }
 146
 311147            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 148            {
 0149                logger.LogWarning($"RemoveMesh", $"invalid sceneId! (id: {sceneId})");
 0150                return;
 151            }
 152
 311153            self.RemoveMesh( sceneId, mesh );
 311154        }
 155
 156        private static void AddRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable )
 157        {
 304158            if ( rendereable == null )
 159            {
 0160                logger.Log( $"Trying to add null rendereable! (id: {sceneId})");
 0161                return;
 162            }
 163
 304164            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 165            {
 0166                logger.LogWarning($"AddRendereable", $"invalid sceneId! (id: {sceneId})");
 0167                return;
 168            }
 169
 304170            var sceneData = self.sceneData[sceneId];
 171
 304172            if ( !sceneData.renderedObjects.Contains(rendereable) )
 304173                sceneData.renderedObjects.Add(rendereable);
 304174        }
 175
 176        private static void RemoveRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable
 177        {
 241178            if ( rendereable == null )
 179            {
 0180                logger.Log( $"Trying to remove null rendereable! (id: {sceneId})");
 0181                return;
 182            }
 183
 241184            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 185            {
 0186                logger.LogWarning($"RemoveRendereable", $"invalid sceneId! (id: {sceneId})");
 0187                return;
 188            }
 189
 241190            var sceneData = self.sceneData[sceneId];
 191
 241192            if ( sceneData.renderedObjects.Contains(rendereable) )
 241193                sceneData.renderedObjects.Remove(rendereable);
 194
 241195            if (self.sceneData[sceneId].IsEmpty())
 176196                self.sceneData.Remove(sceneId);
 241197        }
 198
 199        private static bool IsEmpty( this DataStore_WorldObjects.SceneData self)
 200        {
 552201            return self.refCountedMeshes.Count() == 0 && self.renderedObjects.Count() == 0;
 202        }
 203    }
 204}