c1_unity/Assets/Scripts/Component/Battle/BattleControlColliderContainer.cs
2023-04-03 11:04:31 +08:00

103 lines
2.0 KiB
C#

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<BattleControlCollider> colliderList = new List<BattleControlCollider>();
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);
}
}
}