diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index 141016cc4..833fe9a59 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/src/spine/attachments/AtlasAttachmentLoader.as b/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as index 3194cdf47..86d932624 100644 --- a/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as +++ b/spine-as3/spine-as3/src/spine/attachments/AtlasAttachmentLoader.as @@ -78,9 +78,7 @@ package spine.attachments { attachment.regionWidth = region.width; attachment.regionHeight = region.height; attachment.regionOriginalWidth = region.originalWidth; - attachment.regionOriginalHeight = region.originalHeight; - attachment.regionTextureWidth = region.page.width; - attachment.regionTextureHeight = region.page.height; + attachment.regionOriginalHeight = region.originalHeight; 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 315b0e7cd..a1c54e30b 100644 --- a/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/MeshAttachment.as @@ -51,9 +51,7 @@ package spine.attachments { public var regionWidth : Number; // Unrotated, stripped size. public var regionHeight : Number; public var regionOriginalWidth : Number; // Unrotated, unstripped size. - public var regionOriginalHeight : Number; - public var regionTextureWidth: Number; - public var regionTextureHeight: Number; + public var regionOriginalHeight : Number; // Nonessential. public var edges : Vector.; public var width : Number; @@ -66,29 +64,26 @@ package spine.attachments { 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; + var textureWidth: Number, textureHeight: Number; 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"); - } + textureHeight = regionWidth / (regionV2 - regionV); + textureWidth = regionHeight / (regionU2 - regionU); + u = regionU - (regionOriginalHeight - regionOffsetY - regionHeight) / textureWidth; + v = regionV - (regionOriginalWidth - regionOffsetX - regionWidth) / textureHeight; + width = regionOriginalHeight / textureWidth; + height = regionOriginalWidth / textureHeight; for (i = 0; i < n; i += 2) { 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"); - } + textureWidth = regionWidth / (regionU2 - regionU); + textureHeight = regionHeight / (regionV2 - regionV); + u = regionU - regionOffsetX / textureWidth; + v = regionV - (regionOriginalHeight - regionOffsetY - regionHeight) / textureHeight; + width = regionOriginalWidth / textureWidth; + height = regionOriginalHeight / textureHeight; for (i = 0; i < n; i += 2) { uvs[i] = u + regionUVs[i] * width; uvs[int(i + 1)] = v + regionUVs[int(i + 1)] * height; diff --git a/spine-c/spine-c/include/spine/MeshAttachment.h b/spine-c/spine-c/include/spine/MeshAttachment.h index 94c83752c..2876abfd5 100644 --- a/spine-c/spine-c/include/spine/MeshAttachment.h +++ b/spine-c/spine-c/include/spine/MeshAttachment.h @@ -51,7 +51,6 @@ struct spMeshAttachment { int regionOriginalWidth, regionOriginalHeight; /* Unrotated, unstripped pixel size. */ float regionU, regionV, regionU2, regionV2; int/*bool*/regionRotate; - float regionTextureWidth, regionTextureHeight; const char* path; diff --git a/spine-c/spine-c/src/spine/AtlasAttachmentLoader.c b/spine-c/spine-c/src/spine/AtlasAttachmentLoader.c index 64d6f36a9..c4a613709 100644 --- a/spine-c/spine-c/src/spine/AtlasAttachmentLoader.c +++ b/spine-c/spine-c/src/spine/AtlasAttachmentLoader.c @@ -74,8 +74,6 @@ spAttachment* _spAtlasAttachmentLoader_createAttachment (spAttachmentLoader* loa attachment->regionHeight = region->height; attachment->regionOriginalWidth = region->originalWidth; attachment->regionOriginalHeight = region->originalHeight; - attachment->regionTextureWidth = region->page->width; - attachment->regionTextureHeight = region->page->height; return SUPER(SUPER(attachment)); } case SP_ATTACHMENT_BOUNDING_BOX: diff --git a/spine-c/spine-c/src/spine/MeshAttachment.c b/spine-c/spine-c/src/spine/MeshAttachment.c index b6ac37784..647ff7139 100644 --- a/spine-c/spine-c/src/spine/MeshAttachment.c +++ b/spine-c/spine-c/src/spine/MeshAttachment.c @@ -60,9 +60,9 @@ void spMeshAttachment_updateUVs (spMeshAttachment* self) { FREE(self->uvs); self->uvs = MALLOC(float, verticesLength); - float textureWidth = self->regionTextureWidth; - float textureHeight = self->regionTextureHeight; if (self->regionRotate) { + float textureWidth = self->regionHeight / (self->regionU2 - self->regionU); + float textureHeight = self->regionWidth / (self->regionV2 - self->regionV); float u = self->regionU - (self->regionOriginalHeight - self->regionOffsetY - self->regionHeight) / textureWidth; float v = self->regionV - (self->regionOriginalWidth - self->regionOffsetX - self->regionWidth) / textureHeight; width = self->regionOriginalHeight / textureWidth; @@ -73,6 +73,8 @@ void spMeshAttachment_updateUVs (spMeshAttachment* self) { } return; } else { + float textureWidth = self->regionWidth / (self->regionU2 - self->regionU); + float textureHeight = self->regionHeight / (self->regionV2 - self->regionV); float u = self->regionU - self->regionOffsetX / textureWidth; float v = self->regionV - (self->regionOriginalHeight - self->regionOffsetY - self->regionHeight) / textureHeight; width = self->regionOriginalWidth / textureWidth; diff --git a/spine-cpp/spine-cpp/include/spine/MeshAttachment.h b/spine-cpp/spine-cpp/include/spine/MeshAttachment.h index e26b61c52..8f42c5518 100644 --- a/spine-cpp/spine-cpp/include/spine/MeshAttachment.h +++ b/spine-cpp/spine-cpp/include/spine/MeshAttachment.h @@ -119,7 +119,7 @@ namespace spine { void setHeight(float inValue); private: - float _regionOffsetX, _regionOffsetY, _regionWidth, _regionHeight, _regionOriginalWidth, _regionOriginalHeight, _regionTextureWidth, _regionTextureHeight; + float _regionOffsetX, _regionOffsetY, _regionWidth, _regionHeight, _regionOriginalWidth, _regionOriginalHeight; MeshAttachment* _parentMesh; Vector _uvs; Vector _regionUVs; diff --git a/spine-cpp/spine-cpp/src/spine/AtlasAttachmentLoader.cpp b/spine-cpp/spine-cpp/src/spine/AtlasAttachmentLoader.cpp index 6e77710b4..ad6c3c519 100644 --- a/spine-cpp/spine-cpp/src/spine/AtlasAttachmentLoader.cpp +++ b/spine-cpp/spine-cpp/src/spine/AtlasAttachmentLoader.cpp @@ -94,8 +94,6 @@ MeshAttachment *AtlasAttachmentLoader::newMeshAttachment(Skin &skin, const Strin attachment._regionHeight = (float)region.height; attachment._regionOriginalWidth = (float)region.originalWidth; attachment._regionOriginalHeight = (float)region.originalHeight; - attachment._regionTextureWidth = (float)region.page->width; - attachment._regionTextureHeight = (float)region.page->height; return attachmentP; } diff --git a/spine-cpp/spine-cpp/src/spine/MeshAttachment.cpp b/spine-cpp/spine-cpp/src/spine/MeshAttachment.cpp index a95d08f82..905821094 100644 --- a/spine-cpp/spine-cpp/src/spine/MeshAttachment.cpp +++ b/spine-cpp/spine-cpp/src/spine/MeshAttachment.cpp @@ -46,8 +46,6 @@ MeshAttachment::MeshAttachment(const String &name) : VertexAttachment(name), Has _regionHeight(0), _regionOriginalWidth(0), _regionOriginalHeight(0), - _regionTextureWidth(0), - _regionTextureHeight(0), _parentMesh(NULL), _path(), _regionU(0), @@ -70,19 +68,23 @@ void MeshAttachment::updateUVs() { } if (_regionRotate) { - float u = _regionU - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / _regionTextureWidth; - float v = _regionV - (_regionOriginalWidth - _regionOffsetX - _regionWidth) / _regionTextureHeight; - float width = _regionOriginalHeight / _regionTextureWidth; - float height = _regionOriginalWidth / _regionTextureHeight; + float textureHeight = _regionWidth / (_regionV2 - _regionV); + float textureWidth = _regionHeight / (_regionU2 - _regionU); + float u = _regionU - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / textureWidth; + float v = _regionV - (_regionOriginalWidth - _regionOffsetX - _regionWidth) / textureHeight; + float width = _regionOriginalHeight / textureWidth; + float height = _regionOriginalWidth / textureHeight; for (size_t i = 0, n = _uvs.size(); i < n; i += 2) { _uvs[i] = u + _regionUVs[i + 1] * width; _uvs[i + 1] = v + height - _regionUVs[i] * height; } } else { - float u = _regionU - _regionOffsetX / _regionTextureWidth; - float v = _regionV - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / _regionTextureHeight; - float width = _regionOriginalWidth / _regionTextureWidth; - float height = _regionOriginalHeight / _regionTextureHeight; + float textureWidth = _regionWidth / (_regionU2 - _regionU); + float textureHeight = _regionHeight / (_regionV2 - _regionV); + float u = _regionU - _regionOffsetX / textureWidth; + float v = _regionV - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / textureHeight; + float width = _regionOriginalWidth / textureWidth; + float height = _regionOriginalHeight / textureHeight; for (size_t i = 0, n = _uvs.size(); i < n; i += 2) { _uvs[i] = u + _regionUVs[i] * width; _uvs[i + 1] = v + _regionUVs[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 141016cc4..833fe9a59 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 6477e47cd..de0c5e067 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 141016cc4..833fe9a59 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 7213e9cbe..4c900581b 100644 --- a/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as +++ b/spine-starling/spine-starling/src/spine/starling/StarlingAtlasAttachmentLoader.as @@ -122,9 +122,7 @@ package spine.starling { attachment.regionWidth = texture.width; 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; + attachment.regionOriginalHeight = frame ? frame.height : texture.height; if (rotated) { var tmp : Number = attachment.regionOriginalWidth; attachment.regionOriginalWidth = attachment.regionOriginalHeight;