< Summary

Class:SceneEntitiesTracker
Assembly:DebugPlugins_ShapesBoundingBoxDisplayer
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/DebugPlugins/ShapesBoundingBoxDisplayer/SceneEntitiesTracker.cs
Covered lines:35
Uncovered lines:1
Coverable lines:36
Total lines:94
Line coverage:97.2% (35 of 36)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SceneEntitiesTracker(...)0%110100%
Dispose()0%220100%
OnEntityAdded(...)0%110100%
OnEntityRemoved(...)0%110100%
WatchEntityShape(...)0%2.062075%
KillWatchEntityShape(...)0%330100%
GetWireframeOriginal()0%220100%
DestroyWireframeOriginal()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/DebugPlugins/ShapesBoundingBoxDisplayer/SceneEntitiesTracker.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using DCL.Helpers;
 5using DCL.Models;
 6using DCLPlugins.DebugPlugins.Commons;
 7using UnityEngine;
 8using Object = UnityEngine.Object;
 9
 10internal class SceneEntitiesTracker : ISceneListener
 11{
 12    internal const string WIREFRAME_GAMEOBJECT_NAME = "ShapeBoundingBoxWireframe";
 13    internal const string WIREFRAME_PREFAB_NAME = "Prefabs/WireframeCubeMesh";
 14
 1015    private readonly Dictionary<IDCLEntity, WatchEntityShapeHandler> entityShapeHandler = new Dictionary<IDCLEntity, Wat
 16    private readonly IUpdateEventHandler updateEventHandler;
 17
 18    private GameObject wireframeOriginal;
 19    private Material wireframeMaterial;
 20
 1021    public SceneEntitiesTracker(IUpdateEventHandler updateEventHandler)
 22    {
 1023        this.updateEventHandler = updateEventHandler;
 1024    }
 25
 26    void IDisposable.Dispose()
 27    {
 4228        foreach (var handler in entityShapeHandler.Values)
 29        {
 1130            handler.Dispose();
 31        }
 32
 1033        entityShapeHandler.Clear();
 1034        DestroyWireframeOriginal();
 1035    }
 36
 37    void ISceneListener.OnEntityAdded(IDCLEntity entity)
 38    {
 1639        WatchEntityShape(entity);
 1640    }
 41
 42    void ISceneListener.OnEntityRemoved(IDCLEntity entity)
 43    {
 544        KillWatchEntityShape(entity);
 545    }
 46
 47    private void WatchEntityShape(IDCLEntity entity)
 48    {
 1649        if (entityShapeHandler.ContainsKey(entity))
 50        {
 051            return;
 52        }
 1653        entityShapeHandler.Add(entity, new WatchEntityShapeHandler(entity,
 54            new EntityWireframe(GetWireframeOriginal(), updateEventHandler)));
 1655    }
 56
 57    private void KillWatchEntityShape(IDCLEntity entity)
 58    {
 559        if (entityShapeHandler.TryGetValue(entity, out WatchEntityShapeHandler entityWatchHandler))
 60        {
 561            entityWatchHandler.Dispose();
 562            entityShapeHandler.Remove(entity);
 63        }
 64
 565        if (entityShapeHandler.Count == 0)
 66        {
 267            DestroyWireframeOriginal();
 68        }
 569    }
 70
 71    private GameObject GetWireframeOriginal()
 72    {
 1673        if (wireframeOriginal != null)
 74        {
 975            return wireframeOriginal;
 76        }
 777        wireframeOriginal = Object.Instantiate(Resources.Load<GameObject>(WIREFRAME_PREFAB_NAME));
 778        wireframeOriginal.name = WIREFRAME_GAMEOBJECT_NAME;
 779        wireframeMaterial = wireframeOriginal.GetComponent<Renderer>().material;
 780        wireframeMaterial.SetColor(ShaderUtils.EmissionColor, Color.grey);
 781        wireframeOriginal.SetActive(false);
 782        return wireframeOriginal;
 83    }
 84
 85    private void DestroyWireframeOriginal()
 86    {
 1287        if (wireframeOriginal == null)
 88        {
 489            return;
 90        }
 891        Object.Destroy(wireframeOriginal);
 892        Object.Destroy(wireframeMaterial);
 893    }
 94}