From 2345764fbf56559352b54d34b70c417104e4bc35 Mon Sep 17 00:00:00 2001 From: pharan Date: Thu, 8 Mar 2018 22:40:00 +0800 Subject: [PATCH] [csharp] Port RegionAttachment.java checking for compatible region values. --- .../src/Attachments/RegionAttachment.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/spine-csharp/src/Attachments/RegionAttachment.cs b/spine-csharp/src/Attachments/RegionAttachment.cs index cb477d901..248fe0157 100644 --- a/spine-csharp/src/Attachments/RegionAttachment.cs +++ b/spine-csharp/src/Attachments/RegionAttachment.cs @@ -79,14 +79,22 @@ namespace Spine { public void UpdateOffset () { float width = this.width; float height = this.height; + float localX2 = width * 0.5f; + float localY2 = height * 0.5f; + float localX = -localX2; + float localY = -localY2; + if (regionOriginalWidth != 0) { // if (region != null) + localX += regionOffsetX / regionOriginalWidth * width; + localY += regionOffsetY / regionOriginalHeight * height; + localX2 -= (regionOriginalWidth - regionOffsetX - regionWidth) / regionOriginalWidth * width; + localY2 -= (regionOriginalHeight - regionOffsetY - regionHeight) / regionOriginalHeight * height; + } float scaleX = this.scaleX; float scaleY = this.scaleY; - float regionScaleX = width / regionOriginalWidth * scaleX; - float regionScaleY = height / regionOriginalHeight * scaleY; - float localX = -width / 2 * scaleX + regionOffsetX * regionScaleX; - float localY = -height / 2 * scaleY + regionOffsetY * regionScaleY; - float localX2 = localX + regionWidth * regionScaleX; - float localY2 = localY + regionHeight * regionScaleY; + localX *= scaleX; + localY *= scaleY; + localX2 *= scaleX; + localY2 *= scaleY; float rotation = this.rotation; float cos = MathUtils.CosDeg(rotation); float sin = MathUtils.SinDeg(rotation);