namespace UnityEngine.XR.Content.Rendering
{
///
/// 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.
///
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;
///
/// How the highlight material will be applied to the renderer's material array.
///
public MaterialHighlightMode highlightMode
{
get => m_HighlightMode;
set => m_HighlightMode = value;
}
///
/// Material to use for highlighting. The assigned material will be instantiated and used for highlighting.
///
public Material highlightMaterial
{
get => m_HighlightMaterial;
set => m_HighlightMaterial = value;
}
///
/// See .
///
protected void Awake()
{
if (m_HighlightMaterial == null)
return;
m_InstanceHighlightMaterial = Instantiate(m_HighlightMaterial);
m_HighlightMaterial = m_InstanceHighlightMaterial;
}
///
/// See .
///
protected void OnDestroy()
{
if (m_InstanceHighlightMaterial != null)
Destroy(m_InstanceHighlightMaterial);
}
///
void IMaterialHighlight.Initialize()
{
}
///
void IMaterialHighlight.Deinitialize()
{
}
///
void IMaterialHighlight.OnHighlight()
{
}
///
float IMaterialHighlight.OnUnhighlight() => 0f;
}
}