59 lines
1.4 KiB
C#
59 lines
1.4 KiB
C#
using GhostSystem;
|
|
using UnityEngine;
|
|
|
|
public class RecieveHeat : MonoBehaviour
|
|
{
|
|
public Renderer myRenderer;
|
|
private float heatLevel; // von 0-255
|
|
private float heatLevelNormalized; // von 0-1
|
|
private Material myMat;
|
|
|
|
private async void OnEnable()
|
|
{
|
|
GhostReplayManager.OnRestartLoop += HandleRestartLoop;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
GhostReplayManager.OnRestartLoop -= HandleRestartLoop;
|
|
}
|
|
|
|
private void HandleRestartLoop()
|
|
{
|
|
SetHeat(0);
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
if (myRenderer == null)
|
|
{
|
|
TryGetComponent<Renderer>(out myRenderer);
|
|
}
|
|
myMat = myRenderer.material;
|
|
SetHeat(0);
|
|
}
|
|
|
|
public void SetHeat(float heat)
|
|
{
|
|
if (heat > 1f) return;
|
|
heatLevel = heat;
|
|
float redAmount = CalcRedAmount(heatLevel);
|
|
myMat.color = new Color(redAmount,0,0);
|
|
}
|
|
|
|
public void AddHeat(float heat)
|
|
{
|
|
heatLevel += heat;
|
|
if (heatLevel > 1f) return;
|
|
float redAmount = CalcRedAmount(heatLevel);
|
|
Debug.Log(gameObject.ToString() + "Heat in: " + heatLevel + "Heat out: " + redAmount);
|
|
myMat.color = new Color(redAmount, 0, 0);
|
|
}
|
|
|
|
private float CalcRedAmount(float xNormalized)
|
|
{
|
|
float y = Mathf.Pow(xNormalized, 0.5f);
|
|
return Mathf.Clamp(y, 0f, 1f);
|
|
}
|
|
}
|