using UnityEngine; using UnityEngine.Rendering.PostProcessing; [ExecuteInEditMode] public class controlVolumeFogSRPPOSTFX : MonoBehaviour { public Transform Sun; public Light localLightA; public float localLightIntensity; public float localLightRadius; private PostProcessProfile postProfile; private void Start() { postProfile = GetComponent().profile; } private void Update() { VolumeFogSM_SRP setting = postProfile.GetSetting(); if (setting != null) { _ = localLightA != null; Camera camera = Camera.current; if (camera == null) { camera = Camera.main; } setting._cameraRoll.value = camera.transform.eulerAngles.z; setting._cameraDiff.value = camera.transform.eulerAngles; if (camera.transform.eulerAngles.y > 360f) { setting._cameraDiff.value.y = camera.transform.eulerAngles.y % 360f; } if (camera.transform.eulerAngles.y > 180f) { setting._cameraDiff.value.y = 0f - (360f - setting._cameraDiff.value.y); } if (setting._cameraDiff.value.y > 90f && setting._cameraDiff.value.y < 180f) { setting._cameraDiff.value.y = 180f - setting._cameraDiff.value.y; setting._cameraDiff.value.w = -1f; } else if (setting._cameraDiff.value.y < -90f && setting._cameraDiff.value.y > -180f) { setting._cameraDiff.value.y = -180f - setting._cameraDiff.value.y; setting._cameraDiff.value.w = -1f; } else { setting._cameraDiff.value.w = 1f; } if (camera.transform.eulerAngles.x > 360f) { setting._cameraDiff.value.x = camera.transform.eulerAngles.x % 360f; } if (camera.transform.eulerAngles.x > 180f) { setting._cameraDiff.value.x = 360f - setting._cameraDiff.value.x; } if (camera.transform.eulerAngles.x > 0f && camera.transform.eulerAngles.x < 180f) { setting._cameraTiltSign.value = 1f; } else { setting._cameraTiltSign.value = -1f; } if (Sun != null) { Vector3 forward = Sun.transform.forward; forward = Quaternion.AngleAxis(0f - camera.transform.eulerAngles.y, Vector3.up) * -forward; forward = Quaternion.AngleAxis(camera.transform.eulerAngles.x, Vector3.left) * forward; forward = Quaternion.AngleAxis(0f - camera.transform.eulerAngles.z, Vector3.forward) * forward; setting.Sun.value = new Vector4(forward.x, forward.y, forward.z, 1f); } if (localLightA != null) { setting.PointL.value = new Vector4(localLightA.transform.position.x, localLightA.transform.position.y, localLightA.transform.position.z, localLightIntensity); setting.PointLParams.value = new Vector4(localLightA.color.r, localLightA.color.g, localLightA.color.b, localLightRadius); } } } }