using GameCore; using System.Threading.Tasks; using TMPro; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; public class FishPhotoCaptrue : MonoBehaviour { [SerializeField] private TMP_Text txt_fishWeight, txt_fishName; [SerializeField] private Camera cam; [SerializeField] private UniversalRenderPipelineAsset m_PipelineAsset; private RenderPipelineAsset m_PreviousPipelineAsset; private bool m_overrodeQualitySettings; void OnEnable() { UpdatePipeline(); } void OnDisable() { ResetPipeline(); } private void UpdatePipeline() { if (m_PipelineAsset) { if (QualitySettings.renderPipeline != null && QualitySettings.renderPipeline != m_PipelineAsset) { m_PreviousPipelineAsset = QualitySettings.renderPipeline; QualitySettings.renderPipeline = m_PipelineAsset; m_overrodeQualitySettings = true; } else if (GraphicsSettings.renderPipelineAsset != m_PipelineAsset) { m_PreviousPipelineAsset = GraphicsSettings.renderPipelineAsset; GraphicsSettings.renderPipelineAsset = m_PipelineAsset; m_overrodeQualitySettings = false; } } } private void ResetPipeline() { if (m_PreviousPipelineAsset) { if (m_overrodeQualitySettings) { QualitySettings.renderPipeline = m_PreviousPipelineAsset; } else { GraphicsSettings.renderPipelineAsset = m_PreviousPipelineAsset; } } } public void Init(string fishName, float fishWeight) { txt_fishName.text = LocalizationMgr.GetFormatTextValue(fishName); txt_fishWeight.text = LocalizationMgr.GetWeight(fishWeight); } public async Task RenderImage(RenderTexture rt) { Camera main = Camera.main; cam.transform.position = main.transform.position; cam.transform.rotation = main.transform.rotation; cam.fieldOfView = main.fieldOfView; await Awaiters.NextFrame; await Awaiters.EndOfFrame; var request = new UniversalRenderPipeline.SingleCameraRequest(); request.destination = rt; RenderPipeline.SubmitRenderRequest(cam, request); await Awaiters.EndOfFrame; await Awaiters.NextFrame; } }