Cleaned up and commented version.
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
using GhostSystem;
|
||||
using UnityEngine;
|
||||
|
||||
// Dieses Script ist für die Färbung erfasster Objekte zuständig.
|
||||
|
||||
public class RecieveHeat : MonoBehaviour
|
||||
{
|
||||
public Renderer myRenderer;
|
||||
@@ -10,20 +12,20 @@ public class RecieveHeat : MonoBehaviour
|
||||
|
||||
private async void OnEnable()
|
||||
{
|
||||
GhostReplayManager.OnRestartLoop += HandleRestartLoop;
|
||||
}
|
||||
GhostReplayManager.OnRestartLoop += HandleRestartLoop; // Das Event OnRestartLoop des GhostReplayManagers wird abonniert, um die Färbung der Objekte zurücksetzen zu
|
||||
} // können, wenn das Replay neu startet.
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
GhostReplayManager.OnRestartLoop -= HandleRestartLoop;
|
||||
}
|
||||
|
||||
private void HandleRestartLoop()
|
||||
private void HandleRestartLoop() // Stetzt den Heat-Wert und somit die Färbung bei einem Restart des Replays zurück.
|
||||
{
|
||||
SetHeat(0);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
private void Start() // In der Start-Methode wird der Zugriff auf das Material hergestellt.
|
||||
{
|
||||
if (myRenderer == null)
|
||||
{
|
||||
@@ -33,24 +35,24 @@ public class RecieveHeat : MonoBehaviour
|
||||
SetHeat(0);
|
||||
}
|
||||
|
||||
public void SetHeat(float heat)
|
||||
public void SetHeat(float heat) // Diese Funktion kann von anderen Skripten (z.B. dem Raycast-Skript EyeTrackingCollisionPoints) aufgerufen werden, um den Heat-Wert zu setzen.
|
||||
{
|
||||
if (heat > 1f) return;
|
||||
if (heat > 1f) return; // Der Heat-Wert darf 1 nicht übersteigen, da das dem maximalen Rot-Wert von 255 entspricht.
|
||||
heatLevel = heat;
|
||||
float redAmount = CalcRedAmount(heatLevel);
|
||||
myMat.color = new Color(redAmount,0,0);
|
||||
float redAmount = CalcRedAmount(heatLevel); // der Rot-Wert wird für einen exponentiellen Anstieg innerhalb der Fixationsdauer noch einmal gemappt.
|
||||
myMat.color = new Color(redAmount,0,0); // Das Material wird entsprechend stark rot gefärbt.
|
||||
}
|
||||
|
||||
public void AddHeat(float heat)
|
||||
public void AddHeat(float heat) // Diese funktion addiert einen übergebenen Wert zum aktuellen Heat-Wert. Kann ebenfalls durch andere Skripte aufgerufen werden.
|
||||
{
|
||||
heatLevel += heat;
|
||||
if (heatLevel > 1f) return;
|
||||
if (heatLevel > 1f) return; // Die Funktionsweise entspricht weitesgehend der von SetHeat.
|
||||
float redAmount = CalcRedAmount(heatLevel);
|
||||
Debug.Log(gameObject.ToString() + "Heat in: " + heatLevel + "Heat out: " + redAmount);
|
||||
Debug.Log(gameObject.ToString() + "Heat in: " + heatLevel + "Heat out: " + redAmount); // Ein Debug-Log, um den zeitbasierten Anstieg der Färbung zu prüfen.
|
||||
myMat.color = new Color(redAmount, 0, 0);
|
||||
}
|
||||
|
||||
private float CalcRedAmount(float xNormalized)
|
||||
private float CalcRedAmount(float xNormalized) // Hier wird der lineare Anstieg in eine exponentielle Funktion überführt.
|
||||
{
|
||||
float y = Mathf.Pow(xNormalized, 0.5f);
|
||||
return Mathf.Clamp(y, 0f, 1f);
|
||||
|
||||
Reference in New Issue
Block a user