Forráskód Böngészése

Merge branch '3.8-beta' of https://github.com/esotericsoftware/spine-runtimes into 3.8-beta

badlogic 6 éve
szülő
commit
8c0e1a845f

+ 2 - 2
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java

@@ -261,7 +261,7 @@ public class Bone implements Updatable {
 		this.y = y;
 	}
 
-	/** The local rotation. */
+	/** The local rotation in degrees, counter clockwise. */
 	public float getRotation () {
 		return rotation;
 	}
@@ -336,7 +336,7 @@ public class Bone implements Updatable {
 		this.ay = ay;
 	}
 
-	/** The applied local rotation. */
+	/** The applied local rotation in degrees, counter clockwise. */
 	public float getARotation () {
 		return arotation;
 	}

+ 31 - 11
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/MeshAttachment.java

@@ -74,35 +74,55 @@ public class MeshAttachment extends VertexAttachment {
 		float[] regionUVs = this.regionUVs;
 		if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = new float[regionUVs.length];
 		float[] uvs = this.uvs;
-		float u, v, width, height;
+		int n = uvs.length;
+		float u = region.getU(), v = region.getV(), width, height;
 		if (region instanceof AtlasRegion) {
 			AtlasRegion region = (AtlasRegion)this.region;
 			float textureWidth = region.getTexture().getWidth(), textureHeight = region.getTexture().getHeight();
-			if (region.rotate) {
-				u = region.getU() - (region.originalHeight - region.offsetY - region.packedWidth) / textureWidth;
-				v = region.getV() - (region.originalWidth - region.offsetX - region.packedHeight) / textureHeight;
+			switch (region.degrees) {
+			case 90:
+				u -= (region.originalHeight - region.offsetY - region.packedWidth) / textureWidth;
+				v -= (region.originalWidth - region.offsetX - region.packedHeight) / textureHeight;
 				width = region.originalHeight / textureWidth;
 				height = region.originalWidth / textureHeight;
-				for (int i = 0, n = uvs.length; i < n; i += 2) {
+				for (int i = 0; i < n; i += 2) {
 					uvs[i] = u + regionUVs[i + 1] * width;
-					uvs[i + 1] = v + height - regionUVs[i] * height;
+					uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+				}
+				return;
+			case 180:
+				u -= (region.originalWidth - region.offsetX - region.packedWidth) / textureWidth;
+				v -= region.offsetY / textureHeight;
+				width = region.originalWidth / textureWidth;
+				height = region.originalHeight / textureHeight;
+				for (int i = 0; i < n; i += 2) {
+					uvs[i] = u + (1 - regionUVs[i]) * width;
+					uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+				}
+				return;
+			case 270:
+				u -= region.offsetY / textureWidth;
+				v -= region.offsetX / textureHeight;
+				width = region.originalHeight / textureWidth;
+				height = region.originalWidth / textureHeight;
+				for (int i = 0; i < n; i += 2) {
+					uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+					uvs[i + 1] = v + regionUVs[i] * height;
 				}
 				return;
 			}
-			u = region.getU() - region.offsetX / textureWidth;
-			v = region.getV() - (region.originalHeight - region.offsetY - region.packedHeight) / textureHeight;
+			u -= region.offsetX / textureWidth;
+			v -= (region.originalHeight - region.offsetY - region.packedHeight) / textureHeight;
 			width = region.originalWidth / textureWidth;
 			height = region.originalHeight / textureHeight;
 		} else if (region == null) {
 			u = v = 0;
 			width = height = 1;
 		} else {
-			u = region.getU();
-			v = region.getV();
 			width = region.getU2() - u;
 			height = region.getV2() - v;
 		}
-		for (int i = 0, n = uvs.length; i < n; i += 2) {
+		for (int i = 0; i < n; i += 2) {
 			uvs[i] = u + regionUVs[i] * width;
 			uvs[i + 1] = v + regionUVs[i + 1] * height;
 		}

+ 17 - 8
spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java

@@ -428,7 +428,7 @@ public class SkeletonViewer extends ApplicationAdapter {
 
 		Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, skin);
 		Label loadScaleLabel = new Label("100%", skin);
-		TextButton loadScaleResetButton = new TextButton("Reset", skin);
+		TextButton loadScaleResetButton = new TextButton("Reload", skin);
 
 		Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin);
 		Label zoomLabel = new Label("100%", skin);
@@ -541,6 +541,8 @@ public class SkeletonViewer extends ApplicationAdapter {
 		}
 
 		void layout () {
+			float resetWidth = loadScaleResetButton.getPrefWidth();
+
 			root.defaults().space(6);
 			root.columnDefaults(0).top().right().padTop(3);
 			root.columnDefaults(1).left();
@@ -549,7 +551,7 @@ public class SkeletonViewer extends ApplicationAdapter {
 				Table table = table();
 				table.add(loadScaleLabel).width(29);
 				table.add(loadScaleSlider).growX();
-				table.add(loadScaleResetButton);
+				table.add(loadScaleResetButton).width(resetWidth);
 				root.add(table).fill().row();
 			}
 			root.add("Zoom:");
@@ -557,7 +559,7 @@ public class SkeletonViewer extends ApplicationAdapter {
 				Table table = table();
 				table.add(zoomLabel).width(29);
 				table.add(zoomSlider).growX();
-				table.add(zoomResetButton);
+				table.add(zoomResetButton).width(resetWidth);
 				root.add(table).fill().row();
 			}
 			root.add("Scale X:");
@@ -565,7 +567,7 @@ public class SkeletonViewer extends ApplicationAdapter {
 				Table table = table();
 				table.add(xScaleLabel).width(29);
 				table.add(xScaleSlider).growX();
-				table.add(xScaleResetButton).row();
+				table.add(xScaleResetButton).width(resetWidth);
 				root.add(table).fill().row();
 			}
 			root.add("Scale Y:");
@@ -573,7 +575,7 @@ public class SkeletonViewer extends ApplicationAdapter {
 				Table table = table();
 				table.add(yScaleLabel).width(29);
 				table.add(yScaleSlider).growX();
-				table.add(yScaleResetButton);
+				table.add(yScaleResetButton).width(resetWidth);
 				root.add(table).fill().row();
 			}
 			root.add("Debug:");
@@ -678,6 +680,7 @@ public class SkeletonViewer extends ApplicationAdapter {
 					String dir = fileDialog.getDirectory();
 					if (name == null || dir == null) return;
 					loadSkeleton(new FileHandle(new File(dir, name).getAbsolutePath()));
+					ui.toast("Loaded.");
 				}
 			});
 
@@ -719,16 +722,22 @@ public class SkeletonViewer extends ApplicationAdapter {
 			loadScaleSlider.addListener(new ChangeListener() {
 				public void changed (ChangeEvent event, Actor actor) {
 					loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%");
-					if (!loadScaleSlider.isDragging()) loadSkeleton(skeletonFile);
+					if (!loadScaleSlider.isDragging()) {
+						loadSkeleton(skeletonFile);
+						ui.toast("Reloaded.");
+					}
+					loadScaleResetButton.setText(loadScaleSlider.getValue() == 1 ? "Reload" : "Reset");
 				}
 			});
 			loadScaleResetButton.addListener(new ChangeListener() {
 				public void changed (ChangeEvent event, Actor actor) {
 					resetCameraPosition();
-					if (loadScaleSlider.getValue() == 1)
+					if (loadScaleSlider.getValue() == 1) {
 						loadSkeleton(skeletonFile);
-					else
+						ui.toast("Reloaded.");
+					} else
 						loadScaleSlider.setValue(1);
+					loadScaleResetButton.setText("Reload");
 				}
 			});
 

+ 1 - 0
spine-ts/build/spine-all.d.ts

@@ -880,6 +880,7 @@ declare module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 47 - 17
spine-ts/build/spine-all.js

@@ -5480,7 +5480,17 @@ var spine;
 					var region = new TextureAtlasRegion();
 					region.name = line;
 					region.page = page;
-					region.rotate = reader.readValue() == "true";
+					var rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					}
+					else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					}
+					else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 					reader.readTuple(tuple);
 					var x = parseInt(tuple[0]);
 					var y = parseInt(tuple[1]);
@@ -6582,23 +6592,45 @@ var spine;
 			if (this.uvs == null || this.uvs.length != regionUVs.length)
 				this.uvs = spine.Utils.newFloatArray(regionUVs.length);
 			var uvs = this.uvs;
-			var u = 0, v = 0, width = 0, height = 0;
+			var n = this.uvs.length;
+			var u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof spine.TextureAtlasRegion) {
 				var region = this.region;
 				var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
-					width = region.originalHeight / textureWidth;
-					height = region.originalWidth / textureHeight;
-					for (var i = 0, n = uvs.length; i < n; i += 2) {
-						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
-					}
-					return;
+				switch (region.degrees) {
+					case 90:
+						u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+						v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + regionUVs[i + 1] * width;
+							uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+						}
+						return;
+					case 180:
+						u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+						v -= region.offsetY / textureHeight;
+						width = region.originalWidth / textureWidth;
+						height = region.originalHeight / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i]) * width;
+							uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+						}
+						return;
+					case 270:
+						u -= region.offsetY / textureWidth;
+						v -= region.offsetX / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+							uvs[i + 1] = v + regionUVs[i] * height;
+						}
+						return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			}
@@ -6607,12 +6639,10 @@ var spine;
 				width = height = 1;
 			}
 			else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
