diff --git a/spine-csharp/src/Event.cs b/spine-csharp/src/Event.cs
index a2478db28..84cff7563 100644
--- a/spine-csharp/src/Event.cs
+++ b/spine-csharp/src/Event.cs
@@ -38,6 +38,8 @@ namespace Spine {
internal int intValue;
internal float floatValue;
internal string stringValue;
+ internal float volume;
+ internal float balance;
public EventData Data { get { return data; } }
/// The animation time this event was keyed.
@@ -47,6 +49,9 @@ namespace Spine {
public float Float { get { return floatValue; } set { floatValue = value; } }
public string String { get { return stringValue; } set { stringValue = value; } }
+ public float Volume { get { return volume; } set { volume = value; } }
+ public float Balance { get { return balance; } set { balance = value; } }
+
public Event (float time, EventData data) {
if (data == null) throw new ArgumentNullException("data", "data cannot be null.");
this.time = time;
diff --git a/spine-csharp/src/EventData.cs b/spine-csharp/src/EventData.cs
index 23e38b4de..0a55fdf6b 100644
--- a/spine-csharp/src/EventData.cs
+++ b/spine-csharp/src/EventData.cs
@@ -40,7 +40,10 @@ namespace Spine {
public int Int { get; set; }
public float Float { get; set; }
public string @String { get; set; }
+
public string AudioPath { get; set; }
+ public float Volume { get; set; }
+ public float Balance { get; set; }
public EventData (string name) {
if (name == null) throw new ArgumentNullException("name", "name cannot be null.");
diff --git a/spine-csharp/src/SkeletonBinary.cs b/spine-csharp/src/SkeletonBinary.cs
index a2ed6aca5..4766fa09f 100644
--- a/spine-csharp/src/SkeletonBinary.cs
+++ b/spine-csharp/src/SkeletonBinary.cs
@@ -288,6 +288,10 @@ namespace Spine {
data.Float = ReadFloat(input);
data.String = ReadString(input);
data.AudioPath = ReadString(input);
+ if (data.AudioPath != null) {
+ data.Volume = ReadFloat(input);
+ data.Balance = ReadFloat(input);
+ }
skeletonData.events.Add(data);
}
@@ -804,10 +808,15 @@ namespace Spine {
for (int i = 0; i < eventCount; i++) {
float time = ReadFloat(input);
EventData eventData = skeletonData.events.Items[ReadVarint(input, true)];
- Event e = new Event(time, eventData);
- e.Int = ReadVarint(input, false);
- e.Float = ReadFloat(input);
- e.String = ReadBoolean(input) ? ReadString(input) : eventData.String;
+ Event e = new Event(time, eventData) {
+ Int = ReadVarint(input, false),
+ Float = ReadFloat(input),
+ String = ReadBoolean(input) ? ReadString(input) : eventData.String
+ };
+ if (e.data.AudioPath != null) {
+ e.volume = ReadFloat(input);
+ e.balance = ReadFloat(input);
+ }
timeline.SetFrame(i, e);
}
timelines.Add(timeline);
diff --git a/spine-csharp/src/SkeletonJson.cs b/spine-csharp/src/SkeletonJson.cs
index 04a740f29..4580298d5 100644
--- a/spine-csharp/src/SkeletonJson.cs
+++ b/spine-csharp/src/SkeletonJson.cs
@@ -296,7 +296,11 @@ namespace Spine {
data.Int = GetInt(entryMap, "int", 0);
data.Float = GetFloat(entryMap, "float", 0);
data.String = GetString(entryMap, "string", string.Empty);
- data.AudioPath = GetString(entryMap, "audio", string.Empty);
+ data.AudioPath = GetString(entryMap, "audio", null);
+ if (data.AudioPath != null) {
+ data.Volume = GetFloat(entryMap, "volume", 1);
+ data.Balance = GetFloat(entryMap, "balance", 0);
+ }
skeletonData.events.Add(data);
}
}
@@ -779,10 +783,15 @@ namespace Spine {
foreach (Dictionary eventMap in eventsMap) {
EventData eventData = skeletonData.FindEvent((string)eventMap["name"]);
if (eventData == null) throw new Exception("Event not found: " + eventMap["name"]);
- var e = new Event((float)eventMap["time"], eventData);
- e.Int = GetInt(eventMap, "int", eventData.Int);
- e.Float = GetFloat(eventMap, "float", eventData.Float);
- e.String = GetString(eventMap, "string", eventData.String);
+ var e = new Event((float)eventMap["time"], eventData) {
+ intValue = GetInt(eventMap, "int", eventData.Int),
+ floatValue = GetFloat(eventMap, "float", eventData.Float),
+ stringValue = GetString(eventMap, "string", eventData.String)
+ };
+ if (e.data.AudioPath != null) {
+ e.volume = GetFloat(eventMap, "volume", eventData.Volume);
+ e.balance = GetFloat(eventMap, "balance", eventData.Balance);
+ }
timeline.SetFrame(frameIndex++, e);
}
timelines.Add(timeline);