mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[libgdx] EventData changed to have an Event setupPose field.
This commit is contained in:
parent
c7f328c079
commit
2aff881451
@ -2326,23 +2326,24 @@ public class SkeletonSerializer {
|
||||
json.writeName("type");
|
||||
json.writeValue("EventData");
|
||||
|
||||
Event setup = obj.getSetupPose();
|
||||
json.writeName("int");
|
||||
json.writeValue(obj.getInt());
|
||||
json.writeValue(setup.getInt());
|
||||
|
||||
json.writeName("float");
|
||||
json.writeValue(obj.getFloat());
|
||||
json.writeValue(setup.getFloat());
|
||||
|
||||
json.writeName("string");
|
||||
json.writeValue(obj.getString());
|
||||
json.writeValue(setup.getString());
|
||||
|
||||
json.writeName("audioPath");
|
||||
json.writeValue(obj.getAudioPath());
|
||||
|
||||
json.writeName("volume");
|
||||
json.writeValue(obj.getVolume());
|
||||
json.writeValue(setup.getVolume());
|
||||
|
||||
json.writeName("balance");
|
||||
json.writeValue(obj.getBalance());
|
||||
json.writeValue(setup.getBalance());
|
||||
|
||||
json.writeName("name");
|
||||
json.writeValue(obj.getName());
|
||||
|
||||
@ -39,12 +39,12 @@ import com.esotericsoftware.spine.AnimationState.AnimationStateListener;
|
||||
* {@link AnimationStateListener#event(com.esotericsoftware.spine.AnimationState.TrackEntry, Event)}, and
|
||||
* <a href="https://esotericsoftware.com/spine-events">Events</a> in the Spine User Guide. */
|
||||
public class Event {
|
||||
final float time;
|
||||
final EventData data;
|
||||
int intValue;
|
||||
float floatValue;
|
||||
String stringValue;
|
||||
float volume, balance;
|
||||
final float time;
|
||||
|
||||
public Event (float time, EventData data) {
|
||||
if (data == null) throw new IllegalArgumentException("data cannot be null.");
|
||||
@ -52,6 +52,7 @@ public class Event {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/** The integer payload for this event. */
|
||||
public int getInt () {
|
||||
return intValue;
|
||||
}
|
||||
@ -60,6 +61,7 @@ public class Event {
|
||||
this.intValue = intValue;
|
||||
}
|
||||
|
||||
/** The float payload for this event. */
|
||||
public float getFloat () {
|
||||
return floatValue;
|
||||
}
|
||||
@ -68,6 +70,7 @@ public class Event {
|
||||
this.floatValue = floatValue;
|
||||
}
|
||||
|
||||
/** The string payload for this event. */
|
||||
public String getString () {
|
||||
return stringValue;
|
||||
}
|
||||
@ -77,6 +80,7 @@ public class Event {
|
||||
this.stringValue = stringValue;
|
||||
}
|
||||
|
||||
/** If an audio path is set, the volume for the audio. */
|
||||
public float getVolume () {
|
||||
return volume;
|
||||
}
|
||||
@ -85,6 +89,7 @@ public class Event {
|
||||
this.volume = volume;
|
||||
}
|
||||
|
||||
/** If an audio path is set, the left/right balance for the audio. */
|
||||
public float getBalance () {
|
||||
return balance;
|
||||
}
|
||||
@ -93,7 +98,7 @@ public class Event {
|
||||
this.balance = balance;
|
||||
}
|
||||
|
||||
/** The animation time this event was keyed. */
|
||||
/** The animation time this event was keyed, or -1 for the setup pose. */
|
||||
public float getTime () {
|
||||
return time;
|
||||
}
|
||||
|
||||
@ -36,43 +36,19 @@ import com.badlogic.gdx.utils.Null;
|
||||
* See <a href="https://esotericsoftware.com/spine-events">Events</a> in the Spine User Guide. */
|
||||
public class EventData {
|
||||
final String name;
|
||||
int intValue;
|
||||
float floatValue;
|
||||
String stringValue;
|
||||
@Null String audioPath;
|
||||
float volume, balance;
|
||||
final Event setupPose = new Event(-1, this);
|
||||
|
||||
public EventData (String name) {
|
||||
if (name == null) throw new IllegalArgumentException("name cannot be null.");
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getInt () {
|
||||
return intValue;
|
||||
/** The setup values that are shared by all events with this data. */
|
||||
public Event getSetupPose () {
|
||||
return setupPose;
|
||||
}
|
||||
|
||||
public void setInt (int intValue) {
|
||||
this.intValue = intValue;
|
||||
}
|
||||
|
||||
public float getFloat () {
|
||||
return floatValue;
|
||||
}
|
||||
|
||||
public void setFloat (float floatValue) {
|
||||
this.floatValue = floatValue;
|
||||
}
|
||||
|
||||
public String getString () {
|
||||
return stringValue;
|
||||
}
|
||||
|
||||
public void setString (String stringValue) {
|
||||
if (stringValue == null) throw new IllegalArgumentException("stringValue cannot be null.");
|
||||
this.stringValue = stringValue;
|
||||
}
|
||||
|
||||
/** Path to an audio file relative to the audio path in the Spine project. */
|
||||
/** Path to an audio file relative to the audio folder as defined in Spine. */
|
||||
public @Null String getAudioPath () {
|
||||
return audioPath;
|
||||
}
|
||||
@ -82,24 +58,6 @@ public class EventData {
|
||||
this.audioPath = audioPath;
|
||||
}
|
||||
|
||||
/** If an audio path is set, the volume for the audio. */
|
||||
public float getVolume () {
|
||||
return volume;
|
||||
}
|
||||
|
||||
public void setVolume (float volume) {
|
||||
this.volume = volume;
|
||||
}
|
||||
|
||||
/** If an audio path is set, the left/right balance for the audio. */
|
||||
public float getBalance () {
|
||||
return balance;
|
||||
}
|
||||
|
||||
public void setBalance (float balance) {
|
||||
this.balance = balance;
|
||||
}
|
||||
|
||||
/** The name of the event, unique across all events in the skeleton.
|
||||
* <p>
|
||||
* See {@link SkeletonData#findEvent(String)}. */
|
||||
|
||||
@ -485,13 +485,14 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
o = skeletonData.events.setSize(n = input.readInt(true));
|
||||
for (int i = 0; i < n; i++) {
|
||||
var data = new EventData(input.readString());
|
||||
data.intValue = input.readInt(false);
|
||||
data.floatValue = input.readFloat();
|
||||
data.stringValue = input.readString();
|
||||
Event setup = data.setupPose;
|
||||
setup.intValue = input.readInt(false);
|
||||
setup.floatValue = input.readFloat();
|
||||
setup.stringValue = input.readString();
|
||||
data.audioPath = input.readString();
|
||||
if (data.audioPath != null) {
|
||||
data.volume = input.readFloat();
|
||||
data.balance = input.readFloat();
|
||||
setup.volume = input.readFloat();
|
||||
setup.balance = input.readFloat();
|
||||
}
|
||||
o[i] = data;
|
||||
}
|
||||
@ -1196,7 +1197,7 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
event.intValue = input.readInt(false);
|
||||
event.floatValue = input.readFloat();
|
||||
event.stringValue = input.readString();
|
||||
if (event.stringValue == null) event.stringValue = eventData.stringValue;
|
||||
if (event.stringValue == null) event.stringValue = eventData.setupPose.stringValue;
|
||||
if (event.data.audioPath != null) {
|
||||
event.volume = input.readFloat();
|
||||
event.balance = input.readFloat();
|
||||
|
||||
@ -501,13 +501,14 @@ public class SkeletonJson extends SkeletonLoader {
|
||||
// Events.
|
||||
for (JsonValue eventMap = root.getChild("events"); eventMap != null; eventMap = eventMap.next) {
|
||||
var data = new EventData(eventMap.name);
|
||||
data.intValue = eventMap.getInt("int", 0);
|
||||
data.floatValue = eventMap.getFloat("float", 0f);
|
||||
data.stringValue = eventMap.getString("string", "");
|
||||
Event setup = data.setupPose;
|
||||
setup.intValue = eventMap.getInt("int", 0);
|
||||
setup.floatValue = eventMap.getFloat("float", 0f);
|
||||
setup.stringValue = eventMap.getString("string", "");
|
||||
data.audioPath = eventMap.getString("audio", null);
|
||||
if (data.audioPath != null) {
|
||||
data.volume = eventMap.getFloat("volume", 1);
|
||||
data.balance = eventMap.getFloat("balance", 0);
|
||||
setup.volume = eventMap.getFloat("volume", 1);
|
||||
setup.balance = eventMap.getFloat("balance", 0);
|
||||
}
|
||||
skeletonData.events.add(data);
|
||||
}
|
||||
@ -1243,15 +1244,16 @@ public class SkeletonJson extends SkeletonLoader {
|
||||
var timeline = new EventTimeline(eventsMap.size);
|
||||
int frame = 0;
|
||||
for (JsonValue keyMap = eventsMap.child; keyMap != null; keyMap = keyMap.next, frame++) {
|
||||
EventData eventData = skeletonData.findEvent(keyMap.getString("name"));
|
||||
if (eventData == null) throw new SerializationException("Event not found: " + keyMap.getString("name"));
|
||||
var event = new Event(keyMap.getFloat("time", 0), eventData);
|
||||
event.intValue = keyMap.getInt("int", eventData.intValue);
|
||||
event.floatValue = keyMap.getFloat("float", eventData.floatValue);
|
||||
event.stringValue = keyMap.getString("string", eventData.stringValue);
|
||||
EventData data = skeletonData.findEvent(keyMap.getString("name"));
|
||||
if (data == null) throw new SerializationException("Event not found: " + keyMap.getString("name"));
|
||||
Event setup = data.setupPose;
|
||||
var event = new Event(keyMap.getFloat("time", 0), data);
|
||||
event.intValue = keyMap.getInt("int", setup.intValue);
|
||||
event.floatValue = keyMap.getFloat("float", setup.floatValue);
|
||||
event.stringValue = keyMap.getString("string", setup.stringValue);
|
||||
if (event.data.audioPath != null) {
|
||||
event.volume = keyMap.getFloat("volume", eventData.volume);
|
||||
event.balance = keyMap.getFloat("balance", eventData.balance);
|
||||
event.volume = keyMap.getFloat("volume", setup.volume);
|
||||
event.balance = keyMap.getFloat("balance", setup.balance);
|
||||
}
|
||||
timeline.setFrame(frame, event);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user