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