This commit is contained in:
badlogic 2018-09-06 14:46:18 +02:00
commit c408b7bae0
4 changed files with 35 additions and 9 deletions

View File

@ -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;

View File

@ -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.");

View File

@ -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);

View File

@ -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);