From 5e3913b31bc0704d9ae3f1e4226f7607af67ede1 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 5 Oct 2024 20:59:16 +0800 Subject: [PATCH] update EcsMask --- src/EcsAspect.cs | 6 +++++- src/EcsMask.cs | 16 ++++++++++++++++ src/Executors/Queries.cs | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index dc11329..5d5aa29 100644 --- a/src/EcsAspect.cs +++ b/src/EcsAspect.cs @@ -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 diff --git a/src/EcsMask.cs b/src/EcsMask.cs index 4863815..8d135dc 100644 --- a/src/EcsMask.cs +++ b/src/EcsMask.cs @@ -495,10 +495,26 @@ namespace DCFApixels.DragonECS { return a.World.Get().ExceptMask(a, b); } + public static EcsMask operator -(EcsMask a, IEcsComponentMask b) + { + return a.World.Get().ExceptMask(a, b.ToMask(a.World)); + } + public static EcsMask operator -(IEcsComponentMask b, EcsMask a) + { + return a.World.Get().ExceptMask(b.ToMask(a.World), a); + } public static EcsMask operator +(EcsMask a, EcsMask b) { return a.World.Get().CombineMask(a, b); } + public static EcsMask operator +(EcsMask a, IEcsComponentMask b) + { + return a.World.Get().CombineMask(a, b.ToMask(a.World)); + } + public static EcsMask operator +(IEcsComponentMask b, EcsMask a) + { + return a.World.Get().CombineMask(b.ToMask(a.World), a); + } public static implicit operator EcsMask((IEcsComponentMask mask, EcsWorld world) a) { return a.mask.ToMask(a.world); diff --git a/src/Executors/Queries.cs b/src/Executors/Queries.cs index bce01fb..3e028c2 100644 --- a/src/Executors/Queries.cs +++ b/src/Executors/Queries.cs @@ -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();