示例#1
0
    private static int swIndex(AutoTile.Direction value)
    {
        //needed checks -> sw | s | w
        var toTest = AutoTile.Direction.None;

        if ((value & AutoTile.Direction.SouthWest) != 0)
        {
            toTest |= AutoTile.Direction.SouthWest;
        }
        if ((value & AutoTile.Direction.South) != 0)
        {
            toTest |= AutoTile.Direction.South;
        }
        if ((value & AutoTile.Direction.West) != 0)
        {
            toTest |= AutoTile.Direction.West;
        }

        switch (toTest)
        {
        case AutoTile.Direction.SouthWest | AutoTile.Direction.South | AutoTile.Direction.West:
            return(10);

        case AutoTile.Direction.SouthWest | AutoTile.Direction.West:
        case AutoTile.Direction.West:
            return(18);

        case AutoTile.Direction.SouthWest | AutoTile.Direction.South:
        case AutoTile.Direction.South:
            return(8);

        case AutoTile.Direction.West | AutoTile.Direction.South:
            return(2);
        }

        return(16);
    }
示例#2
0
    private static int neIndex(AutoTile.Direction value)
    {
        //needed checks -> ne | n | e
        var toTest = AutoTile.Direction.None;

        if ((value & AutoTile.Direction.NorthEast) != 0)
        {
            toTest |= AutoTile.Direction.NorthEast;
        }
        if ((value & AutoTile.Direction.North) != 0)
        {
            toTest |= AutoTile.Direction.North;
        }
        if ((value & AutoTile.Direction.East) != 0)
        {
            toTest |= AutoTile.Direction.East;
        }

        switch (toTest)
        {
        case AutoTile.Direction.NorthEast | AutoTile.Direction.North | AutoTile.Direction.East:
            return(13);

        case AutoTile.Direction.NorthEast | AutoTile.Direction.East:
        case AutoTile.Direction.East:
            return(5);

        case AutoTile.Direction.NorthEast | AutoTile.Direction.North:
        case AutoTile.Direction.North:
            return(15);

        case AutoTile.Direction.East | AutoTile.Direction.North:
            return(1);
        }
        return(7);
    }
示例#3
0
    private static int nwIndex(AutoTile.Direction value)
    {
        //needed checks -> nw | n | w
        var toTest = AutoTile.Direction.None;

        if ((value & AutoTile.Direction.NorthWest) != 0)
        {
            toTest |= AutoTile.Direction.NorthWest;
        }
        if ((value & AutoTile.Direction.North) != 0)
        {
            toTest |= AutoTile.Direction.North;
        }
        if ((value & AutoTile.Direction.West) != 0)
        {
            toTest |= AutoTile.Direction.West;
        }

        switch (toTest)
        {
        case AutoTile.Direction.NorthWest | AutoTile.Direction.North | AutoTile.Direction.West:
            return(14);

        case AutoTile.Direction.NorthWest | AutoTile.Direction.West:
        case AutoTile.Direction.West:
            return(6);

        case AutoTile.Direction.NorthWest | AutoTile.Direction.North:
        case AutoTile.Direction.North:
            return(12);

        case AutoTile.Direction.West | AutoTile.Direction.North:
            return(0);
        }
        return(4);
    }
示例#4
0
    private static int seIndex(AutoTile.Direction value)
    {
        //needed checks -> se | s | e
        var toTest = AutoTile.Direction.None;

        if ((value & AutoTile.Direction.SouthEast) != 0)
        {
            toTest |= AutoTile.Direction.SouthEast;
        }
        if ((value & AutoTile.Direction.South) != 0)
        {
            toTest |= AutoTile.Direction.South;
        }
        if ((value & AutoTile.Direction.East) != 0)
        {
            toTest |= AutoTile.Direction.East;
        }

        switch (toTest)
        {
        case AutoTile.Direction.SouthEast | AutoTile.Direction.South | AutoTile.Direction.East:
            return(9);

        case AutoTile.Direction.SouthEast | AutoTile.Direction.East:
        case AutoTile.Direction.East:
            return(17);

        case AutoTile.Direction.SouthEast | AutoTile.Direction.South:
        case AutoTile.Direction.South:
            return(11);

        case AutoTile.Direction.East | AutoTile.Direction.South:
            return(3);
        }
        return(19);
    }