From 0d33b54ef04a62e48eb8f918455e754e9c1b9579 Mon Sep 17 00:00:00 2001 From: pharan Date: Thu, 6 Sep 2018 20:33:41 +0800 Subject: [PATCH] [csharp] Add event volume and balance. --- spine-csharp/src/Event.cs | 5 +++++ spine-csharp/src/EventData.cs | 3 +++ spine-csharp/src/SkeletonBinary.cs | 17 +++++++++++++---- spine-csharp/src/SkeletonJson.cs | 19 ++++++++++++++----- 4 files changed, 35 insertions(+), 9 deletions(-) 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);