JD2022-TU1/main/tools/framework/JD.Serialization/Timeline/Clips/AlphaClip.cs

41 lines
No EOL
1.1 KiB
C#

using System.Linq;
namespace JD.Serialization
{
public partial class AlphaClip
{
/// <summary>
/// Computes whether the curve is a fade in or fade out curve.
/// </summary>
public static bool? FadesToOpaque(BezierCurveFloat curve)
{
if (curve.Keys.Count == 0)
{
// No fading
return null;
}
else if (curve.Keys.Count == 1)
{
return IsOpaque(curve.Keys.First());
}
float minFrame = curve.Keys.Min(point => point.Frame);
var from = IsOpaque(curve.Keys.First(x => x.Frame.Equals(minFrame)));
float maxFrame = curve.Keys.Max(point => point.Frame);
var to = IsOpaque(curve.Keys.First(x => x.Frame.Equals(maxFrame)));
if (@from != to)
{
return to;
}
// No fading, returns a normal type
return null;
}
private static bool IsOpaque(KeyFloat key)
{
return key.Position.Y > 0.5f;
}
}
}