2023-05-08 15:56:10 +03:00

76 lines
2.3 KiB
C#

namespace UnityEngine.XR.Content.Rendering
{
/// <summary>
/// Used to change the materials array of an object when highlighted. Can either add the highlight material to the
/// renderers materials array or replace the renderers materials with the highlight material.
/// </summary>
public class MaterialHighlight : MonoBehaviour, IMaterialHighlight
{
[SerializeField]
[Tooltip("How the highlight material will be applied to the renderer's material array.")]
MaterialHighlightMode m_HighlightMode = MaterialHighlightMode.Replace;
[SerializeField, Tooltip("Material to use for highlighting. The assigned material will be instantiated and used for highlighting.")]
Material m_HighlightMaterial;
Material m_InstanceHighlightMaterial;
/// <summary>
/// How the highlight material will be applied to the renderer's material array.
/// </summary>
public MaterialHighlightMode highlightMode
{
get => m_HighlightMode;
set => m_HighlightMode = value;
}
/// <summary>
/// Material to use for highlighting. The assigned material will be instantiated and used for highlighting.
/// </summary>
public Material highlightMaterial
{
get => m_HighlightMaterial;
set => m_HighlightMaterial = value;
}
/// <summary>
/// See <see cref="MonoBehaviour"/>.
/// </summary>
protected void Awake()
{
if (m_HighlightMaterial == null)
return;
m_InstanceHighlightMaterial = Instantiate(m_HighlightMaterial);
m_HighlightMaterial = m_InstanceHighlightMaterial;
}
/// <summary>
/// See <see cref="MonoBehaviour"/>.
/// </summary>
protected void OnDestroy()
{
if (m_InstanceHighlightMaterial != null)
Destroy(m_InstanceHighlightMaterial);
}
/// <inheritdoc />
void IMaterialHighlight.Initialize()
{
}
/// <inheritdoc />
void IMaterialHighlight.Deinitialize()
{
}
/// <inheritdoc />
void IMaterialHighlight.OnHighlight()
{
}
/// <inheritdoc />
float IMaterialHighlight.OnUnhighlight() => 0f;
}
}