diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index 2d4be9fea..141016cc4 100644 Binary files a/spine-as3/spine-as3-example/lib/spine-as3.swc and b/spine-as3/spine-as3-example/lib/spine-as3.swc differ diff --git a/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs b/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs index eb6c724eb..813b2b6ab 100644 --- a/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs +++ b/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs @@ -36,7 +36,9 @@ encoding//src/spine/animation/TrackEntry.as=UTF-8 encoding//src/spine/animation/TransformConstraintTimeline.as=UTF-8 encoding//src/spine/animation/TranslateTimeline.as=UTF-8 encoding//src/spine/animation/TwoColorTimeline.as=UTF-8 +encoding//src/spine/attachments/AtlasAttachmentLoader.as=UTF-8 encoding//src/spine/attachments/ClippingAttachment.as=UTF-8 +encoding//src/spine/attachments/MeshAttachment.as=UTF-8 encoding//src/spine/attachments/PointAttachment.as=UTF-8 encoding//src/spine/interpolation/Pow.as=UTF-8 encoding//src/spine/interpolation/PowOut.as=UTF-8 diff --git a/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as b/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as index c403cc2b2..3194cdf47 100644 --- a/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as +++ b/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as @@ -79,6 +79,8 @@ package spine.attachments { attachment.regionHeight = region.height; attachment.regionOriginalWidth = region.originalWidth; attachment.regionOriginalHeight = region.originalHeight; + attachment.regionTextureWidth = region.page.width; + attachment.regionTextureHeight = region.page.height; return attachment; } diff --git a/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as b/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as index bad007e9c..315b0e7cd 100644 --- a/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as @@ -52,6 +52,8 @@ package spine.attachments { public var regionHeight : Number; public var regionOriginalWidth : Number; // Unrotated, unstripped size. public var regionOriginalHeight : Number; + public var regionTextureWidth: Number; + public var regionTextureHeight: Number; // Nonessential. public var edges : Vector.; public var width : Number; @@ -61,19 +63,35 @@ package spine.attachments { super(name); } - public function updateUVs() : void { - var width : Number = regionU2 - regionU, height : Number = regionV2 - regionV; + public function updateUVs() : void { var i : int, n : int = regionUVs.length; + var u: Number, v: Number, width: Number, height: Number; + var widthO : Number = regionU2 - regionU, heightO : Number = regionV2 - regionV; + var uO = regionU, vO = regionV; if (!uvs || uvs.length != n) uvs = new Vector.(n, true); if (regionRotate) { + u = regionU - (regionOriginalHeight - regionOffsetY - regionHeight) / regionTextureWidth; + v = regionV - (regionOriginalWidth - regionOffsetX - regionWidth) / regionTextureHeight; + width = regionOriginalHeight / regionTextureWidth; + height = regionOriginalWidth / regionTextureHeight; + if (u != uO || v != vO || width != widthO || heightO != height) { + trace("fah"); + } for (i = 0; i < n; i += 2) { - uvs[i] = regionU + regionUVs[int(i + 1)] * width; - uvs[int(i + 1)] = regionV + height - regionUVs[i] * height; + uvs[i] = u + regionUVs[int(i + 1)] * width; + uvs[int(i + 1)] = v + height - regionUVs[i] * height; } } else { + u = regionU - regionOffsetX / regionTextureWidth; + v = regionV - (regionOriginalHeight - regionOffsetY - regionHeight) / regionTextureHeight; + width = regionOriginalWidth / regionTextureWidth; + height = regionOriginalHeight / regionTextureHeight; + if (u != uO || v != vO || width != widthO || heightO != height) { + trace("fah"); + } for (i = 0; i < n; i += 2) { - uvs[i] = regionU + regionUVs[i] * width; - uvs[int(i + 1)] = regionV + regionUVs[int(i + 1)] * height; + uvs[i] = u + regionUVs[i] * width; + uvs[int(i + 1)] = v + regionUVs[int(i + 1)] * height; } } } diff --git a/spine-starling/spine-starling-example/lib/spine-as3.swc b/spine-starling/spine-starling-example/lib/spine-as3.swc index 2d4be9fea..141016cc4 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-as3.swc and b/spine-starling/spine-starling-example/lib/spine-as3.swc differ diff --git a/spine-starling/spine-starling-example/lib/spine-starling.swc b/spine-starling/spine-starling-example/lib/spine-starling.swc index 24edf736a..6477e47cd 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-starling.swc and b/spine-starling/spine-starling-example/lib/spine-starling.swc differ diff --git a/spine-starling/spine-starling/lib/spine-as3.swc b/spine-starling/spine-starling/lib/spine-as3.swc index 2d4be9fea..141016cc4 100644 Binary files a/spine-starling/spine-starling/lib/spine-as3.swc and b/spine-starling/spine-starling/lib/spine-as3.swc differ diff --git a/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as b/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as index 2876c8b18..7213e9cbe 100644 --- a/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as +++ b/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as @@ -123,6 +123,8 @@ package spine.starling { attachment.regionHeight = texture.height; attachment.regionOriginalWidth = frame ? frame.width : texture.width; attachment.regionOriginalHeight = frame ? frame.height : texture.height; + attachment.regionTextureWidth = atlas.texture.width; + attachment.regionTextureHeight = atlas.texture.height; if (rotated) { var tmp : Number = attachment.regionOriginalWidth; attachment.regionOriginalWidth = attachment.regionOriginalHeight;