diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java index baf878aeb..a3b6f8e1f 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Event.java @@ -44,6 +44,7 @@ public class Event { int intValue; float floatValue; String stringValue; + float volume, balance; final float time; public Event (float time, EventData data) { @@ -76,6 +77,22 @@ public class Event { this.stringValue = stringValue; } + public float getVolume () { + return volume; + } + + public void setVolume (float volume) { + this.volume = volume; + } + + public float getBalance () { + return balance; + } + + public void setBalance (float balance) { + this.balance = balance; + } + /** The animation time this event was keyed. */ public float getTime () { return time; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java index 605be3ef2..df85cca7d 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/EventData.java @@ -38,6 +38,7 @@ public class EventData { int intValue; float floatValue; String stringValue, audioPath; + float volume, balance; public EventData (String name) { if (name == null) throw new IllegalArgumentException("name cannot be null."); @@ -76,6 +77,22 @@ public class EventData { this.audioPath = audioPath; } + public float getVolume () { + return volume; + } + + public void setVolume (float volume) { + this.volume = volume; + } + + public float getBalance () { + return balance; + } + + public void setBalance (float balance) { + this.balance = balance; + } + /** The name of the event, which is unique within the skeleton. */ public String getName () { return name; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java index 3f88d8651..3100fa51b 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -310,6 +310,10 @@ public class SkeletonBinary { data.floatValue = input.readFloat(); data.stringValue = input.readString(); data.audioPath = input.readString(); + if (data.audioPath != null) { + data.volume = input.readFloat(); + data.balance = input.readFloat(); + } skeletonData.events.add(data); } @@ -821,6 +825,10 @@ public class SkeletonBinary { event.intValue = input.readInt(false); event.floatValue = input.readFloat(); event.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; + if (event.getData().audioPath != null) { + event.volume = input.readFloat(); + event.balance = input.readFloat(); + } timeline.setFrame(i, event); } timelines.add(timeline); diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java index 9ec1d11ab..47fa724b0 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -295,7 +295,11 @@ public class SkeletonJson { data.intValue = eventMap.getInt("int", 0); data.floatValue = eventMap.getFloat("float", 0f); data.stringValue = eventMap.getString("string", ""); - data.audioPath = eventMap.getString("audio", ""); + data.audioPath = eventMap.getString("audio", null); + if (data.audioPath != null) { + data.volume = eventMap.getFloat("volume", 1); + data.balance = eventMap.getFloat("balance", 0); + } skeletonData.events.add(data); } @@ -736,9 +740,13 @@ public class SkeletonJson { EventData eventData = skeletonData.findEvent(eventMap.getString("name")); if (eventData == null) throw new SerializationException("Event not found: " + eventMap.getString("name")); Event event = new Event(eventMap.getFloat("time"), eventData); - event.intValue = eventMap.getInt("int", eventData.getInt()); - event.floatValue = eventMap.getFloat("float", eventData.getFloat()); - event.stringValue = eventMap.getString("string", eventData.getString()); + event.intValue = eventMap.getInt("int", eventData.intValue); + event.floatValue = eventMap.getFloat("float", eventData.floatValue); + event.stringValue = eventMap.getString("string", eventData.stringValue); + if (event.getData().audioPath != null) { + event.volume = eventMap.getFloat("volume", eventData.volume); + event.balance = eventMap.getFloat("balance", eventData.balance); + } timeline.setFrame(frameIndex++, event); } timelines.add(timeline);