using RosettaUI.UIToolkit.Builder;
using RosettaUI.UndoSystem;
using UnityEngine;
using UnityEngine.UIElements;
namespace RosettaUI.UIToolkit.UndoSystem
{
///
/// Undo helper class for BaseField
///
public static class UndoUIToolkit
{
public static void RecordBaseField(string label, BaseField field, TValue oldValue, TValue newValue)
{
// 対応するFieldBaseElementがあればそちらでUndoを記録する
var element = UIToolkitBuilder.Instance.GetElement(field);
if (element is FieldBaseElement fieldElement)
{
Undo.RecordFieldBaseElement(fieldElement, oldValue, newValue);
return;
}
// 無い場合は独自でUndoを記録する
Undo.RecordValueChange(label, oldValue, newValue, value => field.value = value);
}
}
}