diff --git a/spine-csharp/src/Atlas.cs b/spine-csharp/src/Atlas.cs index aa34cb7c1..b4fb5659a 100644 --- a/spine-csharp/src/Atlas.cs +++ b/spine-csharp/src/Atlas.cs @@ -29,8 +29,8 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - + *****************************************************************************/ + using System; using System.Collections.Generic; using System.IO; @@ -41,27 +41,27 @@ using Windows.Storage; #endif namespace Spine { - public class Atlas { + public class Atlas { List pages = new List(); List regions = new List(); TextureLoader textureLoader; #if WINDOWS_STOREAPP - private async Task ReadFile(string path, TextureLoader textureLoader) { - var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; - var file = await folder.GetFileAsync(path).AsTask().ConfigureAwait(false); - using (var reader = new StreamReader(await file.OpenStreamForReadAsync().ConfigureAwait(false))) { - try { - Load(reader, Path.GetDirectoryName(path), textureLoader); - } catch (Exception ex) { - throw new Exception("Error reading atlas file: " + path, ex); - } - } - } + private async Task ReadFile(string path, TextureLoader textureLoader) { + var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; + var file = await folder.GetFileAsync(path).AsTask().ConfigureAwait(false); + using (var reader = new StreamReader(await file.OpenStreamForReadAsync().ConfigureAwait(false))) { + try { + Load(reader, Path.GetDirectoryName(path), textureLoader); + } catch (Exception ex) { + throw new Exception("Error reading atlas file: " + path, ex); + } + } + } - public Atlas(String path, TextureLoader textureLoader) { - this.ReadFile(path, textureLoader).Wait(); - } + public Atlas(String path, TextureLoader textureLoader) { + this.ReadFile(path, textureLoader).Wait(); + } #else public Atlas (String path, TextureLoader textureLoader) { using (StreamReader reader = new StreamReader(path)) { @@ -74,10 +74,16 @@ namespace Spine { } #endif - public Atlas (TextReader reader, String dir, TextureLoader textureLoader) { + public Atlas (TextReader reader, String dir, TextureLoader textureLoader) { Load(reader, dir, textureLoader); } + public Atlas (List pages, List regions) { + this.pages = pages; + this.regions = regions; + this.textureLoader = null; + } + private void Load (TextReader reader, String imagesDir, TextureLoader textureLoader) { if (textureLoader == null) throw new ArgumentNullException("textureLoader cannot be null."); this.textureLoader = textureLoader; @@ -204,6 +210,7 @@ namespace Spine { } public void Dispose () { + if (textureLoader == null) return; for (int i = 0, n = pages.Count; i < n; i++) textureLoader.Unload(pages[i].rendererObject); } @@ -263,4 +270,4 @@ namespace Spine { void Load (AtlasPage page, String path); void Unload (Object texture); } -} +}