update EcsMask

This commit is contained in:
Mikhail 2024-10-05 20:59:16 +08:00
parent 3b33c0fab8
commit 5e3913b31b
3 changed files with 22 additions and 2 deletions

View File

@ -5,7 +5,7 @@ using System.Collections.Generic;
namespace DCFApixels.DragonECS
{
public abstract class EcsAspect : ITemplateNode
public abstract class EcsAspect : ITemplateNode, IEcsComponentMask
{
#region Initialization Halpers
[ThreadStatic]
@ -302,6 +302,10 @@ namespace DCFApixels.DragonECS
}
}
#endregion
#region Other
EcsMask IEcsComponentMask.ToMask(EcsWorld world) { return _mask; }
#endregion
}
#region EcsAspectExtensions

View File

@ -495,10 +495,26 @@ namespace DCFApixels.DragonECS
{
return a.World.Get<WorldMaskComponent>().ExceptMask(a, b);
}
public static EcsMask operator -(EcsMask a, IEcsComponentMask b)
{
return a.World.Get<WorldMaskComponent>().ExceptMask(a, b.ToMask(a.World));
}
public static EcsMask operator -(IEcsComponentMask b, EcsMask a)
{
return a.World.Get<WorldMaskComponent>().ExceptMask(b.ToMask(a.World), a);
}
public static EcsMask operator +(EcsMask a, EcsMask b)
{
return a.World.Get<WorldMaskComponent>().CombineMask(a, b);
}
public static EcsMask operator +(EcsMask a, IEcsComponentMask b)
{
return a.World.Get<WorldMaskComponent>().CombineMask(a, b.ToMask(a.World));
}
public static EcsMask operator +(IEcsComponentMask b, EcsMask a)
{
return a.World.Get<WorldMaskComponent>().CombineMask(b.ToMask(a.World), a);
}
public static implicit operator EcsMask((IEcsComponentMask mask, EcsWorld world) a)
{
return a.mask.ToMask(a.world);

View File

@ -15,7 +15,7 @@ namespace DCFApixels.DragonECS
where TAspect : EcsAspect, new()
where TCollection : IEntityStorage
{
if(ReferenceEquals(entities, entities.World))
if (ReferenceEquals(entities, entities.World))
{
entities.World.GetQueryCache(out EcsWhereExecutor executor, out aspect);
return executor.Execute();