76 lines
2.3 KiB
C#
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;
|
|
}
|
|
}
|