using System.Collections.Generic; namespace MoonTools.ECS { public struct FilterBuilder { World World; HashSet Included; HashSet Excluded; internal FilterBuilder(World world) { World = world; Included = new HashSet(); Excluded = new HashSet(); } private FilterBuilder(World world, HashSet included, HashSet excluded) { World = world; Included = included; Excluded = excluded; } public FilterBuilder Include() where T : unmanaged { Included.Add(World.GetTypeId()); return new FilterBuilder(World, Included, Excluded); } public FilterBuilder Exclude() where T : unmanaged { Excluded.Add(World.GetTypeId()); return new FilterBuilder(World, Included, Excluded); } public Filter Build() { return new Filter(World.EmptyArchetype, Included, Excluded); } } }