From 089a1ab60a66a1e936a78884f57d9cfdb91f2f3e Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:01:13 +0800 Subject: [PATCH] add auto template for aspect --- src/EcsAspect.cs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index eca92f6..3096081 100644 --- a/src/EcsAspect.cs +++ b/src/EcsAspect.cs @@ -6,7 +6,7 @@ using System.Runtime.CompilerServices; namespace DCFApixels.DragonECS { - public abstract class EcsAspect + public abstract class EcsAspect : ITemplateNode { internal EcsWorld _source; internal EcsMask _mask; @@ -491,6 +491,29 @@ namespace DCFApixels.DragonECS #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 {