Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/UltimateWater/WaterSurfaceOverlayRenderer.cs
2026-02-21 16:45:37 +08:00

112 lines
2.4 KiB
C#

using System;
using UltimateWater.Internal;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Serialization;
namespace UltimateWater
{
[RequireComponent(typeof(Renderer))]
public class WaterSurfaceOverlayRenderer : MonoBehaviour, ILocalDisplacementRenderer, ILocalDisplacementMaskRenderer, ILocalFoamRenderer, IDynamicWaterEffects
{
[FormerlySerializedAs("displacementAndNormalMaterial")]
[SerializeField]
private Material _DisplacementAndNormalMaterial;
[FormerlySerializedAs("displacementMaskMaterial")]
[SerializeField]
private Material _DisplacementMaskMaterial;
[FormerlySerializedAs("foamMaterial")]
[SerializeField]
private Material _FoamMaterial;
private Renderer _RendererComponent;
public Material DisplacementAndNormalMaterial
{
get
{
return _DisplacementAndNormalMaterial;
}
}
public Material DisplacementMaskMaterial
{
get
{
return _DisplacementMaskMaterial;
}
}
public Material FoamMaterial
{
get
{
return _FoamMaterial;
}
}
public Renderer Renderer
{
get
{
return _RendererComponent;
}
}
public void RenderLocalDisplacement(CommandBuffer commandBuffer, DynamicWaterCameraData overlays)
{
commandBuffer.DrawRenderer(_RendererComponent, _DisplacementAndNormalMaterial);
}
public void RenderLocalMask(CommandBuffer commandBuffer, DynamicWaterCameraData overlays)
{
commandBuffer.DrawRenderer(_RendererComponent, _DisplacementMaskMaterial);
}
public void RenderLocalFoam(CommandBuffer commandBuffer, DynamicWaterCameraData overlays)
{
commandBuffer.DrawRenderer(_RendererComponent, _FoamMaterial);
}
public void Enable()
{
throw new NotImplementedException();
}
public void Disable()
{
throw new NotImplementedException();
}
private void Awake()
{
_RendererComponent = GetComponent<Renderer>();
}
private void OnEnable()
{
if (_DisplacementAndNormalMaterial != null)
{
DynamicWater.AddRenderer((ILocalDisplacementRenderer)this);
}
if (_DisplacementMaskMaterial != null)
{
DynamicWater.AddRenderer((ILocalDisplacementMaskRenderer)this);
}
if (_FoamMaterial != null)
{
DynamicWater.AddRenderer((ILocalFoamRenderer)this);
}
}
private void OnDisable()
{
DynamicWater.RemoveRenderer((ILocalDisplacementRenderer)this);
DynamicWater.RemoveRenderer((ILocalDisplacementMaskRenderer)this);
DynamicWater.RemoveRenderer((ILocalFoamRenderer)this);
}
}
}