// Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved.
using UnityEngine;
using UnityEngine.Assertions;
namespace Meta.XR.Movement.Samples
{
///
/// Allows usage of a toggle icon.
///
public class MovementToggleIcon : MonoBehaviour
{
///
/// Renderer that indicates toggle state.
///
[SerializeField]
protected Renderer _toggleRenderer;
///
/// Select color.
///
[SerializeField]
protected Color _selectColor;
///
/// Deselected color.
///
[SerializeField]
protected Color _deselectColor;
private bool _selectState = false;
private Material _toggleMaterial;
private int _colorId;
private void Awake()
{
Assert.IsNotNull(_toggleRenderer);
_colorId = Shader.PropertyToID("_Color");
_toggleMaterial = _toggleRenderer.material;
_toggleMaterial.SetColor(_colorId, _deselectColor);
}
private void OnDestroy()
{
if (_toggleMaterial != null)
{
Destroy(_toggleMaterial);
}
}
///
/// Toggles the select icon state.
///
public void ToggleSelectIcon()
{
_selectState = !_selectState;
_toggleMaterial.SetColor(_colorId, _selectState ? _selectColor : _deselectColor);
}
public void DeselectIcon()
{
_selectState = false;
_toggleMaterial.SetColor(_colorId, _selectState ? _selectColor : _deselectColor);
}
}
}