using UnityEngine; using System.Collections; namespace UIWidgets { /// /// TreeView component. /// [AddComponentMenu("UI/UIWidgets/TreeViewComponent")] public class TreeViewComponent : TreeViewComponentBase { TreeViewItem item; /// /// Gets or sets the item. /// /// The item. public TreeViewItem Item { get { return item; } set { if (item!=null) { item.OnChange -= UpdateView; } item = value; if (item!=null) { item.OnChange += UpdateView; } UpdateView(); } } /// /// Sets the data. /// /// Node. /// Depth. public override void SetData(TreeNode newNode, int depth) { Node = newNode; base.SetData(Node, depth); Item = (Node==null) ? null : Node.Item; } /// /// Updates the view. /// protected virtual void UpdateView() { if ((Icon==null) || (Text==null)) { return ; } if (Item==null) { Icon.sprite = null; Text.text = string.Empty; } else { Icon.sprite = Item.Icon; Text.text = Item.LocalizedName ?? Item.Name; } if (SetNativeSize) { Icon.SetNativeSize(); } //set transparent color if no icon Icon.color = (Icon.sprite==null) ? Color.clear : Color.black; } /// /// Called when item moved to cache, you can use it free used resources. /// public override void MovedToCache() { if (Icon!=null) { Icon.sprite = null; } } /// /// This function is called when the MonoBehaviour will be destroyed. /// protected override void OnDestroy() { if (item!=null) { item.OnChange -= UpdateView; } base.OnDestroy(); } } }