< Summary

Class:ViewPool[T]
Assembly:ExploreHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ExploreHUD/Scripts/ViewPool.cs
Covered lines:20
Uncovered lines:1
Coverable lines:21
Total lines:52
Line coverage:95.2% (20 of 21)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ViewPool(...)0%220100%
Dispose()0%330100%
GetView()0%220100%
PoolView(...)0%110100%
GetEnumerator()0%2100%
CreateView()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ExploreHUD/Scripts/ViewPool.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using UnityEngine;
 3using System;
 4using Object = UnityEngine.Object;
 5
 6internal class ViewPool<T> : IDisposable where T : MonoBehaviour
 7{
 8    T baseView;
 129    Queue<T> viewPool = new Queue<T>();
 10
 1211    public ViewPool(T baseView, int prewarm = 0)
 12    {
 1213        this.baseView = Object.Instantiate(baseView, baseView.transform.parent);
 1214        this.baseView.gameObject.SetActive(false);
 15
 1216        PoolView(baseView);
 17
 8818        for (int i = 0; i < prewarm - 1; i++)
 19        {
 3220            PoolView(CreateView());
 21        }
 1222    }
 23
 24    public void Dispose()
 25    {
 5026        while (viewPool.Count > 0)
 27        {
 3828            var obj = viewPool.Dequeue();
 29
 3830            if (obj != null)
 3831                Object.Destroy(obj.gameObject);
 32        }
 33
 1234        Object.Destroy(baseView.gameObject);
 1235    }
 36
 37    public T GetView()
 38    {
 839        T ret = viewPool.Count > 0 ? viewPool.Dequeue() : CreateView();
 840        return ret;
 41    }
 42
 43    public void PoolView(T cellView)
 44    {
 4645        cellView.gameObject.SetActive(false);
 4646        viewPool.Enqueue(cellView);
 4647    }
 48
 049    public Queue<T>.Enumerator GetEnumerator() { return viewPool.GetEnumerator(); }
 50
 3251    T CreateView() { return Object.Instantiate(baseView, baseView.transform.parent); }
 52}