-			for (var i = 0, n = uvs.length; i < n; i += 2) {
+			for (var i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
spine-ts/build/spine-all.js.map


+ 1 - 0
spine-ts/build/spine-canvas.d.ts

@@ -880,6 +880,7 @@ declare module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 47 - 17
spine-ts/build/spine-canvas.js

@@ -5480,7 +5480,17 @@ var spine;
 					var region = new TextureAtlasRegion();
 					region.name = line;
 					region.page = page;
-					region.rotate = reader.readValue() == "true";
+					var rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					}
+					else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					}
+					else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 					reader.readTuple(tuple);
 					var x = parseInt(tuple[0]);
 					var y = parseInt(tuple[1]);
@@ -6582,23 +6592,45 @@ var spine;
 			if (this.uvs == null || this.uvs.length != regionUVs.length)
 				this.uvs = spine.Utils.newFloatArray(regionUVs.length);
 			var uvs = this.uvs;
-			var u = 0, v = 0, width = 0, height = 0;
+			var n = this.uvs.length;
+			var u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof spine.TextureAtlasRegion) {
 				var region = this.region;
 				var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
-					width = region.originalHeight / textureWidth;
-					height = region.originalWidth / textureHeight;
-					for (var i = 0, n = uvs.length; i < n; i += 2) {
-						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
-					}
-					return;
+				switch (region.degrees) {
+					case 90:
+						u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+						v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + regionUVs[i + 1] * width;
+							uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+						}
+						return;
+					case 180:
+						u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+						v -= region.offsetY / textureHeight;
+						width = region.originalWidth / textureWidth;
+						height = region.originalHeight / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i]) * width;
+							uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+						}
+						return;
+					case 270:
+						u -= region.offsetY / textureWidth;
+						v -= region.offsetX / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+							uvs[i + 1] = v + regionUVs[i] * height;
+						}
+						return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			}
@@ -6607,12 +6639,10 @@ var spine;
 				width = height = 1;
 			}
 			else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
