update MetaID.CollisionList

This commit is contained in:
DCFApixels 2025-03-20 13:36:37 +08:00
parent 9078b8da32
commit 88328d354c

View File

@ -160,6 +160,8 @@ namespace DCFApixels.DragonECS
private Entry[] _entries; private Entry[] _entries;
private int _collisionsCount; private int _collisionsCount;
private int _listsCount; private int _listsCount;
private HashSet<string> _collidingIDs;
public int CollisionsCount public int CollisionsCount
{ {
get { return _collisionsCount; } get { return _collisionsCount; }
@ -181,6 +183,15 @@ namespace DCFApixels.DragonECS
} }
} }
public bool IsCollidingID(string id)
{
if(_collidingIDs== null)
{
return false;
}
return _collidingIDs.Contains(id);
}
public CollisionList(IEnumerable<TypeMeta> metas) public CollisionList(IEnumerable<TypeMeta> metas)
{ {
var metasCount = metas.Count(); var metasCount = metas.Count();
@ -223,6 +234,7 @@ namespace DCFApixels.DragonECS
if (hasCollision) if (hasCollision)
{ {
_collidingIDs = new HashSet<string>();
for (int i = 0; i < _listsCount; i++) for (int i = 0; i < _listsCount; i++)
{ {
ref var list = ref _linkedLists[i]; ref var list = ref _linkedLists[i];
@ -231,6 +243,10 @@ namespace DCFApixels.DragonECS
_linkedLists[i--] = _linkedLists[--_listsCount]; _linkedLists[i--] = _linkedLists[--_listsCount];
} }
} }
for (int i = 0; i < _listsCount; i++)
{
_collidingIDs.Add(this[i].MetaID);
}
} }
else else
{ {