[csharp] Fixed locale-based exception when parsing a Spine atlas. Closes #1354.

This commit is contained in:
Harald Csaszar 2019-05-13 16:45:52 +02:00
parent dae8f78409
commit a8c0abc0c8

View File

@ -33,6 +33,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
@ -123,8 +124,8 @@ namespace Spine {
page.name = line; page.name = line;
if (ReadTuple(reader, tuple) == 2) { // size is only optional for an atlas packed with an old TexturePacker. if (ReadTuple(reader, tuple) == 2) { // size is only optional for an atlas packed with an old TexturePacker.
page.width = int.Parse(tuple[0]); page.width = int.Parse(tuple[0], CultureInfo.InvariantCulture);
page.height = int.Parse(tuple[1]); page.height = int.Parse(tuple[1], CultureInfo.InvariantCulture);
ReadTuple(reader, tuple); ReadTuple(reader, tuple);
} }
page.format = (Format)Enum.Parse(typeof(Format), tuple[0], false); page.format = (Format)Enum.Parse(typeof(Format), tuple[0], false);
@ -155,12 +156,12 @@ namespace Spine {
region.rotate = Boolean.Parse(ReadValue(reader)); region.rotate = Boolean.Parse(ReadValue(reader));
ReadTuple(reader, tuple); ReadTuple(reader, tuple);
int x = int.Parse(tuple[0]); int x = int.Parse(tuple[0], CultureInfo.InvariantCulture);
int y = int.Parse(tuple[1]); int y = int.Parse(tuple[1], CultureInfo.InvariantCulture);
ReadTuple(reader, tuple); ReadTuple(reader, tuple);
int width = int.Parse(tuple[0]); int width = int.Parse(tuple[0], CultureInfo.InvariantCulture);
int height = int.Parse(tuple[1]); int height = int.Parse(tuple[1], CultureInfo.InvariantCulture);
region.u = x / (float)page.width; region.u = x / (float)page.width;
region.v = y / (float)page.height; region.v = y / (float)page.height;
@ -177,25 +178,29 @@ namespace Spine {
region.height = Math.Abs(height); region.height = Math.Abs(height);
if (ReadTuple(reader, tuple) == 4) { // split is optional if (ReadTuple(reader, tuple) == 4) { // split is optional
region.splits = new [] {int.Parse(tuple[0]), int.Parse(tuple[1]), region.splits = new [] {int.Parse(tuple[0], CultureInfo.InvariantCulture),
int.Parse(tuple[2]), int.Parse(tuple[3])}; int.Parse(tuple[1], CultureInfo.InvariantCulture),
int.Parse(tuple[2], CultureInfo.InvariantCulture),
int.Parse(tuple[3], CultureInfo.InvariantCulture)};
if (ReadTuple(reader, tuple) == 4) { // pad is optional, but only present with splits if (ReadTuple(reader, tuple) == 4) { // pad is optional, but only present with splits
region.pads = new [] {int.Parse(tuple[0]), int.Parse(tuple[1]), region.pads = new [] {int.Parse(tuple[0], CultureInfo.InvariantCulture),
int.Parse(tuple[2]), int.Parse(tuple[3])}; int.Parse(tuple[1], CultureInfo.InvariantCulture),
int.Parse(tuple[2], CultureInfo.InvariantCulture),
int.Parse(tuple[3], CultureInfo.InvariantCulture)};
ReadTuple(reader, tuple); ReadTuple(reader, tuple);
} }
} }
region.originalWidth = int.Parse(tuple[0]); region.originalWidth = int.Parse(tuple[0], CultureInfo.InvariantCulture);
region.originalHeight = int.Parse(tuple[1]); region.originalHeight = int.Parse(tuple[1], CultureInfo.InvariantCulture);
ReadTuple(reader, tuple); ReadTuple(reader, tuple);
region.offsetX = int.Parse(tuple[0]); region.offsetX = int.Parse(tuple[0], CultureInfo.InvariantCulture);
region.offsetY = int.Parse(tuple[1]); region.offsetY = int.Parse(tuple[1], CultureInfo.InvariantCulture);
region.index = int.Parse(ReadValue(reader)); region.index = int.Parse(ReadValue(reader), CultureInfo.InvariantCulture);
regions.Add(region); regions.Add(region);
} }