mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 14:24:53 +08:00
Added slot path nonsessential data.
This commit is contained in:
parent
e17766127d
commit
11b339bd67
@ -221,7 +221,15 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
// Slots.
|
||||
Object[] slots = skeletonData.slots.setSize(n = input.readInt(true));
|
||||
for (int i = 0; i < n; i++) {
|
||||
String slotName = input.readString();
|
||||
String slotName = input.readString(), path = null;
|
||||
if (nonessential) {
|
||||
int slash = slotName.lastIndexOf('/');
|
||||
if (slash != -1) {
|
||||
path = slotName.substring(0, slash);
|
||||
slotName = slotName.substring(slash + 1);
|
||||
}
|
||||
}
|
||||
|
||||
BoneData boneData = (BoneData)bones[input.readInt(true)];
|
||||
SlotData data = new SlotData(i, slotName, boneData);
|
||||
Color.rgba8888ToColor(data.color, input.readInt());
|
||||
@ -231,7 +239,10 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
|
||||
data.attachmentName = input.readStringRef();
|
||||
data.blendMode = BlendMode.values[input.readInt(true)];
|
||||
if (nonessential) data.visible = input.readBoolean();
|
||||
if (nonessential) {
|
||||
data.visible = input.readBoolean();
|
||||
data.path = path;
|
||||
}
|
||||
slots[i] = data;
|
||||
}
|
||||
|
||||
|
||||
@ -80,7 +80,7 @@ public class SkeletonData {
|
||||
|
||||
// --- Slots.
|
||||
|
||||
/** The skeleton's slots. */
|
||||
/** The skeleton's slots in the setup pose draw order. */
|
||||
public Array<SlotData> getSlots () {
|
||||
return slots;
|
||||
}
|
||||
|
||||
@ -179,10 +179,17 @@ public class SkeletonJson extends SkeletonLoader {
|
||||
|
||||
// Slots.
|
||||
for (JsonValue slotMap = root.getChild("slots"); slotMap != null; slotMap = slotMap.next) {
|
||||
String slotName = slotMap.getString("name");
|
||||
String slotName = slotMap.getString("name"), path = null;
|
||||
int slash = slotName.lastIndexOf('/');
|
||||
if (slash != -1) {
|
||||
path = slotName.substring(0, slash);
|
||||
slotName = slotName.substring(slash + 1);
|
||||
}
|
||||
|
||||
String boneName = slotMap.getString("bone");
|
||||
BoneData boneData = skeletonData.findBone(boneName);
|
||||
if (boneData == null) throw new SerializationException("Slot bone not found: " + boneName);
|
||||
|
||||
SlotData data = new SlotData(skeletonData.slots.size, slotName, boneData);
|
||||
|
||||
String color = slotMap.getString("color", null);
|
||||
@ -194,6 +201,7 @@ public class SkeletonJson extends SkeletonLoader {
|
||||
data.attachmentName = slotMap.getString("attachment", null);
|
||||
data.blendMode = BlendMode.valueOf(slotMap.getString("blend", BlendMode.normal.name()));
|
||||
data.visible = slotMap.getBoolean("visible", true);
|
||||
data.path = path;
|
||||
skeletonData.slots.add(data);
|
||||
}
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ public class SlotData {
|
||||
|
||||
// Nonessential.
|
||||
boolean visible = true;
|
||||
String path;
|
||||
|
||||
public SlotData (int index, String name, BoneData boneData) {
|
||||
if (index < 0) throw new IllegalArgumentException("index must be >= 0.");
|
||||
@ -113,6 +114,15 @@ public class SlotData {
|
||||
this.visible = visible;
|
||||
}
|
||||
|
||||
/** The folders for this slot in the draw order, delimited by <code>/</code>, or null if nonessential data was not exported. */
|
||||
public @Null String getPath () {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath (String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String toString () {
|
||||
return name;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user