Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/AlphaLerpMaterialPropetyBlock.cs
2025-08-13 09:26:42 +08:00

55 lines
1.2 KiB
C#

using UnityEngine;
namespace MoleMole
{
public class AlphaLerpMaterialPropetyBlock
{
private Renderer _renderer;
private MaterialPropertyBlock _mpb;
private string _propertyName;
private float _little_alpha;
private float _large_alpha;
private Color _color;
private E_AlphaLerpDir _dir;
public AlphaLerpMaterialPropetyBlock(Renderer renderer, string colorPropertyName, float littleA, float largeA)
{
_renderer = renderer;
_mpb = new MaterialPropertyBlock();
_propertyName = colorPropertyName;
_little_alpha = littleA;
_large_alpha = largeA;
_color = _renderer.sharedMaterial.GetColor(_propertyName);
}
public void SetAlpha(float alpha)
{
_color.a = alpha;
_renderer.GetPropertyBlock(_mpb);
_mpb.SetColor(_propertyName, _color);
_renderer.SetPropertyBlock(_mpb);
}
public void SetDir(E_AlphaLerpDir dir)
{
_dir = dir;
}
public void LerpAlpha(float t)
{
float a = ((_dir != E_AlphaLerpDir.ToLarge) ? _large_alpha : _little_alpha);
float b = ((_dir != E_AlphaLerpDir.ToLarge) ? _little_alpha : _large_alpha);
_color.a = Mathf.Lerp(a, b, t);
_renderer.GetPropertyBlock(_mpb);
_mpb.SetColor(_propertyName, _color);
_renderer.SetPropertyBlock(_mpb);
}
}
}