From d6adbe96d8af8ad19aaf9203434fb0e78d35e88a Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Tue, 13 Sep 2022 18:12:31 -0400 Subject: [PATCH] [libgdx] Allow calling RegionAttachment#updateRegion when region is null. Mesh already allows this. SkeletonJson/Binary call `updateRegion` when the sequence is null, which fails before this commit if the attachment loader doesn't set a region. That is a valid usecase, eg to set regions later. This also orders setting the UVs array indices to 0-7. --- .../spine/attachments/RegionAttachment.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java index 8bfa883d1..5b439df7d 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java @@ -81,6 +81,18 @@ public class RegionAttachment extends Attachment implements HasTextureRegion { /** Calculates the {@link #offset} and {@link #uvs} using the region and the attachment's transform. Must be called if the * region, the region's properties, or the transform are changed. */ public void updateRegion () { + if (region == null) { + uvs[BLX] = 0; + uvs[BLY] = 0; + uvs[ULX] = 1; + uvs[ULY] = 1; + uvs[URX] = 1; + uvs[URY] = 1; + uvs[BRX] = 1; + uvs[BRY] = 0; + return; + } + float width = getWidth(); float height = getHeight(); float localX2 = width / 2; @@ -132,23 +144,23 @@ public class RegionAttachment extends Attachment implements HasTextureRegion { float[] uvs = this.uvs; if (rotated) { - uvs[URX] = region.getU(); - uvs[URY] = region.getV2(); - uvs[BRX] = region.getU(); - uvs[BRY] = region.getV(); uvs[BLX] = region.getU2(); uvs[BLY] = region.getV(); uvs[ULX] = region.getU2(); uvs[ULY] = region.getV2(); + uvs[URX] = region.getU(); + uvs[URY] = region.getV2(); + uvs[BRX] = region.getU(); + uvs[BRY] = region.getV(); } else { + uvs[BLX] = region.getU2(); + uvs[BLY] = region.getV2(); uvs[ULX] = region.getU(); uvs[ULY] = region.getV2(); uvs[URX] = region.getU(); uvs[URY] = region.getV(); uvs[BRX] = region.getU2(); uvs[BRY] = region.getV(); - uvs[BLX] = region.getU2(); - uvs[BLY] = region.getV2(); } }