mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-24 02:31:24 +08:00
Merge pull request #1929 from vhristov/timeline_dont_pause_with_director
[unity] Add option to not pause spine with timeline
This commit is contained in:
commit
78c8c54ab7
@ -50,6 +50,7 @@ public class SpineAnimationStateDrawer : PropertyDrawer {
|
||||
SerializedProperty useBlendDurationProp = property.FindPropertyRelative("useBlendDuration");
|
||||
SerializedProperty mixDurationProp = property.FindPropertyRelative("mixDuration");
|
||||
SerializedProperty holdPreviousProp = property.FindPropertyRelative("holdPrevious");
|
||||
SerializedProperty dontPauseWithDirectorProp = property.FindPropertyRelative("dontPauseWithDirector");
|
||||
SerializedProperty eventProp = property.FindPropertyRelative("eventThreshold");
|
||||
SerializedProperty attachmentProp = property.FindPropertyRelative("attachmentThreshold");
|
||||
SerializedProperty drawOrderProp = property.FindPropertyRelative("drawOrderThreshold");
|
||||
@ -91,6 +92,9 @@ public class SpineAnimationStateDrawer : PropertyDrawer {
|
||||
singleFieldRect.y += lineHeightWithSpacing;
|
||||
EditorGUI.PropertyField(singleFieldRect, holdPreviousProp);
|
||||
|
||||
singleFieldRect.y += lineHeightWithSpacing;
|
||||
EditorGUI.PropertyField(singleFieldRect, dontPauseWithDirectorProp);
|
||||
|
||||
singleFieldRect.y += lineHeightWithSpacing;
|
||||
EditorGUI.PropertyField(singleFieldRect, eventProp);
|
||||
|
||||
|
||||
@ -53,6 +53,7 @@ namespace Spine.Unity.Playables {
|
||||
#pragma warning restore 414
|
||||
public float mixDuration = 0.1f;
|
||||
public bool holdPrevious = false;
|
||||
public bool dontPauseWithDirector = false;
|
||||
|
||||
[Range(0, 1f)]
|
||||
public float attachmentThreshold = 0.5f;
|
||||
|
||||
@ -41,14 +41,17 @@ namespace Spine.Unity.Playables {
|
||||
public int trackIndex;
|
||||
|
||||
IAnimationStateComponent animationStateComponent;
|
||||
bool dontPauseWithDirector = true;
|
||||
bool isPaused = false;
|
||||
TrackEntry pausedTrackEntry;
|
||||
float previousTimeScale = 1;
|
||||
|
||||
public override void OnBehaviourPause (Playable playable, FrameData info) {
|
||||
if (!isPaused)
|
||||
HandlePause(playable);
|
||||
isPaused = true;
|
||||
if (!dontPauseWithDirector) {
|
||||
if (!isPaused)
|
||||
HandlePause(playable);
|
||||
isPaused = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnBehaviourPlay (Playable playable, FrameData info) {
|
||||
@ -119,6 +122,8 @@ namespace Spine.Unity.Playables {
|
||||
ScriptPlayable<SpineAnimationStateBehaviour> inputPlayable = (ScriptPlayable<SpineAnimationStateBehaviour>)playable.GetInput(i);
|
||||
SpineAnimationStateBehaviour clipData = inputPlayable.GetBehaviour();
|
||||
|
||||
dontPauseWithDirector = clipData.dontPauseWithDirector;
|
||||
|
||||
if (clipData.animationReference == null) {
|
||||
float mixDuration = clipData.customDuration ? clipData.mixDuration : state.Data.DefaultMix;
|
||||
state.SetEmptyAnimation(trackIndex, mixDuration);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user