/************************************************************************************************************************/ /// <summary>Initializes the `transition` based on the `state`.</summary> private static void GetDetailsFromState(AnimatorState state, ITransitionDetailed transition) { if (state == null || transition == null) { return; } transition.Speed = state.speed; var isForwards = state.speed >= 0; var defaultEndTime = AnimancerEvent.Sequence.GetDefaultNormalizedEndTime(state.speed); var endTime = defaultEndTime; var exitTransitions = state.transitions; for (int i = 0; i < exitTransitions.Length; i++) { var exitTransition = exitTransitions[i]; if (exitTransition.hasExitTime) { if (isForwards) { if (endTime > exitTransition.exitTime) { endTime = exitTransition.exitTime; } } else { if (endTime < exitTransition.exitTime) { endTime = exitTransition.exitTime; } } } } if (endTime != defaultEndTime && AnimancerUtilities.TryGetWrappedObject(transition, out IHasEvents events)) { if (events.SerializedEvents == null) { events.SerializedEvents = new AnimancerEvent.Sequence.Serializable(); } events.SerializedEvents.SetNormalizedEndTime(endTime); } }
/************************************************************************************************************************/ private void DoPreviewTimeButton(ref Rect area, ref float value, ITransitionDetailed transition, float[] multipliers) { if (!TransitionPreviewWindow.IsPreviewingCurrentProperty()) { return; } var previewTime = TransitionPreviewWindow.PreviewNormalizedTime; const string Tooltip = "• Left Click = preview the current value of this field." + "\n• Right Click = set this field to use the current preview time."; var displayValue = GetDisplayValue(value, nextDefaultValue); var multiplier = multipliers[(int)Units.Normalized]; displayValue *= multiplier; var isCurrent = Mathf.Approximately(displayValue, previewTime); var buttonArea = area; if (TransitionDrawer.DoPreviewButtonGUI(ref buttonArea, isCurrent, Tooltip)) { if (Event.current.button != 1) { TransitionPreviewWindow.PreviewNormalizedTime = displayValue; } else { value = previewTime / multiplier; } } // Only steal the button area for single line fields. if (area.height <= LineHeight) { area = buttonArea; } }
/// <summary>Returns true if the `node` is not null and <see cref="ITransitionDetailed.IsValid"/>.</summary> public static bool IsValid(this ITransitionDetailed transition) => transition != null && transition.IsValid;
/// <summary>Returns true if the `node` is not null and <see cref="ITransitionDetailed.IsValid"/>.</summary> public static bool IsValid(this ITransitionDetailed transition) { return(transition != null && transition.IsValid); }