Files
XRLib/Assets/Scripts/UVC/UI/ToolBar/ToolbarToggleButton.cs
2025-06-13 17:10:58 +09:00

39 lines
1.3 KiB
C#

using System;
namespace UVC.UI.ToolBar
{
/// <summary>
/// 클릭할 때마다 선택/해제 상태가 변경되는 토글 버튼입니다.
/// </summary>
public class ToolbarToggleButton : ToolbarButtonBase
{
public event Action<bool> OnToggleStateChanged; // IsSelected 변경 시 IsSelected 값을 전달하는 이벤트
private bool _isSelected;
public bool IsSelected
{
get => _isSelected;
set
{
if (_isSelected != value)
{
_isSelected = value;
OnToggleStateChanged?.Invoke(_isSelected); // IsSelected 값과 함께 이벤트 발생
NotifyStateChanged(); // 일반 상태 변경 이벤트도 발생
}
}
}
public Action<bool> OnToggle { get; set; }
public override void ExecuteClick()
{
if (IsEnabled)
{
IsSelected = !IsSelected; // IsSelected의 setter가 OnStateChanged를 호출
OnClick?.Invoke(); // OnClick은 상태 변경과 별개로 클릭 시 항상 호출되도록 할 수 있음
OnToggle?.Invoke(IsSelected); // 기존 OnToggle 로직 유지
}
}
}
}