Added slot path nonsessential data.

This commit is contained in:
Nathan Sweet 2024-01-22 12:32:01 -04:00
parent e17766127d
commit 11b339bd67
4 changed files with 33 additions and 4 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}