|
@@ -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<AtlasPage> pages = new List<AtlasPage>();
|
|
|
List<AtlasRegion> regions = new List<AtlasRegion>();
|
|
|
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);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public Atlas(String path, TextureLoader textureLoader) {
|
|
|
- this.ReadFile(path, textureLoader).Wait();
|
|
|
- }
|
|
|
+ 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();
|
|
|
+ }
|
|
|
#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<AtlasPage> pages, List<AtlasRegion> 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);
|
|
|
}
|
|
|
-}
|
|
|
+}
|