// 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); } } }