using UnityEngine; using System.ComponentModel; namespace UIWidgets { [System.Serializable] /// /// Tree view item. /// public class TreeViewItem : IObservable, INotifyPropertyChanged { /// /// OnChange event. /// public event OnChange OnChange; /// /// Occurs when a property value changes. /// public event PropertyChangedEventHandler PropertyChanged; /// /// The icon. /// [SerializeField] Sprite icon; /// /// Gets or sets the icon. /// /// The icon. public Sprite Icon { get { return icon; } set { icon = value; Changed("Icon"); } } /// /// The name. /// [SerializeField] string name; /// /// Gets or sets the name. /// /// The name. public string Name { get { return name; } set { name = value; Changed("Name"); } } [System.NonSerialized] string localizedName; /// /// The localized name. /// public string LocalizedName { get { return localizedName; } set { localizedName = value; Changed("LocalizedName"); } } [SerializeField] int _value; /// /// Gets or sets the value. /// /// The value. public int Value { get { return _value; } set { _value = value; Changed("Value"); } } [SerializeField] object tag; /// /// Gets or sets the tag. /// /// The tag. public object Tag { get { return tag; } set { tag = value; Changed("Tag"); } } /// /// Initializes a new instance of the class. /// /// Item name. /// Item icon. public TreeViewItem(string itemName, Sprite itemIcon = null) { name = itemName; icon = itemIcon; } void Changed(string propertyName = "") { if (OnChange!=null) { OnChange(); } if (PropertyChanged!=null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } }