using System.Collections; using System.Reflection; using HarmonyLib; using UnityEngine; namespace ADOFAIRenderer.Core { [DefaultExecutionOrder(int.MaxValue)] internal class PostRenderHook : MonoBehaviour { private FieldInfo? _camQuadMeshField; private void Awake() { _camQuadMeshField = AccessTools.Field(typeof(scrCamera), "camQuadMesh"); } private void LateUpdate() { if (RenderManager.Instance) RenderManager.Instance.OnLastUpdate(); StartCoroutine(PostFrameCoroutine()); } private IEnumerator PostFrameCoroutine() { yield return new WaitForEndOfFrame(); var val = (MeshRenderer)_camQuadMeshField!.GetValue(scrCamera.instance); if (RenderManager.Instance) RenderManager.Instance.OnPostFrame(val.sharedMaterial.mainTexture as RenderTexture); } } }