using System; using System.Collections.Generic; using Sirenix.OdinInspector; using Sirenix.Serialization; namespace Data { [Serializable] public class AttributeData { [OdinSerialize] public T Value { get; private set; } public event Action OnChanged; public void Set(T value) { if (!EqualityComparer.Default.Equals(Value, value)) { Value = value; OnChanged?.Invoke(Value); } } public void Modify(Func modifier) { Set(modifier(Value)); } } }