-			for (var i = 0, n = uvs.length; i < n; i += 2) {
+			for (var i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
spine-ts/build/spine-canvas.js.map


+ 1 - 0
spine-ts/build/spine-core.d.ts

@@ -880,6 +880,7 @@ declare module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 47 - 17
spine-ts/build/spine-core.js

@@ -5480,7 +5480,17 @@ var spine;
 					var region = new TextureAtlasRegion();
 					region.name = line;
 					region.page = page;
-					region.rotate = reader.readValue() == "true";
+					var rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					}
+					else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					}
+					else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 					reader.readTuple(tuple);
 					var x = parseInt(tuple[0]);
 					var y = parseInt(tuple[1]);
@@ -6582,23 +6592,45 @@ var spine;
 			if (this.uvs == null || this.uvs.length != regionUVs.length)
 				this.uvs = spine.Utils.newFloatArray(regionUVs.length);
 			var uvs = this.uvs;
-			var u = 0, v = 0, width = 0, height = 0;
+			var n = this.uvs.length;
+			var u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof spine.TextureAtlasRegion) {
 				var region = this.region;
 				var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
-					width = region.originalHeight / textureWidth;
-					height = region.originalWidth / textureHeight;
-					for (var i = 0, n = uvs.length; i < n; i += 2) {
-						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
-					}
-					return;
+				switch (region.degrees) {
+					case 90:
+						u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+						v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + regionUVs[i + 1] * width;
+							uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+						}
+						return;
+					case 180:
+						u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+						v -= region.offsetY / textureHeight;
+						width = region.originalWidth / textureWidth;
+						height = region.originalHeight / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i]) * width;
+							uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+						}
+						return;
+					case 270:
+						u -= region.offsetY / textureWidth;
+						v -= region.offsetX / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+							uvs[i + 1] = v + regionUVs[i] * height;
+						}
+						return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			}
@@ -6607,12 +6639,10 @@ var spine;
 				width = height = 1;
 			}
 			else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
