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 namespace DCFApixels.DragonECS
{ {
public abstract class EcsAspect : ITemplateNode public abstract class EcsAspect : ITemplateNode, IEcsComponentMask
{ {
#region Initialization Halpers #region Initialization Halpers
[ThreadStatic] [ThreadStatic]
@ -302,6 +302,10 @@ namespace DCFApixels.DragonECS
} }
} }
#endregion #endregion
#region Other
EcsMask IEcsComponentMask.ToMask(EcsWorld world) { return _mask; }
#endregion
} }
#region EcsAspectExtensions #region EcsAspectExtensions

View File

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