using System.Text;
using UnityEngine.LowLevel;
using UnityEngine;
public static class PrintDefaultPlayerLoop
{
//Retrieve the default Player loop system and iterate over its subsystems to print them.
//Run this method on runtime initialization
[RuntimeInitializeOnLoadMethod]
private static void AppStart()
{
StringBuilder sb = new();
// Pass the default Player loop to the recursive print function
RecursivePlayerLoopPrint(PlayerLoop.GetDefaultPlayerLoop(), sb, 0);
Debug.Log(sb.ToString());
}
// Loop through the Player loop tree structure and add the names of the systems to the StringBuilder
private static void RecursivePlayerLoopPrint(PlayerLoopSystem playerLoopSystem, StringBuilder sb, int depth)
{
if (depth == 0)
{
sb.AppendLine("ROOT NODE");
}
else if (playerLoopSystem.type != null)
{
for (int i = 0; i < depth; i++)
{
sb.Append("\t");
}
sb.AppendLine(playerLoopSystem.type.Name);
}
if (playerLoopSystem.subSystemList != null)
{
depth++;
foreach (var s in playerLoopSystem.subSystemList)
{
RecursivePlayerLoopPrint(s, sb, depth);
}
depth--;
}
}
}