Ver Fonte

[csharp] Add event volume and balance.

pharan há 7 anos atrás
pai
commit
0d33b54ef0

+ 5 - 0
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; } }
 		/// <summary>The animation time this event was keyed.</summary>
@@ -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;

+ 3 - 0
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.");

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

+ 14 - 5
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<string, Object> 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);