Example #1
0
        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);
        }
Example #2
0
        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);
        }