Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/controlVolumeFogSRPPOSTFX.cs
2026-03-04 10:03:45 +08:00

89 lines
2.6 KiB
C#

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<PostProcessVolume>().profile;
}
private void Update()
{
VolumeFogSM_SRP setting = postProfile.GetSetting<VolumeFogSM_SRP>();
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);
}
}
}
}