-			for (var i = 0, n = uvs.length; i < n; i += 2) {
+			for (var i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
spine-ts/build/spine-core.js.map


+ 1 - 0
spine-ts/build/spine-player.d.ts

@@ -880,6 +880,7 @@ declare module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 47 - 17
spine-ts/build/spine-player.js

@@ -5480,7 +5480,17 @@ var spine;
 					var region = new TextureAtlasRegion();
 					region.name = line;
 					region.page = page;
-					region.rotate = reader.readValue() == "true";
+					var rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					}
+					else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					}
+					else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 					reader.readTuple(tuple);
 					var x = parseInt(tuple[0]);
 					var y = parseInt(tuple[1]);
@@ -6582,23 +6592,45 @@ var spine;
 			if (this.uvs == null || this.uvs.length != regionUVs.length)
 				this.uvs = spine.Utils.newFloatArray(regionUVs.length);
 			var uvs = this.uvs;
-			var u = 0, v = 0, width = 0, height = 0;
+			var n = this.uvs.length;
+			var u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof spine.TextureAtlasRegion) {
 				var region = this.region;
 				var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
-					width = region.originalHeight / textureWidth;
-					height = region.originalWidth / textureHeight;
-					for (var i = 0, n = uvs.length; i < n; i += 2) {
-						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
-					}
-					return;
+				switch (region.degrees) {
+					case 90:
+						u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+						v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + regionUVs[i + 1] * width;
+							uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+						}
+						return;
+					case 180:
+						u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+						v -= region.offsetY / textureHeight;
+						width = region.originalWidth / textureWidth;
+						height = region.originalHeight / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i]) * width;
+							uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+						}
+						return;
+					case 270:
+						u -= region.offsetY / textureWidth;
+						v -= region.offsetX / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+							uvs[i + 1] = v + regionUVs[i] * height;
+						}
+						return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			}
@@ -6607,12 +6639,10 @@ var spine;
 				width = height = 1;
 			}
 			else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
