public ICollection <NodeGeneratorItem> Generate() { var items = new List <NodeGeneratorItem>(); var patterns = new List <Pattern <Patches> >(); var mirrorMapper = CreateMirrorMapper(); int mirrorCount = 0; foreach (var fingerprint in GetFingerprints()) { var pattern = Pattern <Patches> .CreatePattern(fingerprint, mirrorMapper); if (!patterns.Contains(pattern)) { patterns.Add(pattern); var node = CreateNode(pattern); mirrorCount += 1; var item = new NodeGeneratorItem() { Name = string.Format("Mirror Block {0}", mirrorCount), Node = node, Tags = new string[] { "Symmetric", "4 Patch" } }; items.Add(item); } } var pinwheelMapper = CreatePinwheelMapper(); int pinwheelCount = 0; foreach (var fingerprint in GetFingerprints()) { var pattern = Pattern <Patches> .CreatePattern(fingerprint, pinwheelMapper); if (!patterns.Contains(pattern)) { patterns.Add(pattern); var node = CreateNode(pattern); pinwheelCount += 1; var item = new NodeGeneratorItem() { Name = string.Format("Pinwheel Block {0}", pinwheelCount), Node = node, Tags = new string[] { "Symmetric", "4 Patch" } }; items.Add(item); } } return(items); }
public ICollection <NodeGeneratorItem> Generate() { var items = new List <NodeGeneratorItem>(); var patterns = new Dictionary <string, Pattern <Patches> >(); foreach (var fingerprint in GetFingerprints()) { var pattern = GetCanonical(Pattern <Patches> .CreatePattern(fingerprint, Resources.MirrorFingerprintMapper)); var signature = pattern.GetSignature(); _ = patterns.TryAdd(signature, pattern); } foreach (var fingerprint in GetFingerprints()) { var pattern = GetCanonical(Pattern <Patches> .CreatePattern(fingerprint, Resources.PinwheelFingerprintMapper)); var signature = pattern.GetSignature(); _ = patterns.TryAdd(signature, pattern); } int count = 0; foreach (var signature in patterns.Keys.OrderBy(r => r)) { var pattern = patterns[signature]; var tags = GetTags(pattern); var category = GetCategory(tags); var name = $"{category}/Block {++count:0000}"; items.Add( new NodeGeneratorItem() { Name = name, Node = CreateNode(pattern), Tags = tags.ToArray() }); } return(items); }