mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 22:39:22 +00:00
LegacyContentMitigation: initial commit
manual "multipass" in legacy worlds
This commit is contained in:
parent
3d6b1bbd59
commit
94515efbe3
8 changed files with 645 additions and 0 deletions
69
LegacyContentMitigation/Components/CameraCallbackLogger.cs
Normal file
69
LegacyContentMitigation/Components/CameraCallbackLogger.cs
Normal file
|
@ -0,0 +1,69 @@
|
|||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using System.Text;
|
||||
using MelonLoader;
|
||||
|
||||
namespace NAK.LegacyContentMitigation.Debug;
|
||||
|
||||
public class CameraCallbackLogger
|
||||
{
|
||||
private static CameraCallbackLogger instance;
|
||||
private readonly List<string> frameCallbacks = new();
|
||||
private bool isListening;
|
||||
private readonly StringBuilder logBuilder = new();
|
||||
|
||||
public static CameraCallbackLogger Instance => instance ??= new CameraCallbackLogger();
|
||||
|
||||
private void RegisterCallbacks()
|
||||
{
|
||||
Camera.onPreCull += (cam) => LogCallback(cam, "OnPreCull");
|
||||
Camera.onPreRender += (cam) => LogCallback(cam, "OnPreRender");
|
||||
Camera.onPostRender += (cam) => LogCallback(cam, "OnPostRender");
|
||||
}
|
||||
|
||||
private void UnregisterCallbacks()
|
||||
{
|
||||
Camera.onPreCull -= (cam) => LogCallback(cam, "OnPreCull");
|
||||
Camera.onPreRender -= (cam) => LogCallback(cam, "OnPreRender");
|
||||
Camera.onPostRender -= (cam) => LogCallback(cam, "OnPostRender");
|
||||
}
|
||||
|
||||
public void LogCameraEvents()
|
||||
{
|
||||
MelonCoroutines.Start(LoggingCoroutine());
|
||||
}
|
||||
|
||||
private IEnumerator LoggingCoroutine()
|
||||
{
|
||||
yield return null; // idk at what point in frame start occurs
|
||||
|
||||
// First frame: Register and listen
|
||||
RegisterCallbacks();
|
||||
isListening = true;
|
||||
yield return null;
|
||||
|
||||
// Second frame: Log and cleanup
|
||||
isListening = false;
|
||||
PrintFrameLog();
|
||||
UnregisterCallbacks();
|
||||
}
|
||||
|
||||
private void LogCallback(Camera camera, string callbackName)
|
||||
{
|
||||
if (!isListening) return;
|
||||
frameCallbacks.Add($"{camera.name} - {callbackName} (Depth: {camera.depth})");
|
||||
}
|
||||
|
||||
private void PrintFrameLog()
|
||||
{
|
||||
logBuilder.Clear();
|
||||
logBuilder.AppendLine("\nCamera Callbacks for Frame:");
|
||||
|
||||
foreach (var callback in frameCallbacks)
|
||||
logBuilder.AppendLine(callback);
|
||||
|
||||
LegacyContentMitigationMod.Logger.Msg(logBuilder.ToString());
|
||||
|
||||
frameCallbacks.Clear();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue