mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-18 01:44:35 +08:00
update EcsMask
This commit is contained in:
parent
3b33c0fab8
commit
5e3913b31b
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user