示例#1
0
        public static Texture2D GetAutoTile(AutoTileFragments frags, Texture2D atlas, int twidth, int theight)
        {
            Texture2D toret = new Texture2D(twidth, theight, atlas.format, false);

            toret.filterMode = FilterMode.Point;
            int hw = twidth / 2;
            int hh = theight / 2;

            Color32[] blobArray = atlas.GetPixels32();

            //A Minitile
            toret.SetPixels(0, hh, hw, hh, atlas.GetPixels(frags.Apoint.x * twidth, (2 - frags.Apoint.y) * theight + hh, hw, hh));

            //B Minitile
            toret.SetPixels(hw, hh, hw, hh, atlas.GetPixels(frags.Bpoint.x * twidth + hw, (2 - frags.Bpoint.y) * theight + hh, hw, hh));

            //C MiniTile
            toret.SetPixels(0, 0, hw, hh, atlas.GetPixels(frags.Cpoint.x * twidth, (2 - frags.Cpoint.y) * theight, hw, hh));

            //D Minitile
            toret.SetPixels(hw, 0, hw, hh, atlas.GetPixels(frags.Dpoint.x * twidth + hw, (2 - frags.Dpoint.y) * theight, hw, hh));

            return(toret);
        }
示例#2
0
        public static AutoTileFragments AutoTileValueToFragments(byte value)
        {
            AutoTileFragments toret = new AutoTileFragments();

            switch (value)
            {
            case 1:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 2:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 4:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 8:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 16:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 32:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 64:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 128:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 5:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 33:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 129:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 36:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 132:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 160:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 37:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 133:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 161:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 164:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 165:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 66:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 24:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 12:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 136:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 140:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 17:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 48:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 49:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 34:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 130:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 162:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 65:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 68:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 69:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 10:
                toret.A = AutoTileFragmentType.ConvexCorner;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.Full;
                break;

            case 18:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.ConvexCorner;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 72:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.ConvexCorner;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 80:
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.ConvexCorner;
                break;

            case 138:
                toret.A = AutoTileFragmentType.ConvexCorner;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.ConcaveCorner;
                break;

            case 50:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.ConvexCorner;
                toret.C = AutoTileFragmentType.ConcaveCorner;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 76:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.ConcaveCorner;
                toret.C = AutoTileFragmentType.ConvexCorner;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 81:
                toret.A = AutoTileFragmentType.ConcaveCorner;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.ConvexCorner;
                break;

            case 26:
                toret.A = AutoTileFragmentType.ConvexCorner;
                toret.B = AutoTileFragmentType.ConvexCorner;
                toret.C = AutoTileFragmentType.HorizontalSide;
                toret.D = AutoTileFragmentType.HorizontalSide;
                break;

            case 82:
                toret.A = AutoTileFragmentType.VerticalSide;
                toret.B = AutoTileFragmentType.ConvexCorner;
                toret.C = AutoTileFragmentType.VerticalSide;
                toret.D = AutoTileFragmentType.ConvexCorner;
                break;

            case 88:
                toret.A = AutoTileFragmentType.HorizontalSide;
                toret.B = AutoTileFragmentType.HorizontalSide;
                toret.C = AutoTileFragmentType.ConvexCorner;
                toret.D = AutoTileFragmentType.ConvexCorner;
                break;

            case 74:
                toret.A = AutoTileFragmentType.ConvexCorner;
                toret.B = AutoTileFragmentType.VerticalSide;
                toret.C = AutoTileFragmentType.ConvexCorner;
                toret.D = AutoTileFragmentType.VerticalSide;
                break;

            case 90:
                toret.A = AutoTileFragmentType.ConvexCorner;
                toret.B = AutoTileFragmentType.ConvexCorner;
                toret.C = AutoTileFragmentType.ConvexCorner;
                toret.D = AutoTileFragmentType.ConvexCorner;
                break;

            default:    //This should not happen
                toret.A = AutoTileFragmentType.Full;
                toret.B = AutoTileFragmentType.Full;
                toret.C = AutoTileFragmentType.Full;
                toret.D = AutoTileFragmentType.Full;
                break;
            }

            return(toret);
        }
示例#3
0
        public static AutoTileFragments BakePositions(AutoTileFragments frags)
        {
            switch (frags.A)
            {
            case AutoTileFragmentType.ConcaveCorner:
                frags.Apoint.x = 1;
                frags.Apoint.y = 0;
                break;

            case AutoTileFragmentType.ConvexCorner:
                frags.Apoint.x = 0;
                frags.Apoint.y = 1;
                break;

            case AutoTileFragmentType.Full:
                frags.Apoint.x = 1;
                frags.Apoint.y = 2;
                break;

            case AutoTileFragmentType.VerticalSide:
                frags.Apoint.x = 1;
                frags.Apoint.y = 1;
                break;

            case AutoTileFragmentType.HorizontalSide:
                frags.Apoint.x = 0;
                frags.Apoint.y = 2;
                break;
            }

            switch (frags.B)
            {
            case AutoTileFragmentType.ConcaveCorner:
                frags.Bpoint.x = 1;
                frags.Bpoint.y = 0;
                break;

            case AutoTileFragmentType.ConvexCorner:
                frags.Bpoint.x = 1;
                frags.Bpoint.y = 1;
                break;

            case AutoTileFragmentType.Full:
                frags.Bpoint.x = 0;
                frags.Bpoint.y = 2;
                break;

            case AutoTileFragmentType.VerticalSide:
                frags.Bpoint.x = 0;
                frags.Bpoint.y = 1;
                break;

            case AutoTileFragmentType.HorizontalSide:
                frags.Bpoint.x = 1;
                frags.Bpoint.y = 2;
                break;
            }

            switch (frags.C)
            {
            case AutoTileFragmentType.ConcaveCorner:
                frags.Cpoint.x = 1;
                frags.Cpoint.y = 0;
                break;

            case AutoTileFragmentType.ConvexCorner:
                frags.Cpoint.x = 0;
                frags.Cpoint.y = 2;
                break;

            case AutoTileFragmentType.Full:
                frags.Cpoint.x = 1;
                frags.Cpoint.y = 1;
                break;

            case AutoTileFragmentType.VerticalSide:
                frags.Cpoint.x = 1;
                frags.Cpoint.y = 2;
                break;

            case AutoTileFragmentType.HorizontalSide:
                frags.Cpoint.x = 0;
                frags.Cpoint.y = 1;
                break;
            }

            switch (frags.D)
            {
            case AutoTileFragmentType.ConcaveCorner:
                frags.Dpoint.x = 1;
                frags.Dpoint.y = 0;
                break;

            case AutoTileFragmentType.ConvexCorner:
                frags.Dpoint.x = 1;
                frags.Dpoint.y = 2;
                break;

            case AutoTileFragmentType.Full:
                frags.Dpoint.x = 0;
                frags.Dpoint.y = 1;
                break;

            case AutoTileFragmentType.VerticalSide:
                frags.Dpoint.x = 0;
                frags.Dpoint.y = 2;
                break;

            case AutoTileFragmentType.HorizontalSide:
                frags.Dpoint.x = 1;
                frags.Dpoint.y = 1;
                break;
            }

            return(frags);
        }