1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using Fort23.Mono;
- using UnityEngine;
- using UnityEngine.Rendering.Universal;
- public class CustomCameraStack : MonoBehaviour
- {
- private UniversalAdditionalCameraData _cameraData;
- public Camera camera;
- public static CustomCameraStack currCustomCameraStack;
- private void OnEnable()
- {
- currCustomCameraStack = this;
- SetUICamera();
- camera = GetComponent<Camera>();
- }
- public void SetUICamera()
- {
- if (UIManager.Instance != null && UIManager.Instance.UICamera != null)
- {
- UniversalAdditionalCameraData cameraData = UIManager.Instance.UICamera.gameObject.GetComponent<UniversalAdditionalCameraData>();
- if (cameraData != null)
- {
- UIManager.Instance.CurrCustomCameraStack = this;
- cameraData.renderType = CameraRenderType.Overlay;
- }
- AddCamera(UIManager.Instance.UICamera);
- }
- }
- private void Update()
- {
- if (currCustomCameraStack == this && UIManager.Instance != null && UIManager.Instance.CurrCustomCameraStack == null)
- {
- SetUICamera();
- }
- }
- public void AddCamera(Camera camera)
- {
- if (_cameraData == null)
- {
- _cameraData = GetComponent<Camera>().GetUniversalAdditionalCameraData();
- }
- if (!_cameraData.cameraStack.Contains(camera))
- {
- _cameraData.cameraStack.Add(camera);
- }
- }
- public void RemoveCamera(Camera camera)
- {
- if (_cameraData == null)
- {
- _cameraData = GetComponent<Camera>().GetUniversalAdditionalCameraData();
- }
- if (_cameraData.cameraStack.Contains(camera))
- {
- _cameraData.cameraStack.Remove(camera);
- }
- }
- private void OnDisable()
- {
- if (_cameraData != null && _cameraData.cameraStack != null && _cameraData.cameraStack[^1] != null && UIManager.Instance.CurrCustomCameraStack == this)
- {
- UniversalAdditionalCameraData cameraData = _cameraData.cameraStack[^1].gameObject.GetComponent<UniversalAdditionalCameraData>();
- if (cameraData != null)
- {
- cameraData.renderType = CameraRenderType.Base;
- }
- UIManager.Instance.CurrCustomCameraStack = null;
- }
- _cameraData.cameraStack.Clear();
- }
- }
|