[unity] Bake event ints into intParameter instead of floatParameter.

This commit is contained in:
pharan 2018-10-01 22:05:12 +08:00
parent 32d56c9c68
commit 8f68feaff5

View File

@ -1165,13 +1165,13 @@ namespace Spine.Unity.Editor {
var boneData = skeleton.Data.Bones.Items[timeline.BoneIndex]; var boneData = skeleton.Data.Bones.Items[timeline.BoneIndex];
var bone = skeleton.Bones.Items[timeline.BoneIndex]; var bone = skeleton.Bones.Items[timeline.BoneIndex];
AnimationCurve curve = new AnimationCurve(); var curve = new AnimationCurve();
float endTime = timeline.Frames[(timeline.FrameCount * 2) - 2]; float endTime = timeline.Frames[(timeline.FrameCount * 2) - 2];
float currentTime = timeline.Frames[0]; float currentTime = timeline.Frames[0];
List<Keyframe> keys = new List<Keyframe>(); var keys = new List<Keyframe>();
float rotation = timeline.Frames[1] + boneData.Rotation; float rotation = timeline.Frames[1] + boneData.Rotation;
@ -1296,35 +1296,27 @@ namespace Spine.Unity.Editor {
} }
static void ParseEventTimeline (EventTimeline timeline, AnimationClip clip, SendMessageOptions eventOptions) { static void ParseEventTimeline (EventTimeline timeline, AnimationClip clip, SendMessageOptions eventOptions) {
float[] frames = timeline.Frames; float[] frames = timeline.Frames;
var events = timeline.Events; var events = timeline.Events;
List<AnimationEvent> animEvents = new List<AnimationEvent>(); var animEvents = new List<AnimationEvent>();
for (int i = 0; i < frames.Length; i++) { for (int i = 0, n = frames.Length; i < n; i++) {
var ev = events[i]; var spineEvent = events[i];
var unityAnimationEvent = new AnimationEvent {
time = frames[i],
functionName = spineEvent.Data.Name,
messageOptions = eventOptions
};
AnimationEvent ae = new AnimationEvent(); if (!string.IsNullOrEmpty(spineEvent.String)) {
//MITCH: left todo: Deal with Mecanim's zero-time missed event unityAnimationEvent.stringParameter = spineEvent.String;
ae.time = frames[i]; } else if (spineEvent.Int != 0) {
ae.functionName = ev.Data.Name; unityAnimationEvent.intParameter = spineEvent.Int;
ae.messageOptions = eventOptions; } else if (spineEvent.Float != 0) {
unityAnimationEvent.floatParameter = spineEvent.Float;
} // else, paramless function/Action.
if (!string.IsNullOrEmpty(ev.String)) { animEvents.Add(unityAnimationEvent);
ae.stringParameter = ev.String;
} else {
if (ev.Int == 0 && ev.Float == 0) {
//do nothing, raw function
} else {
if (ev.Int != 0)
ae.floatParameter = (float)ev.Int;
else
ae.floatParameter = ev.Float;
}
}
animEvents.Add(ae);
} }
AnimationUtility.SetAnimationEvents(clip, animEvents.ToArray()); AnimationUtility.SetAnimationEvents(clip, animEvents.ToArray());