< Summary

Class:EntityWireframe
Assembly:DebugPlugins_ShapesBoundingBoxDisplayer
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/DebugPlugins/ShapesBoundingBoxDisplayer/EntityWireframe.cs
Covered lines:39
Uncovered lines:4
Coverable lines:43
Total lines:96
Line coverage:90.6% (39 of 43)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
EntityWireframe(...)0%110100%
Dispose()0%110100%
OnShapeUpdated(...)0%3.083078.95%
OnShapeCleaned(...)0%110100%
LateUpdate()0%220100%
CleanWireframe()0%220100%
DestroyWireframe(...)0%2.032080%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using DCL.Models;
 5using DCLPlugins.DebugPlugins.Commons;
 6using UnityEngine;
 7using Object = UnityEngine.Object;
 8
 9internal class EntityWireframe : IShapeListener
 10{
 11    internal const float WIREFRAME_SIZE_MULTIPLIER = 1.01f;
 12
 13    private readonly GameObject wireframeOriginal;
 14    private readonly IUpdateEventHandler updateEventHandler;
 15
 1716    internal readonly List<GameObject> entityWireframes = new List<GameObject>();
 17    private MeshesInfo meshesInfo;
 18
 1719    public EntityWireframe(GameObject wireframeOriginal, IUpdateEventHandler updateEventHandler)
 20    {
 1721        this.wireframeOriginal = wireframeOriginal;
 1722        this.updateEventHandler = updateEventHandler;
 1723    }
 24
 25    void IDisposable.Dispose()
 26    {
 1727        CleanWireframe();
 1728    }
 29
 30    void IShapeListener.OnShapeUpdated(IDCLEntity entity)
 31    {
 1732        updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 33
 1734        meshesInfo = entity.meshesInfo;
 1735        int wireframesCount = entityWireframes.Count;
 1736        int renderersCount = meshesInfo.renderers.Length;
 37
 6838        for (int i = wireframesCount; i < renderersCount; i++)
 39        {
 1740            var wireframe = Object.Instantiate(wireframeOriginal);
 1741            wireframe.transform.localScale = Vector3.zero;
 1742            wireframe.SetActive(true);
 1743            entityWireframes.Add(wireframe);
 44        }
 45
 3446        for (int i = wireframesCount; i > renderersCount; i--)
 47        {
 048            int index = i - 1;
 049            DestroyWireframe(entityWireframes[index]);
 050            entityWireframes.RemoveAt(index);
 51        }
 52
 1753        updateEventHandler.AddListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 1754    }
 55
 56    void IShapeListener.OnShapeCleaned(IDCLEntity entity)
 57    {
 158        CleanWireframe();
 159    }
 60
 61    internal void LateUpdate()
 62    {
 263        int renderersCount = meshesInfo.renderers.Length;
 64
 865        for (int i = 0; i < renderersCount; i++)
 66        {
 267            Transform wireframeT = entityWireframes[i].transform;
 268            Renderer renderer = meshesInfo.renderers[i];
 269            Bounds rendererBounds = renderer.bounds;
 70
 271            wireframeT.position = rendererBounds.center;
 272            wireframeT.localScale = rendererBounds.size * WIREFRAME_SIZE_MULTIPLIER;
 73
 274            wireframeT.gameObject.SetActive(true);
 75        }
 276    }
 77
 78    private void CleanWireframe()
 79    {
 7080        for (int i = 0; i < entityWireframes.Count; i++)
 81        {
 1782            DestroyWireframe(entityWireframes[i]);
 83        }
 1884        entityWireframes.Clear();
 1885        updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.LateUpdate, LateUpdate);
 1886    }
 87
 88    private void DestroyWireframe(GameObject wireframe)
 89    {
 1790        if (wireframe == null)
 091            return;
 92
 1793        wireframe.SetActive(false);
 1794        Object.Destroy(wireframe);
 1795    }
 96}