Parcourir la source

Added event volume and balance.

NathanSweet il y a 7 ans
Parent
commit
45fbd64e30

+ 17 - 0
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;

+ 17 - 0
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;

+ 8 - 0
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);

+ 12 - 4
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);