Example #1
0
    public int[] GetTriangles()
    {
        int bitMask = 0;

        for (int i = 0; i < 4; i++)
        {
            EdgeType edge = (EdgeType)i;
            switch (edge)
            {
            case EdgeType.Top:
                if (ShouldDeactivateEdge(edge))
                {
                    bitMask += 1;
                }
                break;

            case EdgeType.Bottom:
                if (ShouldDeactivateEdge(edge))
                {
                    bitMask += 4;
                }
                break;

            case EdgeType.Left:
                if (ShouldDeactivateEdge(edge))
                {
                    bitMask += 8;
                }
                break;

            case EdgeType.Right:
                if (ShouldDeactivateEdge(edge))
                {
                    bitMask += 2;
                }
                break;
            }
        }

        return(TriangleCache.GetTrianglesForCase(bitMask));
    }