< 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:78
Uncovered lines:11
Coverable lines:89
Total lines:175
Line coverage:87.6% (78 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%220100%
AddTexture(...)0%110100%
RemoveTexture(...)0%110100%
AddMaterial(...)0%110100%
RemoveMaterial(...)0%110100%
AddAudioClip(...)0%220100%
RemoveAudioClip(...)0%2.032080%
AddRendereable(...)0%6.496076.19%
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        {
 53717            if (!self.sceneData.ContainsKey(sceneId))
 53218                self.sceneData.Add(sceneId, new DataStore_WorldObjects.SceneData());
 53719        }
 20
 21        public static void RemoveScene( this DataStore_WorldObjects self, string sceneId )
 22        {
 44723            if (self.sceneData.ContainsKey(sceneId))
 4224                self.sceneData.Remove(sceneId);
 44725        }
 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, long ownerId)
 35        {
 936            if (!self.sceneData.ContainsKey(sceneId))
 037                return;
 38
 939            self.sceneData[sceneId].ignoredOwners.Add(ownerId);
 940            self.sceneData[sceneId].owners.Remove(ownerId);
 941        }
 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, long ownerId)
 45        {
 846            if (!self.sceneData.ContainsKey(sceneId))
 347                return;
 48
 549            self.sceneData[sceneId].ignoredOwners.Remove(ownerId);
 550        }
 51
 52        public static void AddTexture(this DataStore_WorldObjects self, string sceneId, long ownerId, Texture texture)
 53        {
 5954            var r = new Rendereable();
 5955            r.textures.Add(texture);
 5956            r.ownerId = ownerId;
 5957            AddRendereable(self, sceneId, r);
 5958        }
 59
 60        public static void RemoveTexture(this DataStore_WorldObjects self, string sceneId, long ownerId, Texture texture
 61        {
 3362            var r = new Rendereable();
 3363            r.textures.Add(texture);
 3364            r.ownerId = ownerId;
 3365            RemoveRendereable(self, sceneId, r);
 3366        }
 67
 68        public static void AddMaterial(this DataStore_WorldObjects self, string sceneId, long ownerId,
 69            Material material)
 70        {
 5871            var r = new Rendereable();
 5872            r.materials.Add(material);
 5873            r.ownerId = ownerId;
 5874            AddRendereable(self, sceneId, r);
 5875        }
 76
 77        public static void RemoveMaterial(this DataStore_WorldObjects self, string sceneId, long ownerId,
 78            Material material)
 79        {
 10980            var r = new Rendereable();
 10981            r.materials.Add(material);
 10982            r.ownerId = ownerId;
 10983            RemoveRendereable(self, sceneId, r);
 10984        }
 85
 86        public static void AddAudioClip(this DataStore_WorldObjects self, string sceneId, AudioClip clip)
 87        {
 2088            if (!self.sceneData.ContainsKey(sceneId))
 189                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
 1996            var sceneData = self.sceneData[sceneId];
 1997            sceneData.audioClips.Add(clip);
 1998        }
 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        public static void AddRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable )
 110        {
 494111            if (!self.sceneData.ContainsKey(sceneId))
 0112                return;
 113
 494114            if (rendereable == null)
 115            {
 0116                logger.Log( $"Trying to add null rendereable! (id: {sceneId})");
 0117                return;
 118            }
 119
 494120            if (string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId))
 121            {
 0122                logger.Log($"AddRendereable", $"invalid sceneId! (id: {sceneId})");
 0123                return;
 124            }
 125
 494126            var sceneData = self.sceneData[sceneId];
 127
 494128            if ( sceneData.ignoredOwners.Contains(rendereable.ownerId))
 6129                return;
 130
 488131            sceneData.materials.AddRefCount(rendereable.materials);
 488132            sceneData.meshes.AddRefCount(rendereable.meshes);
 488133            sceneData.textures.AddRefCount(rendereable.textures);
 488134            sceneData.renderers.Add(rendereable.renderers);
 488135            sceneData.owners.Add(rendereable.ownerId);
 488136            sceneData.animationClips.AddRefCount(rendereable.animationClips);
 488137            sceneData.triangles.Set( sceneData.triangles.Get() + rendereable.totalTriangleCount);
 488138            sceneData.animationClipSize.Set(sceneData.animationClipSize.Get() + rendereable.animationClipSize);
 488139            sceneData.meshDataSize.Set(sceneData.meshDataSize.Get() + rendereable.meshDataSize);
 488140        }
 141
 142        public static void RemoveRendereable( this DataStore_WorldObjects self, string sceneId, Rendereable rendereable 
 143        {
 447144            if (!self.sceneData.ContainsKey(sceneId))
 158145                return;
 146
 289147            if ( rendereable == null )
 148            {
 0149                logger.Log( $"Trying to remove null rendereable! (id: {sceneId})");
 0150                return;
 151            }
 152
 289153            if ( string.IsNullOrEmpty(sceneId) || !self.sceneData.ContainsKey(sceneId) )
 154            {
 0155                logger.Log($"RemoveRendereable", $"invalid sceneId! (id: {sceneId})");
 0156                return;
 157            }
 158
 289159            var sceneData = self.sceneData[sceneId];
 160
 289161            if ( sceneData.ignoredOwners.Contains(rendereable.ownerId))
 6162                return;
 163
 283164            sceneData.materials.RemoveRefCount(rendereable.materials);
 283165            sceneData.meshes.RemoveRefCount(rendereable.meshes);
 283166            sceneData.textures.RemoveRefCount(rendereable.textures);
 283167            sceneData.renderers.Remove(rendereable.renderers);
 283168            sceneData.owners.Remove(rendereable.ownerId);
 283169            sceneData.animationClips.RemoveRefCount(rendereable.animationClips);
 283170            sceneData.triangles.Set( sceneData.triangles.Get() - rendereable.totalTriangleCount);
 283171            sceneData.animationClipSize.Set(sceneData.animationClipSize.Get() - rendereable.animationClipSize);
 283172            sceneData.meshDataSize.Set(sceneData.meshDataSize.Get() - rendereable.meshDataSize);
 283173        }
 174    }
 175}