using System; using System.Collections.Generic; using HG; using UnityEngine; namespace RoR2.HudOverlay; public class TargetTracker : IDisposable { public GameObject target; public int refCount; private List overlayControllers; private bool disposed; public TargetTracker() { overlayControllers = CollectionPool>.RentCollection(); } public void Dispose() { if (!disposed) { disposed = true; while (overlayControllers.Count > 0) { RemoveOverlayAt(overlayControllers.Count - 1); } overlayControllers = CollectionPool>.ReturnCollection(overlayControllers); } } public void AddOverlay(OverlayController overlayController) { overlayControllers.Add(overlayController); } public void RemoveOverlay(OverlayController overlayController) { int i = overlayControllers.IndexOf(overlayController); RemoveOverlayAt(i); } private void RemoveOverlayAt(int i) { overlayControllers.RemoveAt(i); } public void GetOverlayControllers(List dest) { ListUtils.AddRange(dest, overlayControllers); } }