private void CellGUI(Rect cellRect, AssetProcessEventListTreeItem item, int column, ref RowGUIArgs args) { Color oldColor = GUI.color; CenterRectUsingSingleLineHeight(ref cellRect); var assetGuid = item.Event.AssetGuid; var assetPath = AssetDatabase.GUIDToAssetPath(assetGuid); var isAssetAvailable = string.IsNullOrEmpty(assetPath); var graphGuid = item.Event.GraphGuid; var graphPath = AssetDatabase.GUIDToAssetPath(graphGuid); var hasGraph = !string.IsNullOrEmpty(graphPath); var isError = item.Event.Kind == AssetProcessEvent.EventKind.Error; switch (column) { case 0://Error? { var iconRect = new Rect(cellRect.x, cellRect.y - 6, 32, 32); GUI.DrawTexture(iconRect, ((isError)? m_errorIcon:m_infoIcon)); } break; case 1://Asset { Texture2D icon = null; if (!isAssetAvailable) { icon = AssetDatabase.GetCachedIcon(assetPath) as Texture2D; } var iconRect = new Rect(cellRect.x + 1, cellRect.y + 1, cellRect.height - 2, cellRect.height - 2); if (icon != null) { GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit); } DefaultGUI.Label( new Rect(cellRect.x + iconRect.width + 4, cellRect.y, cellRect.width - iconRect.width, cellRect.height), (!isAssetAvailable)? Path.GetFileName(assetPath) : $"{item.Event.AssetName} (Removed)", args.selected, args.focused); } break; case 2://Graph if (hasGraph) { DefaultGUI.Label(cellRect, $"{Path.GetFileNameWithoutExtension(graphPath)}.{item.Event.NodeName}", args.selected, args.focused); } break; } GUI.color = oldColor; }
protected override TreeViewItem BuildRoot() { var root = new AssetProcessEventListTreeItem(); var r = AssetProcessEventRecord.GetRecord(); if (r != null && r.Events != null) { foreach (var e in r.Events) { root.AddChild(new AssetProcessEventListTreeItem(e)); } } return(root); }