103 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
} |