-			for (var i = 0, n = uvs.length; i < n; i += 2) {
+			for (var i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
spine-ts/build/spine-player.js.map


+ 1 - 0
spine-ts/build/spine-threejs.d.ts

@@ -880,6 +880,7 @@ declare module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 47 - 17
spine-ts/build/spine-threejs.js

@@ -5480,7 +5480,17 @@ var spine;
 					var region = new TextureAtlasRegion();
 					region.name = line;
 					region.page = page;
-					region.rotate = reader.readValue() == "true";
+					var rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					}
+					else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					}
+					else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 					reader.readTuple(tuple);
 					var x = parseInt(tuple[0]);
 					var y = parseInt(tuple[1]);
@@ -6582,23 +6592,45 @@ var spine;
 			if (this.uvs == null || this.uvs.length != regionUVs.length)
 				this.uvs = spine.Utils.newFloatArray(regionUVs.length);
 			var uvs = this.uvs;
-			var u = 0, v = 0, width = 0, height = 0;
+			var n = this.uvs.length;
+			var u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof spine.TextureAtlasRegion) {
 				var region = this.region;
 				var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
-					width = region.originalHeight / textureWidth;
-					height = region.originalWidth / textureHeight;
-					for (var i = 0, n = uvs.length; i < n; i += 2) {
-						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
-					}
-					return;
+				switch (region.degrees) {
+					case 90:
+						u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+						v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + regionUVs[i + 1] * width;
+							uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+						}
+						return;
+					case 180:
+						u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+						v -= region.offsetY / textureHeight;
+						width = region.originalWidth / textureWidth;
+						height = region.originalHeight / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i]) * width;
+							uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+						}
+						return;
+					case 270:
+						u -= region.offsetY / textureWidth;
+						v -= region.offsetX / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+							uvs[i + 1] = v + regionUVs[i] * height;
+						}
+						return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			}
@@ -6607,12 +6639,10 @@ var spine;
 				width = height = 1;
 			}
 			else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
-			for (var i = 0, n = uvs.length; i < n; i += 2) {
+			for (var i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
spine-ts/build/spine-threejs.js.map


+ 1 - 0
spine-ts/build/spine-webgl.d.ts

@@ -880,6 +880,7 @@ declare module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 47 - 17
spine-ts/build/spine-webgl.js

@@ -5480,7 +5480,17 @@ var spine;
 					var region = new TextureAtlasRegion();
 					region.name = line;
 					region.page = page;
-					region.rotate = reader.readValue() == "true";
+					var rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					}
+					else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					}
+					else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 					reader.readTuple(tuple);
 					var x = parseInt(tuple[0]);
 					var y = parseInt(tuple[1]);
@@ -6582,23 +6592,45 @@ var spine;
 			if (this.uvs == null || this.uvs.length != regionUVs.length)
 				this.uvs = spine.Utils.newFloatArray(regionUVs.length);
 			var uvs = this.uvs;
-			var u = 0, v = 0, width = 0, height = 0;
+			var n = this.uvs.length;
+			var u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof spine.TextureAtlasRegion) {
 				var region = this.region;
 				var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
-					width = region.originalHeight / textureWidth;
-					height = region.originalWidth / textureHeight;
-					for (var i = 0, n = uvs.length; i < n; i += 2) {
-						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
-					}
-					return;
+				switch (region.degrees) {
+					case 90:
+						u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+						v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + regionUVs[i + 1] * width;
+							uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+						}
+						return;
+					case 180:
+						u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+						v -= region.offsetY / textureHeight;
+						width = region.originalWidth / textureWidth;
+						height = region.originalHeight / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i]) * width;
+							uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+						}
+						return;
+					case 270:
+						u -= region.offsetY / textureWidth;
+						v -= region.offsetX / textureHeight;
+						width = region.originalHeight / textureWidth;
+						height = region.originalWidth / textureHeight;
+						for (var i = 0; i < n; i += 2) {
+							uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+							uvs[i + 1] = v + regionUVs[i] * height;
+						}
+						return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			}
@@ -6607,12 +6639,10 @@ var spine;
 				width = height = 1;
 			}
 			else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
