using System; using UnityEngine; namespace MoleMole { [RequireComponent(typeof(Renderer))] public class KianaWingAdjuster : MonoBehaviour { private static readonly string OPAQUENESS_SCALER_NAME = "_OpaquenessScalerWithoutHDR"; private static readonly string EMISSION_SCALER_SCALER_NAME = "_EmissionScalerScalerWithoutHDR"; public float opaquenessScalerWithoutHDR = 2f; public float emissionScalerScalerWithoutHDR = 0.22f; private float _oldOpaquenessScalerWithoutHDR = 1f; private float _oldEmissionScalerScalerWithoutHDR = 1f; private MaterialPropertyBlock _mpb; private Renderer _renderer; private void Start() { GraphicsSettingUtil.onPostFXChanged = (Action)Delegate.Combine(GraphicsSettingUtil.onPostFXChanged, new Action(SettingHDR)); _renderer = GetComponent(); _mpb = new MaterialPropertyBlock(); _renderer.GetPropertyBlock(_mpb); SettingHDR(false); } private void OnDestroy() { GraphicsSettingUtil.onPostFXChanged = (Action)Delegate.Remove(GraphicsSettingUtil.onPostFXChanged, new Action(SettingHDR)); } private void SettingHDR(bool postFXEnable) { if (base.gameObject.activeSelf) { bool flag = false; PostFX postFX = UnityEngine.Object.FindObjectOfType(); if (postFX != null && postFX.enabled) { flag = postFX.SupportHDR; } if (!flag) { _mpb.SetFloat(OPAQUENESS_SCALER_NAME, opaquenessScalerWithoutHDR); _mpb.SetFloat(EMISSION_SCALER_SCALER_NAME, emissionScalerScalerWithoutHDR); } else { _mpb.SetFloat(OPAQUENESS_SCALER_NAME, _oldOpaquenessScalerWithoutHDR); _mpb.SetFloat(EMISSION_SCALER_SCALER_NAME, _oldEmissionScalerScalerWithoutHDR); } _renderer.SetPropertyBlock(_mpb); } } } }