using UnityEngine;
namespace LitMotion.Extensions
{
///
/// Provides binding extension methods for SpriteRenderer.
///
public static class LitMotionSpriteRendererExtensions
{
///
/// Create a motion data and bind it to SpriteRenderer.color
///
/// The type of special parameters given to the motion data
/// The type of adapter that support value animation
/// This builder
///
/// Handle of the created motion data.
public static MotionHandle BindToColor(this MotionBuilder builder, SpriteRenderer spriteRenderer)
where TOptions : unmanaged, IMotionOptions
where TAdapter : unmanaged, IMotionAdapter
{
Error.IsNull(spriteRenderer);
return builder.BindWithState(spriteRenderer, static (x, m) =>
{
m.color = x;
});
}
///
/// Create a motion data and bind it to SpriteRenderer.color.r
///
/// The type of special parameters given to the motion data
/// The type of adapter that support value animation
/// This builder
///
/// Handle of the created motion data.
public static MotionHandle BindToColorR(this MotionBuilder builder, SpriteRenderer spriteRenderer)
where TOptions : unmanaged, IMotionOptions
where TAdapter : unmanaged, IMotionAdapter
{
Error.IsNull(spriteRenderer);
return builder.BindWithState(spriteRenderer, static (x, m) =>
{
var c = m.color;
c.r = x;
m.color = c;
});
}
///
/// Create a motion data and bind it to SpriteRenderer.color.g
///
/// The type of special parameters given to the motion data
/// The type of adapter that support value animation
/// This builder
///
/// Handle of the created motion data.
public static MotionHandle BindToColorG(this MotionBuilder builder, SpriteRenderer spriteRenderer)
where TOptions : unmanaged, IMotionOptions
where TAdapter : unmanaged, IMotionAdapter
{
Error.IsNull(spriteRenderer);
return builder.BindWithState(spriteRenderer, static (x, m) =>
{
var c = m.color;
c.g = x;
m.color = c;
});
}
///
/// Create a motion data and bind it to SpriteRenderer.color.b
///
/// The type of special parameters given to the motion data
/// The type of adapter that support value animation
/// This builder
///
/// Handle of the created motion data.
public static MotionHandle BindToColorB(this MotionBuilder builder, SpriteRenderer spriteRenderer)
where TOptions : unmanaged, IMotionOptions
where TAdapter : unmanaged, IMotionAdapter
{
Error.IsNull(spriteRenderer);
return builder.BindWithState(spriteRenderer, static (x, m) =>
{
var c = m.color;
c.b = x;
m.color = c;
});
}
///
/// Create a motion data and bind it to SpriteRenderer.color.a
///
/// The type of special parameters given to the motion data
/// The type of adapter that support value animation
/// This builder
///
/// Handle of the created motion data.
public static MotionHandle BindToColorA(this MotionBuilder builder, SpriteRenderer spriteRenderer)
where TOptions : unmanaged, IMotionOptions
where TAdapter : unmanaged, IMotionAdapter
{
Error.IsNull(spriteRenderer);
return builder.BindWithState(spriteRenderer, static (x, m) =>
{
var c = m.color;
c.a = x;
m.color = c;
});
}
}
}