61 lines
1.5 KiB
C#
61 lines
1.5 KiB
C#
using NaughtyAttributes;
|
|
using UnityEngine;
|
|
|
|
namespace EscapeRoomEngine.Desert.Runtime
|
|
{
|
|
public class Emission : MonoBehaviour
|
|
{
|
|
private static readonly int EmissionColorNameID = Shader.PropertyToID("_EmissionColor");
|
|
|
|
internal bool active;
|
|
[ColorUsage(false, true)] public Color color;
|
|
[BoxGroup("Internal")] [Required] public MeshRenderer emissionRenderer;
|
|
|
|
private bool _previousActive;
|
|
private Color _previousColor;
|
|
private Material _material;
|
|
|
|
private void Awake()
|
|
{
|
|
_material = emissionRenderer.material;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
ChangedToggle();
|
|
ChangedColor();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (_previousActive != active)
|
|
{
|
|
ChangedToggle();
|
|
_previousActive = active;
|
|
}
|
|
|
|
if (!_previousColor.Equals(color))
|
|
{
|
|
ChangedColor();
|
|
_previousColor = color;
|
|
}
|
|
}
|
|
|
|
private void ChangedToggle()
|
|
{
|
|
if (active)
|
|
{
|
|
_material.EnableKeyword("_EMISSION");
|
|
}
|
|
else
|
|
{
|
|
_material.DisableKeyword("_EMISSION");
|
|
}
|
|
}
|
|
|
|
private void ChangedColor()
|
|
{
|
|
_material.SetColor(EmissionColorNameID, color);
|
|
}
|
|
}
|
|
} |