< 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:77
Uncovered lines:12
Coverable lines:89
Total lines:175
Line coverage:86.5% (77 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%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, int sceneNumber )
 16        {
 38817            if (!self.sceneData.ContainsKey(sceneNumber))
 38618                self.sceneData.Add(sceneNumber, new DataStore_WorldObjects.SceneData());
 38819        }
 20
 21        public static void RemoveScene( this DataStore_WorldObjects self, int sceneNumber )
 22        {
 30323            if (self.sceneData.ContainsKey(sceneNumber))
 4624                self.sceneData.Remove(sceneNumber);
 30325        }
 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, int sceneNumber, long ownerId)
 35        {
 636            if (!self.sceneData.ContainsKey(sceneNumber))
 037                return;
 38
 639            self.sceneData[sceneNumber].ignoredOwners.Add(ownerId);
 640            self.sceneData[sceneNumber].owners.Remove(ownerId);
 641        }
 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, int sceneNumber, long ownerId)
 45        {
 546            if (!self.sceneData.ContainsKey(sceneNumber))
 047                return;
 48
 549            self.sceneData[sceneNumber].ignoredOwners.Remove(ownerId);
 550        }
 51
 52        public static void AddTexture(this DataStore_WorldObjects self, int sceneNumber, long ownerId, Texture texture)
 53        {
 6254            var r = new Rendereable();
 6255            r.textures.Add(texture);
 6256            r.ownerId = ownerId;
 6257            AddRendereable(self, sceneNumber, r);
 6258        }
 59
 60        public static void RemoveTexture(this DataStore_WorldObjects self, int sceneNumber, long ownerId, Texture textur
 61        {
 3662            var r = new Rendereable();
 3663            r.textures.Add(texture);
 3664            r.ownerId = ownerId;
 3665            RemoveRendereable(self, sceneNumber, r);
 3666        }
 67
 68        public static void AddMaterial(this DataStore_WorldObjects self, int sceneNumber, long ownerId,
 69            Material material)
 70        {
 5871            var r = new Rendereable();
 5872            r.materials.Add(material);
 5873            r.ownerId = ownerId;
 5874            AddRendereable(self, sceneNumber, r);
 5875        }
 76
 77        public static void RemoveMaterial(this DataStore_WorldObjects self, int sceneNumber, long ownerId,
 78            Material material)
 79        {
 10980            var r = new Rendereable();
 10981            r.materials.Add(material);
 10982            r.ownerId = ownerId;
 10983            RemoveRendereable(self, sceneNumber, r);
 10984        }
 85
 86        public static void AddAudioClip(this DataStore_WorldObjects self, int sceneNumber, AudioClip clip)
 87        {
 2088            if (!self.sceneData.ContainsKey(sceneNumber))
 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[sceneNumber];
 1997            sceneData.audioClips.Add(clip);
 1998        }
 99
 100        public static void RemoveAudioClip(this DataStore_WorldObjects self, int sceneNumber, AudioClip clip)
 101        {
 3102            if (!self.sceneData.ContainsKey(sceneNumber))
 0103                return;
 104
 3105            var sceneData = self.sceneData[sceneNumber];
 3106            sceneData.audioClips.Remove(clip);
 3107        }
 108
 109        public static void AddRendereable( this DataStore_WorldObjects self, int sceneNumber, Rendereable rendereable )
 110        {
 481111            if (!self.sceneData.ContainsKey(sceneNumber))
 0112                return;
 113
 481114            if (rendereable == null)
 115            {
 0116                logger.Log( $"Trying to add null rendereable! (scene number: {sceneNumber})");
 0117                return;
 118            }
 119
 481120            if (sceneNumber <= 0 || !self.sceneData.ContainsKey(sceneNumber))
 121            {
 0122                logger.Log($"AddRendereable", $"invalid sceneNumber! (scene number: {sceneNumber})");
 0123                return;
 124            }
 125
 481126            var sceneData = self.sceneData[sceneNumber];
 127
 481128            if ( sceneData.ignoredOwners.Contains(rendereable.ownerId))
 6129                return;
 130
 475131            sceneData.materials.AddRefCount(rendereable.materials);
 475132            sceneData.meshes.AddRefCount(rendereable.meshes);
 475133            sceneData.textures.AddRefCount(rendereable.textures);
 475134            sceneData.renderers.Add(rendereable.renderers);
 475135            sceneData.owners.Add(rendereable.ownerId);
 475136            sceneData.animationClips.AddRefCount(rendereable.animationClips);
 475137            sceneData.triangles.Set( sceneData.triangles.Get() + rendereable.totalTriangleCount);
 475138            sceneData.animationClipSize.Set(sceneData.animationClipSize.Get() + rendereable.animationClipSize);
 475139            sceneData.meshDataSize.Set(sceneData.meshDataSize.Get() + rendereable.meshDataSize);
 475140        }
 141
 142        public static void RemoveRendereable( this DataStore_WorldObjects self, int sceneNumber, Rendereable rendereable
 143        {
 435144            if (!self.sceneData.ContainsKey(sceneNumber))
 144145                return;
 146
 291147            if ( rendereable == null )
 148            {
 0149                logger.Log( $"Trying to remove null rendereable! (scene number: {sceneNumber})");
 0150                return;
 151            }
 152
 291153            if (sceneNumber <= 0 || !self.sceneData.ContainsKey(sceneNumber) )
 154            {
 0155                logger.Log($"RemoveRendereable", $"invalid sceneNumber! (scene number: {sceneNumber})");
 0156                return;
 157            }
 158
 291159            var sceneData = self.sceneData[sceneNumber];
 160
 291161            if ( sceneData.ignoredOwners.Contains(rendereable.ownerId))
 6162                return;
 163
 285164            sceneData.materials.RemoveRefCount(rendereable.materials);
 285165            sceneData.meshes.RemoveRefCount(rendereable.meshes);
 285166            sceneData.textures.RemoveRefCount(rendereable.textures);
 285167            sceneData.renderers.Remove(rendereable.renderers);
 285168            sceneData.owners.Remove(rendereable.ownerId);
 285169            sceneData.animationClips.RemoveRefCount(rendereable.animationClips);
 285170            sceneData.triangles.Set( sceneData.triangles.Get() - rendereable.totalTriangleCount);
 285171            sceneData.animationClipSize.Set(sceneData.animationClipSize.Get() - rendereable.animationClipSize);
 285172            sceneData.meshDataSize.Set(sceneData.meshDataSize.Get() - rendereable.meshDataSize);
 285173        }
 174    }
 175}