using UnityEngine; using System.Collections.Generic; namespace BF { public class BattleControlColliderContainer { [System.NonSerialized] public bool IsRecycle = false; [System.NonSerialized] public bool IsSearchByCollider = false; private List colliderList = new List(); public void InitBase() { colliderList.Clear(); } public void SetIsSearchByCollider(bool isSearchByCollider) { IsSearchByCollider = isSearchByCollider; } public void Add(BattleControlCollider collider) { colliderList.Add(collider); collider.SetContainer(this); } public void Remove(BattleControlCollider collider) { colliderList.Remove(collider); } public int GetSearchTargetsCount() { var count = 0; for (int i = 0; i < colliderList.Count; i++) { count += colliderList[i].GetSearchTargetsCount(); } return count; } public int GetCollidersCount() { return colliderList.Count; } public BattleControlCollider GetCollider(int colliderIndex) { return colliderList[colliderIndex]; } public int GetTargetId(int colliderIndex, int index) { return colliderList[colliderIndex].GetTargetId(index); } public void CachePosition(int index) { colliderList[index].CachePosition(); } public float FastGetColliderX(int index) { return colliderList[index].CacheX; } public float FastGetColliderZ(int index) { return colliderList[index].CacheZ; } public void StartSearch() { for (int i = 0; i < colliderList.Count; i++) { colliderList[i].StartSearch(); } } public bool GetIsFinished() { if (IsSearchByCollider && colliderList.Count > 0) { return false; } return true; } public void Recycle() { for (int i = 0; i < colliderList.Count; i++) { colliderList[i].RemoveFromContainer(); colliderList[i].Recycle(); } colliderList.Clear(); BFMain.Instance.BattleMgr.PoolHelper.RecycleColliderContainer(this); } } }