112 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|