mmorpg/Assets/HeroEditor4D/Common/Scripts/EditorScripts/HuePaint.cs
2024-03-18 23:09:45 +05:30

44 lines
1.2 KiB
C#

using UnityEngine;
namespace Assets.HeroEditor4D.Common.Scripts.EditorScripts
{
public class HuePaint : MonoBehaviour
{
[Range(0.0f, 1.0f)]
public float Hue;
private MaterialPropertyBlock _materialPropertyBlock;
private SpriteRenderer _spriteRenderer;
private readonly int _shaderColor = Shader.PropertyToID("_Color");
private readonly int _shaderHue = Shader.PropertyToID("_Hue");
public void OnValidate()
{
if (Hue > 0)
{
ShiftHue();
}
}
public void Start()
{
if (Hue > 0)
{
ShiftHue();
}
}
public void ShiftHue()
{
_materialPropertyBlock ??= new MaterialPropertyBlock();
_spriteRenderer ??= GetComponent<SpriteRenderer>();
var spriteColor = _spriteRenderer.color;
_materialPropertyBlock.SetColor(_shaderColor, spriteColor);
_materialPropertyBlock.SetFloat(_shaderHue, Hue);
_spriteRenderer.SetPropertyBlock(_materialPropertyBlock);
}
}
}