فهرست منبع

Alternate Atlas constructor.

NathanSweet 12 سال پیش
والد
کامیت
0c5e3b4400
1فایلهای تغییر یافته به همراه27 افزوده شده و 20 حذف شده
  1. 27 20
      spine-csharp/src/Atlas.cs

+ 27 - 20
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<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);
 	}
-}
+}