using System; using System.Linq; using gaemstone.Utility.IL; namespace gaemstone.ECS; public static class FilterExtensions { public static void RunOnce(World world, Delegate action) { var gen = IterActionGenerator.GetOrBuild(world, action.Method); var desc = new FilterDesc(gen.Terms.ToArray()); using var filter = new Filter(world, desc); foreach (var iter in filter.Iter()) gen.RunWithTryCatch(action.Target, iter); } }