-			for (var i = 0, n = uvs.length; i < n; i += 2) {
+			for (var i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
spine-ts/build/spine-webgl.js.map


+ 10 - 1
spine-ts/core/src/TextureAtlas.ts

@@ -87,7 +87,15 @@ module spine {
 					region.name = line;
 					region.page = page;
 
-					region.rotate = reader.readValue() == "true";
+					let rotateValue = reader.readValue();
+					if (rotateValue.toLocaleLowerCase() == "true") {
+						region.degrees = 90;
+					} else if (rotateValue.toLocaleLowerCase() == "false") {
+						region.degrees = 0;
+					} else {
+						region.degrees = parseFloat(rotateValue);
+					}
+					region.rotate = region.degrees == 90;
 
 					reader.readTuple(tuple);
 					let x = parseInt(tuple[0]);
@@ -207,6 +215,7 @@ module spine {
 		y: number;
 		index: number;
 		rotate: boolean;
+		degrees: number;
 		texture: Texture;
 	}
 }

+ 31 - 11
spine-ts/core/src/attachments/MeshAttachment.ts

@@ -48,36 +48,56 @@ module spine {
 			let regionUVs = this.regionUVs;
 			if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = Utils.newFloatArray(regionUVs.length);
 			let uvs = this.uvs;
-			let u = 0, v = 0, width = 0, height = 0;
+			let n = this.uvs.length;
+			let u = this.region.u, v = this.region.v, width = 0, height = 0;
 			if (this.region instanceof TextureAtlasRegion) {
 				let region = this.region;
 				let textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
-				if (region.rotate) {
-					u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
-					v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
+				switch(region.degrees) {
+				case 90:
+					u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
+					v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
 					width = region.originalHeight / textureWidth;
 					height = region.originalWidth / textureHeight;
-					for (let i = 0, n = uvs.length; i < n; i += 2) {
+					for (let i = 0; i < n; i += 2) {
 						uvs[i] = u + regionUVs[i + 1] * width;
-						uvs[i + 1] = v + height - regionUVs[i] * height;
+						uvs[i + 1] = v + (1 - regionUVs[i]) * height;
+					}
+					return;
+				case 180:
+					u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
+					v -= region.offsetY / textureHeight;
+					width = region.originalWidth / textureWidth;
+					height = region.originalHeight / textureHeight;
+					for (let i = 0; i < n; i += 2) {
+						uvs[i] = u + (1 - regionUVs[i]) * width;
+						uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
+					}
+					return;
+				case 270:
+					u -= region.offsetY / textureWidth;
+					v -= region.offsetX / textureHeight;
+					width = region.originalHeight / textureWidth;
+					height = region.originalWidth / textureHeight;
+					for (let i = 0; i < n; i += 2) {
+						uvs[i] = u + (1 - regionUVs[i + 1]) * width;
+						uvs[i + 1] = v + regionUVs[i] * height;
 					}
 					return;
 				}
-				u = region.u - region.offsetX / textureWidth;
-				v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
+				u -= region.offsetX / textureWidth;
+				v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
 				width = region.originalWidth / textureWidth;
 				height = region.originalHeight / textureHeight;
 			} else if (this.region == null) {
 				u = v = 0;
 				width = height = 1;
 			} else {
-				u = this.region.u;
-				v = this.region.v;
 				width = this.region.u2 - u;
 				height = this.region.v2 - v;
 			}
 
-			for (let i = 0, n = uvs.length; i < n; i += 2) {
+			for (let i = 0; i < n; i += 2) {
 				uvs[i] = u + regionUVs[i] * width;
 				uvs[i + 1] = v + regionUVs[i + 1] * height;
 			}

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott