public static BlockSystem <T> SearchByFilter(Program program, BlockFilter <T> filter) { List <T> list = new List <T>(); try { if (filter.ByGroup) { List <IMyBlockGroup> groups = new List <IMyBlockGroup>(); program.GridTerminalSystem.GetBlockGroups(groups, filter.GroupVisitor()); List <T> group_list = new List <T>(); groups.ForEach(delegate(IMyBlockGroup group) { group_list.Clear(); group.GetBlocksOfType <T>(list, filter.BlockVisitor()); list.AddList(group_list); }); } else { program.GridTerminalSystem.GetBlocksOfType <T>(list, filter.BlockVisitor()); } } catch { } program.Echo(String.Format("List<{0}>:{1}", filter.Value, list.Count)); return(new BlockSystem <T>() { program = program, List = list }); }
public static List <IMyBlockGroup> SearchGroupFilter(Program program, BlockFilter <T> filter) { List <IMyBlockGroup> groups = new List <IMyBlockGroup>(); try { if (filter.ByGroup) { program.GridTerminalSystem.GetBlockGroups(groups, filter.GroupVisitor()); } } catch { } program.Echo(String.Format("List <{0}> count: {1}", filter.Value, groups.Count)); return(groups); }