Files
ADOFAIRenderer/Core/PostRenderHook.cs
T
2026-10-07 11:47:40 +09:00

38 lines
1.1 KiB
C#

using System.Reflection;
using Cysharp.Threading.Tasks;
using HarmonyLib;
using UnityEngine;
namespace ADOFAIRenderer.Core;
[DefaultExecutionOrder(int.MaxValue)]
internal class PostRenderHook : MonoBehaviour
{
private FieldInfo? _camQuadMeshField;
private MeshRenderer? _camQuadMeshRenderer;
private void Awake()
{
_camQuadMeshField = AccessTools.Field(typeof(scrCamera), "camQuadMesh");
}
private void LateUpdate()
{
if (RenderManager.Instance)
RenderManager.Instance.OnLastUpdate();
PostFrameAsync().Forget();
}
private async UniTaskVoid PostFrameAsync()
{
await UniTask.WaitForEndOfFrame(this, destroyCancellationToken);
if (!_camQuadMeshRenderer && scrCamera.instance)
_camQuadMeshRenderer = _camQuadMeshField?.GetValue(scrCamera.instance) as MeshRenderer;
if (RenderManager.Instance && _camQuadMeshRenderer)
RenderManager.Instance.OnPostFrame(_camQuadMeshRenderer.sharedMaterial.mainTexture as RenderTexture);
}
}