59 lines
No EOL
1.9 KiB
C#
59 lines
No EOL
1.9 KiB
C#
using System;
|
|
using DC.Animator.Core;
|
|
using UnityEngine;
|
|
|
|
namespace DC.Animator.Adapters
|
|
{
|
|
public class SpriteAdapter : IAnimatable
|
|
{
|
|
private readonly SpriteRenderer _spriteRenderer;
|
|
|
|
public SpriteAdapter(SpriteRenderer spriteRenderer) => _spriteRenderer = spriteRenderer;
|
|
|
|
public bool SupportsProperty(AnimatableProperty property)
|
|
{
|
|
return property switch
|
|
{
|
|
AnimatableProperty.Alpha or AnimatableProperty.Color => true,
|
|
_ => false
|
|
};
|
|
}
|
|
|
|
public object GetValue(AnimatableProperty property)
|
|
{
|
|
return property switch
|
|
{
|
|
AnimatableProperty.Alpha => _spriteRenderer.color.a,
|
|
AnimatableProperty.Color => _spriteRenderer.color,
|
|
_ => throw new ArgumentException($"SpriteRendererAdapter does not support property {property}")
|
|
};
|
|
}
|
|
|
|
public void SetValue(AnimatableProperty property, object value)
|
|
{
|
|
switch (property)
|
|
{
|
|
case AnimatableProperty.Alpha:
|
|
var colorAlpha = _spriteRenderer.color;
|
|
colorAlpha.a = (float)value;
|
|
_spriteRenderer.color = colorAlpha;
|
|
break;
|
|
case AnimatableProperty.Color:
|
|
_spriteRenderer.color = (Color)value;
|
|
break;
|
|
default:
|
|
throw new ArgumentException($"SpriteRendererAdapter does not support property {property}");
|
|
}
|
|
}
|
|
|
|
public Type GetPropertyType(AnimatableProperty property)
|
|
{
|
|
return property switch
|
|
{
|
|
AnimatableProperty.Alpha => typeof(float),
|
|
AnimatableProperty.Color => typeof(Color),
|
|
_ => throw new ArgumentException($"SpriteRendererAdapter does not support property {property}")
|
|
};
|
|
}
|
|
}
|
|
} |