// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2026 Kybernetik //
#if UNITY_EDITOR
using Animancer.TransitionLibraries;
using System;
namespace Animancer.Editor.TransitionLibraries
{
/// [Editor-Only]
/// A for editing
/// .
///
/// https://kybernetik.com.au/animancer/api/Animancer.Editor.TransitionLibraries/TransitionLibraryStartTimesPage
[Serializable]
public class TransitionLibraryStartTimesPage : TransitionLibraryModifiersPage
{
/************************************************************************************************************************/
///
public override string DisplayName
=> "Start Time Modifiers";
///
public override string HelpTooltip
=> "Modifiers allow you to replace the usual start time for specific combinations of transitions.";
///
public override int Index
=> 1;
private readonly string[] ConvertedZeroes;
///
public TransitionLibraryStartTimesPage()
: base(Units.AnimationTimeAttribute.Units.Normalized)
{
TimeDrawer.Attribute.DisabledText = Strings.Tooltips.StartTimeDisabled;
var converters = TimeDrawer.DisplayConverters;
ConvertedZeroes = new string[converters.Length];
for (int i = 0; i < converters.Length; i++)
ConvertedZeroes[i] = converters[i].ConvertedZero;
}
///
public override void ConfigureForSingleField(bool singleField, ref float value)
{
var isSingleFieldNaN = singleField && float.IsNaN(value);
if (isSingleFieldNaN)
value = 0;
var converters = TimeDrawer.DisplayConverters;
for (int i = 0; i < converters.Length; i++)
{
var converter = converters[i];
converter.ConvertedZero = isSingleFieldNaN
? Strings.Tooltips.StartTimeDisabled
: ConvertedZeroes[i];
}
}
///
public override float GetValue(ITransition transition)
=> transition.NormalizedStartTime;
///
public override float GetValue(TransitionModifierDefinition modifier)
=> modifier.NormalizedStartTime;
///
public override void SetValue(ref TransitionModifierDefinition modifier, float value)
=> modifier = modifier.WithNormalizedStartTime(value);
/************************************************************************************************************************/
}
}
#endif