add auto template for aspect

This commit is contained in:
Mikhail 2024-04-22 17:01:13 +08:00
parent 307a84558d
commit 089a1ab60a

View File

@ -6,7 +6,7 @@ using System.Runtime.CompilerServices;
namespace DCFApixels.DragonECS namespace DCFApixels.DragonECS
{ {
public abstract class EcsAspect public abstract class EcsAspect : ITemplateNode
{ {
internal EcsWorld _source; internal EcsWorld _source;
internal EcsMask _mask; internal EcsMask _mask;
@ -491,6 +491,29 @@ namespace DCFApixels.DragonECS
#endregion #endregion
} }
#endregion #endregion
#region Template
public virtual void Apply(short worldID, int entityID)
{
EcsWorld world = EcsWorld.GetWorld(worldID);
foreach (var incTypeID in _mask.inc)
{
var pool = world.GetPoolInstance(incTypeID);
if (pool.Has(entityID) == false)
{
pool.AddRaw(entityID, null);
}
}
foreach (var excTypeID in _mask.exc)
{
var pool = world.GetPoolInstance(excTypeID);
if (pool.Has(entityID))
{
pool.Del(entityID);
}
}
}
#endregion
} }
public readonly ref struct IncludeMarker public readonly ref struct IncludeMarker
{ {