ReadValue() static private method

static private ReadValue ( TextReader reader ) : String
reader System.IO.TextReader
return String
コード例 #1
0
        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);
                }
            }
        }