using System;
using Unity.Mathematics;
using System.Collections.Generic;
using UnityEditor;
namespace UnityEngine.Rendering.HighDefinition
{
///
/// Water excluder component.
///
[DisallowMultipleComponent]
[AddComponentMenu("")]
[HDRPHelpURL("WaterSystem-waterexcluder")]
[ExecuteAlways]
public partial class WaterExcluder : MonoBehaviour
{
// Mesh that shall be used to exclude water
[SerializeField]
internal Mesh m_InternalMesh = null;
[SerializeField]
internal GameObject m_ExclusionRenderer = null;
///
/// Function that sets the mesh used to exclude water surfaces from the final frame.
///
/// Defines the mesh that will be used to operate the water exclusion.
public void SetExclusionMesh(Mesh targetMesh)
{
m_InternalMesh = targetMesh;
if (m_ExclusionRenderer != null)
{
if (m_ExclusionRenderer.TryGetComponent(out var filter))
filter.sharedMesh = targetMesh;
}
}
#region Migration
enum Version
{
Initial,
RayTracingExclusion,
Count = RayTracingExclusion
}
[SerializeField]
Version version = Version.Initial;
void Awake()
{
if (version == Version.Count)
return;
if (version == Version.Initial)
{
if (m_ExclusionRenderer != null)
m_ExclusionRenderer.GetComponent().rayTracingMode = UnityEngine.Experimental.Rendering.RayTracingMode.Off;
version++;
}
}
#endregion
}
}