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); }
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); }
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); }