< Summary

Class:DCL.Rendering.CullingObjectsTracker
Assembly:CullingController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/Culling/CullingObjectsTracker.cs
Covered lines:26
Uncovered lines:2
Coverable lines:28
Total lines:106
Line coverage:92.8% (26 of 28)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CullingObjectsTracker()0%2100%
PopulateRenderersList()0%550100%
ForcePopulateRenderersList(...)0%110100%
SetIgnoredLayersMask(...)0%110100%
MarkDirty()0%110100%
IsDirty()0%110100%
GetRenderers()0%110100%
GetSkinnedRenderers()0%110100%
GetAnimations()0%110100%
Dispose()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/Culling/CullingObjectsTracker.cs

#LineLine coverage
 1using System.Collections;
 2using System.Linq;
 3using UnityEngine;
 4using Object = UnityEngine.Object;
 5
 6namespace DCL.Rendering
 7{
 8    /// <summary>
 9    /// This class is used for tracking all the renderers, skinnedMeshRenderers and Animations of the world.
 10    ///
 11    /// It currently uses a very lazy FindObjectsOfType approach, but is enough for its purposes as its used
 12    /// to optimize a bigger bottleneck.
 13    /// </summary>
 14    public class CullingObjectsTracker : ICullingObjectsTracker
 15    {
 16        Renderer[] renderers;
 17        SkinnedMeshRenderer[] skinnedRenderers;
 18        Animation[] animations;
 19
 020        bool dirty = true;
 21        private int ignoredLayersMask;
 22
 23        /// <summary>
 24        /// If the dirty flag is true, this coroutine will re-populate all the tracked objects.
 25        /// </summary>
 26        public IEnumerator PopulateRenderersList()
 27        {
 36828            if (!dirty)
 129                yield break;
 30
 36731            renderers = Object.FindObjectsOfType<Renderer>()
 699532                              .Where(x => !(x is SkinnedMeshRenderer)
 33                                          && !(x is ParticleSystemRenderer)
 34                                          && ((1 << x.gameObject.layer) & ignoredLayersMask) == 0)
 35                              .ToArray();
 36
 36737            yield return null;
 38
 36439            skinnedRenderers = Object.FindObjectsOfType<SkinnedMeshRenderer>()
 740                                     .Where(x => ((1 << x.gameObject.layer) & ignoredLayersMask) == 0)
 41                                     .ToArray();
 42
 36443            yield return null;
 44
 22145            animations = Object.FindObjectsOfType<Animation>();
 46
 22147            dirty = false;
 22148        }
 49
 50        /// <summary>
 51        ///  This will re-populate all the tracked objects in a sync way.
 52        /// </summary>
 53        /// <param name="includeInactives">True for add inactive objects to the tracked list.</param>
 54        public void ForcePopulateRenderersList(bool includeInactives)
 55        {
 67656            renderers = Object.FindObjectsOfType<Renderer>(includeInactives)
 1494257                              .Where(x => !(x is SkinnedMeshRenderer)
 58                                          && !(x is ParticleSystemRenderer)
 59                                          && ((1 << x.gameObject.layer) & ignoredLayersMask) == 0)
 60                              .ToArray();
 61
 67662            skinnedRenderers = Object.FindObjectsOfType<SkinnedMeshRenderer>(includeInactives)
 063                                     .Where(x => ((1 << x.gameObject.layer) & ignoredLayersMask) == 0)
 64                                     .ToArray();
 67665        }
 66
 138667        public void SetIgnoredLayersMask(int ignoredLayersMask) { this.ignoredLayersMask = ignoredLayersMask; }
 68
 69        /// <summary>
 70        /// Sets the dirty flag to true to make PopulateRenderersList retrieve all the scene objects on its next call.
 71        /// </summary>
 267072        public void MarkDirty() { dirty = true; }
 73
 74        /// <summary>
 75        /// Returns true if dirty.
 76        /// </summary>
 77        /// <returns>True if dirty.</returns>
 378        public bool IsDirty() { return dirty; }
 79
 80        /// <summary>
 81        /// Returns the renderers list.
 82        /// </summary>
 83        /// <returns>An array with all the tracked renderers.</returns>
 87984        public Renderer[] GetRenderers() { return renderers; }
 85
 86        /// <summary>
 87        /// Returns the skinned renderers list.
 88        /// </summary>
 89        /// <returns>An array with all the tracked skinned renderers.</returns>
 68690        public SkinnedMeshRenderer[] GetSkinnedRenderers() { return skinnedRenderers; }
 91
 92        /// <summary>
 93        /// Returns the animations list.
 94        /// </summary>
 95        /// <returns>An array with all the tracked animations.</returns>
 68196        public Animation[] GetAnimations() { return animations; }
 97
 98        public void Dispose()
 99        {
 695100            dirty = true;
 695101            renderers = null;
 695102            animations = null;
 695103            skinnedRenderers = null;
 695104        }
 105    }
 106}