mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 17:26:01 +08:00
[libgdx] Added allowMissingRegions to AtlasAttachmentLoader to support skeletons exported with per-skin atlases.
This commit is contained in:
parent
10a54da6b4
commit
139fd84d07
@ -585,7 +585,7 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
region.setHeight(height * scale);
|
||||
Color.rgba8888ToColor(region.getColor(), color);
|
||||
region.setSequence(sequence);
|
||||
if (sequence == null) region.updateRegion();
|
||||
if (region.getRegion() != null) region.updateRegion();
|
||||
yield region;
|
||||
}
|
||||
case boundingbox -> {
|
||||
@ -626,7 +626,7 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
mesh.setWorldVerticesLength(vertices.length);
|
||||
mesh.setTriangles(triangles);
|
||||
mesh.setRegionUVs(uvs);
|
||||
if (sequence == null) mesh.updateRegion();
|
||||
if (mesh.getRegion() != null) mesh.updateRegion();
|
||||
mesh.setHullLength(hullLength << 1);
|
||||
mesh.setSequence(sequence);
|
||||
if (nonessential) {
|
||||
|
||||
@ -43,10 +43,16 @@ import com.esotericsoftware.spine.Skin;
|
||||
@SuppressWarnings("javadoc")
|
||||
public class AtlasAttachmentLoader implements AttachmentLoader {
|
||||
private TextureAtlas atlas;
|
||||
public boolean allowMissingRegions;
|
||||
|
||||
public AtlasAttachmentLoader (TextureAtlas atlas) {
|
||||
this(atlas, false);
|
||||
}
|
||||
|
||||
public AtlasAttachmentLoader (TextureAtlas atlas, boolean allowMissingRegions) {
|
||||
if (atlas == null) throw new IllegalArgumentException("atlas cannot be null.");
|
||||
this.atlas = atlas;
|
||||
this.allowMissingRegions = allowMissingRegions;
|
||||
}
|
||||
|
||||
private void loadSequence (String name, String basePath, Sequence sequence) {
|
||||
@ -54,7 +60,11 @@ public class AtlasAttachmentLoader implements AttachmentLoader {
|
||||
for (int i = 0, n = regions.length; i < n; i++) {
|
||||
String path = sequence.getPath(basePath, i);
|
||||
regions[i] = atlas.findRegion(path);
|
||||
if (regions[i] == null) throw new RuntimeException("Region not found in atlas: " + path + " (sequence: " + name + ")");
|
||||
if (regions[i] == null) {
|
||||
if (!allowMissingRegions)
|
||||
throw new RuntimeException("Region not found in atlas: " + path + " (sequence: " + name + ")");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,7 +74,7 @@ public class AtlasAttachmentLoader implements AttachmentLoader {
|
||||
loadSequence(name, path, sequence);
|
||||
else {
|
||||
AtlasRegion region = atlas.findRegion(path);
|
||||
if (region == null)
|
||||
if (region == null && !allowMissingRegions)
|
||||
throw new RuntimeException("Region not found in atlas: " + path + " (region attachment: " + name + ")");
|
||||
attachment.setRegion(region);
|
||||
}
|
||||
@ -77,7 +87,7 @@ public class AtlasAttachmentLoader implements AttachmentLoader {
|
||||
loadSequence(name, path, sequence);
|
||||
else {
|
||||
AtlasRegion region = atlas.findRegion(path);
|
||||
if (region == null)
|
||||
if (region == null && !allowMissingRegions)
|
||||
throw new RuntimeException("Region not found in atlas: " + path + " (mesh attachment: " + name + ")");
|
||||
attachment.setRegion(region);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user