|
|
using UnityEditor;using UnityEditor.IMGUI.Controls;using UnityEngine;
namespace UnityEditorInternal{ class BindingTreeViewGUI : TreeViewGUI { static readonly float s_RowRightOffset = 10; static readonly float s_ColorIndicatorTopMargin = 3; static readonly Color s_KeyColorForNonCurves = new Color(0.7f, 0.7f, 0.7f, 0.5f); static readonly Color s_ChildrenCurveLabelColor = new Color(1.0f, 1.0f, 1.0f, 0.7f);
public BindingTreeViewGUI(TreeViewController treeView) : base(treeView, true) { k_IconWidth = 13.0f; }
public override void OnRowGUI(Rect rowRect, TreeViewItem node, int row, bool selected, bool focused) { Color originalColor = GUI.color; GUI.color = node.parent == null || node.parent.id == BindingTreeViewDataSource.RootID || node.parent.id == BindingTreeViewDataSource.GroupID ? Color.white : s_ChildrenCurveLabelColor;
base.OnRowGUI(rowRect, node, row, selected, focused);
GUI.color = originalColor; DoCurveColorIndicator(rowRect, node as CurveTreeViewNode); }
protected override bool IsRenaming(int id) { return false; }
public override bool BeginRename(TreeViewItem item, float delay) { return false; }
void DoCurveColorIndicator(Rect rect, CurveTreeViewNode node) { if (node == null) return;
if (Event.current.type != EventType.Repaint) return;
Color originalColor = GUI.color;
if (node.bindings.Length == 1 && !node.bindings[0].isPPtrCurve) GUI.color = CurveUtility.GetPropertyColor(node.bindings[0].propertyName); else GUI.color = s_KeyColorForNonCurves;
Texture icon = CurveUtility.GetIconCurve(); rect = new Rect(rect.xMax - s_RowRightOffset - (icon.width * 0.5f) - 5, rect.yMin + s_ColorIndicatorTopMargin, icon.width, icon.height);
GUI.DrawTexture(rect, icon, ScaleMode.ScaleToFit, true, 1);
GUI.color = originalColor; }
protected override Texture GetIconForItem(TreeViewItem item) { var node = item as CurveTreeViewNode; if (node == null) return null;
if (node.bindings == null || node.bindings.Length == 0) return null;
return AssetPreview.GetMiniTypeThumbnail(node.bindings[0].type); } }}
|