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