Cleaned up and commented version.
This commit is contained in:
@@ -7,6 +7,8 @@ using UnityEngine.UI;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// Skript der Basis-Szene, um den Szenenwechsel in der Version ohne Portale zu vollziehen.
|
||||
|
||||
public class FlushAndLoad : MonoBehaviour
|
||||
{
|
||||
public TMP_Text output;
|
||||
@@ -20,8 +22,8 @@ public class FlushAndLoad : MonoBehaviour
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
GhostRecorderBatch.OnUploadFinished += HandleUploadFinished;
|
||||
RoomManager.OnSceneIdReady += HandleSceneIdReady;
|
||||
GhostRecorderBatch.OnUploadFinished += HandleUploadFinished; // abonniert das Event, das ausgelöst wird, wenn der Upload in die Datenbank erfolgreich war.
|
||||
RoomManager.OnSceneIdReady += HandleSceneIdReady; // abonniert das Event, das ausgelöst wird, wenn die neue Szene vollständig hinzugeladen wurde.
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
@@ -30,18 +32,12 @@ public class FlushAndLoad : MonoBehaviour
|
||||
RoomManager.OnSceneIdReady -= HandleSceneIdReady;
|
||||
}
|
||||
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (OVRInput.GetDown(OVRInput.Button.SecondaryIndexTrigger))
|
||||
if (OVRInput.GetDown(OVRInput.Button.SecondaryIndexTrigger)) // der rechte Trigger löst den Szenenwechsel aus.
|
||||
{
|
||||
if (sceneId == "End") Application.Quit();
|
||||
if (sceneId == "End") Application.Quit(); // außer nach der letzten Szene. Dort wird die Anwendung beendet.
|
||||
else
|
||||
{
|
||||
output.text = "Flush...";
|
||||
@@ -56,11 +52,11 @@ public class FlushAndLoad : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleUploadFinished()
|
||||
private void HandleUploadFinished() // wenn der Upload in die Datenbank erfolgreich war, wird der Pass-Through-Layer wieder deaktiviert, um entweder die neue Szene zu zeigen
|
||||
{
|
||||
loadingScreen.SetActive(false);
|
||||
output.text = "";
|
||||
if (sceneId == "End")
|
||||
if (sceneId == "End") // oder nach der letzten Szene einen Info-Text.
|
||||
{
|
||||
output.text = "Durchlauf beendet.";
|
||||
}
|
||||
@@ -68,15 +64,15 @@ public class FlushAndLoad : MonoBehaviour
|
||||
|
||||
private void HandleSceneIdReady(string id, List<GameObject> doors, List<RecieveHeat> targets)
|
||||
{
|
||||
sceneId = id;
|
||||
sceneId = id; // wenn die neu hinzugeladene Szene bereit ist, wird die sceneID gesetzt.
|
||||
if (id == "Room1")
|
||||
{
|
||||
loadingScreen.SetActive(false);
|
||||
passthroughLayer.SetActive(false);
|
||||
loadingScreen.SetActive(false); // Bei Room1 wird zusätzlich der Pass-Through-Layer/Loding Screen deaktiviert, da hier noch keine Daten hochgeladen werden
|
||||
passthroughLayer.SetActive(false); // und somit das entsprechende Event nicht ausgelöst wird.
|
||||
}
|
||||
if (id == "End")
|
||||
{
|
||||
instruction.text = "Drücke den rechten Trigger, um die Anwendung zu beenden.";
|
||||
instruction.text = "Drücke den rechten Trigger, um die Anwendung zu beenden."; // Die zweite Ausnahme bildet die letzte Szene. Hier erscheint nur eine Info-Tafel.
|
||||
canvas.SetActive(true);
|
||||
passthroughLayer.SetActive(true);
|
||||
}
|
||||
@@ -88,10 +84,10 @@ public class FlushAndLoad : MonoBehaviour
|
||||
canvas.SetActive(false);
|
||||
}
|
||||
|
||||
private async UniTaskVoid LoadScene()
|
||||
{
|
||||
private async UniTaskVoid LoadScene() // Die eigentliche Funktion zum Laden der Szene aktiviert erst den Pass-Through-Layer/Loading Screen um Motion Sickness durch stehendes
|
||||
{ // Bild zu vermeiden. Dann wird der Flush-Befehl zum Upload der Recording-Daten in die Datenbank gegeben.
|
||||
await Loadingscreen();
|
||||
recorder.Flush();
|
||||
GetComponent<SceneLoader>().NewRoom();
|
||||
}
|
||||
GetComponent<SceneLoader>().NewRoom(); // Es wird der nächste Raum geladen. Der Pass-Through-Layer bleibt so lange aktiv, bis er durch die abonnierten Events deaktiviert
|
||||
} // wird. So kann Motion-Sickness durch stockende Bilder beim Laden vermieden werden.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user