private void Load(TextReader reader, string imagesDir, TextureLoader textureLoader)
{
if (textureLoader == null)
{
throw new ArgumentNullException("textureLoader cannot be null.");
}
this.textureLoader = textureLoader;
string[] array = new string[4];
AtlasPage atlasPage = null;
for (;;)
{
string text = reader.ReadLine();
if (text == null)
{
break;
}
if (text.Trim().Length == 0)
{
atlasPage = null;
}
else if (atlasPage == null)
{
atlasPage = new AtlasPage();
atlasPage.name = text;
if (Atlas.ReadTuple(reader, array) == 2)
{
atlasPage.width = int.Parse(array[0]);
atlasPage.height = int.Parse(array[1]);
Atlas.ReadTuple(reader, array);
}
atlasPage.format = (Format)Enum.Parse(typeof(Format), array[0], false);
Atlas.ReadTuple(reader, array);
atlasPage.minFilter = (TextureFilter)Enum.Parse(typeof(TextureFilter), array[0], false);
atlasPage.magFilter = (TextureFilter)Enum.Parse(typeof(TextureFilter), array[1], false);
string a = Atlas.ReadValue(reader);
atlasPage.uWrap = TextureWrap.ClampToEdge;
atlasPage.vWrap = TextureWrap.ClampToEdge;
if (a == "x")
{
atlasPage.uWrap = TextureWrap.Repeat;
}
else if (a == "y")
{
atlasPage.vWrap = TextureWrap.Repeat;
}
else if (a == "xy")
{
atlasPage.uWrap = (atlasPage.vWrap = TextureWrap.Repeat);
}
textureLoader.Load(atlasPage, Path.Combine(imagesDir, text));
this.pages.Add(atlasPage);
}
else
{
AtlasRegion atlasRegion = new AtlasRegion();
atlasRegion.name = text;
atlasRegion.page = atlasPage;
atlasRegion.rotate = bool.Parse(Atlas.ReadValue(reader));
Atlas.ReadTuple(reader, array);
int num = int.Parse(array[0]);
int num2 = int.Parse(array[1]);
Atlas.ReadTuple(reader, array);
int num3 = int.Parse(array[0]);
int num4 = int.Parse(array[1]);
atlasRegion.u = (float)num / (float)atlasPage.width;
atlasRegion.v = (float)num2 / (float)atlasPage.height;
if (atlasRegion.rotate)
{
atlasRegion.u2 = (float)(num + num4) / (float)atlasPage.width;
atlasRegion.v2 = (float)(num2 + num3) / (float)atlasPage.height;
}
else
{
atlasRegion.u2 = (float)(num + num3) / (float)atlasPage.width;
atlasRegion.v2 = (float)(num2 + num4) / (float)atlasPage.height;
}
atlasRegion.x = num;
atlasRegion.y = num2;
atlasRegion.width = Math.Abs(num3);
atlasRegion.height = Math.Abs(num4);
if (Atlas.ReadTuple(reader, array) == 4)
{
atlasRegion.splits = new int[]
{
int.Parse(array[0]),
int.Parse(array[1]),
int.Parse(array[2]),
int.Parse(array[3])
};
if (Atlas.ReadTuple(reader, array) == 4)
{
atlasRegion.pads = new int[]
{
int.Parse(array[0]),
int.Parse(array[1]),
int.Parse(array[2]),
int.Parse(array[3])
};
Atlas.ReadTuple(reader, array);
}
}
atlasRegion.originalWidth = int.Parse(array[0]);
atlasRegion.originalHeight = int.Parse(array[1]);
Atlas.ReadTuple(reader, array);
atlasRegion.offsetX = (float)int.Parse(array[0]);
atlasRegion.offsetY = (float)int.Parse(array[1]);
atlasRegion.index = int.Parse(Atlas.ReadValue(reader));
this.regions.Add(atlasRegion);
}
}
}