SHA256
38 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|