< 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:75
Uncovered lines:14
Coverable lines:89
Total lines:180
Line coverage:84.2% (75 of 89)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
DataStore_WorldObjects_Extensions()0%330100%
AddScene(...)0%220100%
RemoveScene(...)0%220100%
AddExcludedOwner(...)0%2.032080%
RemoveExcludedOwner(...)0%2.062075%
AddTexture(...)0%110100%
RemoveTexture(...)0%110100%
AddMaterial(...)0%110100%
RemoveMaterial(...)0%110100%
AddAudioClip(...)0%2.032080%
RemoveAudioClip(...)0%2.032080%
AddRendereable(...)0%6.846071.43%
RemoveRendereable(...)0%6.256080.95%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using DCL.Models;
 5using UnityEngine;
 6using UnityEngine.Assertions;
 7
 8namespace DCL
 9{
 10    public static class DataStore_WorldObjects_Extensions
 11    {
 112        private static bool VERBOSE = false;
 113        private static ILogger logger = new Logger(Debug.unityLogger.logHandler) { filterLogType = VERBOSE ? LogType.Log
 14
 15        public static void AddScene( this DataStore_WorldObjects self, string sceneId )
 16        {
 50217            if (!self.sceneData.ContainsKey(sceneId))
 49718                self.sceneData.Add(sceneId, new DataStore_WorldObjects.SceneData());
 50219        }
 20
 21        public static void RemoveScene( this DataStore_WorldObjects self, string sceneId )
 22        {
 22123            if (self.sceneData.ContainsKey(sceneId))
 21924                self.sceneData.Remove(sceneId);
 22125        }
 26
 27        /// <summary>
 28        /// Add owner to the excluded owners list.
 29        /// </summary>
 30        /// <param name="self"></param>
 31        /// <param name="sceneId"></param>
 32        /// <param name="ownerId"></param>
 33        [Obsolete("This feature is only used by the SmartItem component and will have to be deprecated on the future. Pl
 34        public static void AddExcludedOwner(this DataStore_WorldObjects self, string sceneId, string ownerId)
 35        {
 836            if (!self.sceneData.ContainsKey(sceneId))
 037                return;
 38
 839            self.sceneData[sceneId].ignoredOwners.Add(ownerId);
 840            self.sceneData[sceneId].owners.Remove(ownerId);
 841        }
 42
 43        [Obsolete("This feature is only used by the SmartItem component and will have to be deprecated on the future. Pl
 44        public static void RemoveExcludedOwner(this DataStore_WorldObjects self, string sceneId, string ownerId)
 45        {
 446            if (!self.sceneData.ContainsKey(sceneId))
 047                return;
 48
 449            self.sceneData[sceneId].ignoredOwners.Remove(ownerId);
 450        }
 51
 52        public static void AddTexture(this DataStore_WorldObjects self, string sceneId, string ownerId, Texture texture)
 53        {
 6054            var r = new Rendereable();
 6055            r.textures.Add(texture);
 6056            r.ownerId = ownerId;
 6057            AddRendereable(self, sceneId, r);
 6058        }
 59
 60        public static void RemoveTexture(this DataStore_WorldObjects self, string sceneId, string ownerId, Texture textu
 61        {
 3462            var r = new Rendereable();
 3463            r.textures.Add(texture);
 3464            r.ownerId = ownerId;
 3465            RemoveRendereable(self, sceneId, r);
 3466        }
 67
 68        public static void AddMaterial(this DataStore_WorldObjects self, string sceneId, string ownerId,
 69            Material material)
 70        {
 6071            var r = new Rendereable();
 6072            r.materials.Add(material);
 6073            r.ownerId = ownerId;
 6074            AddRendereable(self, sceneId, r);
 6075        }
 76
 77        public static void RemoveMaterial(this DataStore_WorldObjects self, string sceneId, string ownerId,
 78            Material material)
 79        {
 9080            var r = new Rendereable();
 9081            r.materials.Add(material);
 9082            r.ownerId = ownerId;
 9083            RemoveRendereable(self, sceneId, r);
 9084        }
 85
 86        public static void AddAudioClip(this DataStore_WorldObjects self, string sceneId, AudioClip clip)
 87        {
 1888            if (!self.sceneData.ContainsKey(sceneId))
 089                return;
 90
 91            // NOTE(Brian): entityId is not used here, so audio clips do not work with the ignoreOwners
 92            //              feature. This is done on purpose as ignoreOwners is only used by the smart item component
 93            //              and should be deprecated. Also, supporting this would complicate the tracking logic and
 94            //              has a high maintenance cost.
 95
 1896            var sceneData = self.sceneData[sceneId];
 1897            sceneData.audioClips.Add(clip);
 1898        }
 99
 100        public static void RemoveAudioClip(this DataStore_WorldObjects self, string sceneId, AudioClip clip)
 101        {
 3102            if (!self.sceneData.ContainsKey(sceneId))
 0103                return;
 104
 3105            var sceneData = self.sceneData[sceneId];
 3106            sceneData.audioClips.Remove(clip);
 3107        }
 108
 109
 110        public static void AddRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable )
 111        {
 460112            if (rendereable == null)
 113            {
 0114                logger.Log( $"Trying to add null rendereable! (id: {sceneId})");
 0115                return;
 116            }
 117
 460118            if (string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId))
 119            {
 0120                logger.LogWarning($"AddRendereable", $"invalid sceneId! (id: {sceneId})");
 0121                return;
 122            }
 123
 460124            if (string.IsNullOrEmpty(rendereable.ownerId))
 125            {
 0126                logger.LogError($"AddRendereable", $"invalid ownerId! Make sure to assign ownerId to the given rendereab
 0127                return;
 128            }
 129
 460130            var sceneData = self.sceneData[sceneId];
 131
 460132            if ( sceneData.ignoredOwners.Contains(rendereable.ownerId))
 8133                return;
 134
 452135            sceneData.materials.AddRefCount(rendereable.materials);
 452136            sceneData.meshes.AddRefCount(rendereable.meshes);
 452137            sceneData.textures.AddRefCount(rendereable.textures);
 452138            sceneData.renderers.Add(rendereable.renderers);
 452139            sceneData.owners.Add(rendereable.ownerId);
 452140            sceneData.triangles.Set( sceneData.triangles.Get() + rendereable.totalTriangleCount);
 452141            sceneData.animationClipSize.Set(sceneData.animationClipSize.Get() + rendereable.animationClipSize);
 452142            sceneData.meshDataSize.Set(sceneData.meshDataSize.Get() + rendereable.meshDataSize);
 452143        }
 144
 145        public static void RemoveRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable 
 146        {
 276147            if ( rendereable == null )
 148            {
 0149                logger.Log( $"Trying to remove null rendereable! (id: {sceneId})");
 0150                return;
 151            }
 152
 276153            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 154            {
 3155                logger.LogWarning($"RemoveRendereable", $"invalid sceneId! (id: {sceneId})");
 3156                return;
 157            }
 158
 273159            if (string.IsNullOrEmpty(rendereable.ownerId))
 160            {
 0161                logger.LogError($"AddRendereable", $"invalid ownerId! Make sure to assign ownerId to the given rendereab
 0162                return;
 163            }
 164
 273165            var sceneData = self.sceneData[sceneId];
 166
 273167            if ( sceneData.ignoredOwners.Contains(rendereable.ownerId))
 8168                return;
 169
 265170            sceneData.materials.RemoveRefCount(rendereable.materials);
 265171            sceneData.meshes.RemoveRefCount(rendereable.meshes);
 265172            sceneData.textures.RemoveRefCount(rendereable.textures);
 265173            sceneData.renderers.Remove(rendereable.renderers);
 265174            sceneData.owners.Remove(rendereable.ownerId);
 265175            sceneData.triangles.Set( sceneData.triangles.Get() - rendereable.totalTriangleCount);
 265176            sceneData.animationClipSize.Set(sceneData.animationClipSize.Get() - rendereable.animationClipSize);
 265177            sceneData.meshDataSize.Set(sceneData.meshDataSize.Get() - rendereable.meshDataSize);
 265178        }
 179    }
 180}