Example #1
0
            public Triangle(TriangleOrientation orientation, SubTriangles id, int resolution)
            {
                Resolution  = resolution;
                Orientation = orientation;
                Children    = new Dictionary <SubTriangles, Triangle>();
                Cells       = new Dictionary <TriangleCells, Cell>();
                Id          = id;

                if (resolution == 0)
                {
                    return;
                }

                var nextResolution = resolution - 1;

                Children.Add(SubTriangles.TriTopBot, new Triangle(orientation, SubTriangles.TriTopBot, nextResolution));
                Children.Add(SubTriangles.TriLeft, new Triangle(orientation, SubTriangles.TriLeft, nextResolution));
                Children.Add(SubTriangles.TriRight, new Triangle(orientation, SubTriangles.TriRight, nextResolution));
                Children.Add(SubTriangles.HexBot, new Triangle(TriangleOrientation.Up, SubTriangles.HexBot, nextResolution));
                Children.Add(SubTriangles.HexBotLeft, new Triangle(TriangleOrientation.Down, SubTriangles.HexBotLeft, nextResolution));
                Children.Add(SubTriangles.HexBotRight, new Triangle(TriangleOrientation.Down, SubTriangles.HexBotRight, nextResolution));
                Children.Add(SubTriangles.HexTop, new Triangle(TriangleOrientation.Down, SubTriangles.HexTop, nextResolution));
                Children.Add(SubTriangles.HexTopLeft, new Triangle(TriangleOrientation.Up, SubTriangles.HexTopLeft, nextResolution));
                Children.Add(SubTriangles.HexTopRight, new Triangle(TriangleOrientation.Up, SubTriangles.HexTopRight, nextResolution));
            }
Example #2
0
        private int GetCtrVert(SubTriangles tri, bool isUp)
        {
            switch (tri)
            {
            case SubTriangles.None: return(0);

            case SubTriangles.HexBot: return(2);

            case SubTriangles.HexBotLeft: return(2);

            case SubTriangles.HexBotRight: return(0);

            case SubTriangles.HexTop: return(1);

            case SubTriangles.HexTopLeft: return(1);

            case SubTriangles.HexTopRight: return(0);

            case SubTriangles.TriLeft: return(0);

            case SubTriangles.TriRight: return(isUp ? 1 : 2);

            case SubTriangles.TriTopBot: return(isUp ? 2 : 1);
            }

            return(0);
        }