private void CellGUI(Rect cellRect, ReferencesTreeViewItem <T> item, Columns column, ref RowGUIArgs args) { baseIndent = item.depth * DepthIndentation; //if (!item.data.exactReferencesExpanded) if (item.data.referencingEntries == null) { CenterRectUsingSingleLineHeight(ref cellRect); } else { var lines = 1 + (item.data.referencingEntries != null ? item.data.referencingEntries.Length : 0); var cellHeight = lines * RowHeight; if (cellRect.height > cellHeight) { cellRect.y += (cellRect.height - cellHeight) * 0.5f; cellRect.height = cellHeight; } cellRect.y += MultilineCellYOffset; } switch (column) { case Columns.Path: var iconPadding = !Provider.isActive ? 0 : IconPadding; var entryRect = cellRect; var num = GetContentIndent(item) + extraSpaceBeforeIconAndLabel; entryRect.xMin += num; if (item.icon != null) { var iconRect = entryRect; iconRect.width = IconWidth; iconRect.x += iconPadding; iconRect.height = EditorGUIUtility.singleLineHeight; GUI.DrawTexture(iconRect, item.icon, ScaleMode.ScaleToFit); // BASED ON DECOMPILED CODE // AssetsTreeViewGUI: // float num = (!Provider.isActive) ? 0f : 7f; // iconRightPadding = num; // iconLeftPadding = num; // TreeViewGUI: // iconTotalPadding = iconLeftPadding + iconRightPadding entryRect.xMin += // TreeViewGUI: public float k_IconWidth = 16f; IconWidth + // TreeViewGUI: iconTotalPadding iconPadding * 2 + // TreeViewGUI: public float k_SpaceBetweenIconAndText = 2f; 2f; } var eyeButtonRect = entryRect; eyeButtonRect.width = EyeButtonSize; eyeButtonRect.height = EyeButtonSize; eyeButtonRect.x += EyeButtonPadding; if (UIHelpers.IconButton(eyeButtonRect, CSIcons.Show)) { ShowItem(item); } var labelRect = entryRect; labelRect.xMin = eyeButtonRect.xMax + EyeButtonPadding; if (item.data.depth == 0 && !item.data.HasChildren) { GUI.contentColor = CSColors.labelDimmedColor; } DefaultGUI.Label(labelRect, args.label, args.selected, args.focused); GUI.contentColor = Color.white; if (/*item.data.exactReferencesExpanded && */ item.data.referencingEntries != null) { var referencingEntriesCount = item.data.referencingEntries.Length; if (referencingEntriesCount > 0) { var warningIconRect = eyeButtonRect; warningIconRect.width = 16; warningIconRect.height = 16; warningIconRect.x += 4; var entriesNotFound = item.data.referencingEntries.All(e => e.location == Location.NotFound); var boxRect = entryRect; boxRect.yMin += RowHeight - 4f; boxRect.height = referencingEntriesCount * RowHeight - 2f; boxRect.xMin = labelRect.xMin - 2f; GUI.backgroundColor = !entriesNotFound ? CSColors.backgroundGreenTint : CSColors.backgroundRedTint; GUI.Box(boxRect, GUIContent.none); GUI.backgroundColor = Color.white; for (var i = 0; i < referencingEntriesCount; i++) { var entry = item.data.referencingEntries[i]; labelRect.y += RowHeight; eyeButtonRect.y += RowHeight; if (entry.location == Location.NotFound) { warningIconRect.y = eyeButtonRect.y; GUI.DrawTexture(warningIconRect, CSEditorIcons.WarnSmallIcon, ScaleMode.ScaleAndCrop); } else if (entry.location == Location.Invisible) { warningIconRect.y = eyeButtonRect.y; GUI.DrawTexture(warningIconRect, CSEditorIcons.InfoSmallIcon, ScaleMode.ScaleAndCrop); } else if (entry.location == Location.ScriptAsset || entry.location == Location.ScriptableObjectAsset) { //labelRect.xMin = eyeButtonRect.xMax + EyeButtonPadding - eyeButtonRect.width; } else { if (UIHelpers.IconButton(eyeButtonRect, CSIcons.Show)) { ShowItem(item, entry); } } var label = entry.GetLabel(); DefaultGUI.Label(labelRect, label, args.selected, args.focused); } } } break; case Columns.Type: DefaultGUI.Label(cellRect, item.data.assetTypeName, args.selected, args.focused); break; case Columns.Size: DefaultGUI.Label(cellRect, item.data.assetSizeFormatted, args.selected, args.focused); break; case Columns.ReferencesCount: DefaultGUI.Label(cellRect, item.data.ChildrenCount.ToString(), args.selected, args.focused); break; default: throw new ArgumentOutOfRangeException("column", column, null); } }
void CellGUI(Rect cellRect, TreeViewItem <EditorAssetInfo> item, Columns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); //if( item.data.IsSelected != args.selected ) { // item.data.OnSelected(); // item.data.IsSelected = args.selected; //} switch (column) { case Columns.Icon: { if (item.data.Texture != null) { GUI.DrawTexture(cellRect, item.data.Texture, ScaleMode.ScaleToFit); } } break; case Columns.Checker: { GUI.DrawTexture(cellRect, item.data.IsAvailable ? GUIHelper.Textures.CheckMarkOK : GUIHelper.Textures.CheckMaarkNG, ScaleMode.ScaleToFit); } break; case Columns.FileName: { var toggleRect = cellRect; toggleRect.width = kToggleWidth; item.data.IsBuild = EditorGUI.Toggle(toggleRect, item.data.IsBuild); var rect = cellRect; rect.x += 15; rect.width -= 15; DefaultGUI.Label(rect, item.data.Name, args.selected, args.focused); } break; case Columns.AssetBundleName: { DefaultGUI.Label(cellRect, item.data.AssetBundleName, args.selected, args.focused); } break; case Columns.AssetPath: { DefaultGUI.Label(cellRect, item.data.AssetPath, args.selected, args.focused); } break; case Columns.Extension: { DefaultGUI.Label(cellRect, item.data.Extension, args.selected, args.focused); } break; case Columns.Version: { if (showControls) { cellRect.xMin += 5f; item.data.Version = EditorGUI.IntField(cellRect, item.data.Version); } else { DefaultGUI.Label(cellRect, item.data.Version.ToString(), args.selected, args.focused); } } break; case Columns.Size: { DefaultGUI.Label(cellRect, item.data.Size.ToString(), args.selected, args.focused); } break; case Columns.Date: { DefaultGUI.Label(cellRect, item.data.Date, args.selected, args.focused); } break; case Columns.UnityVersion: { DefaultGUI.Label(cellRect, item.data.UnityVersion, args.selected, args.focused); } break; } }
void CellGUI(Rect cellRect, TreeViewItem <MyTreeElement> item, MyColumns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); switch (column) { case MyColumns.Icon1: { GUI.DrawTexture(cellRect, s_TestIcons[GetIcon1Index(item)], ScaleMode.ScaleToFit); } break; case MyColumns.Icon2: { GUI.DrawTexture(cellRect, s_TestIcons[GetIcon2Index(item)], ScaleMode.ScaleToFit); } break; case MyColumns.Name: { // Do toggle Rect toggleRect = cellRect; toggleRect.x += GetContentIndent(item); toggleRect.width = kToggleWidth; if (toggleRect.xMax < cellRect.xMax) { item.data.enabled = EditorGUI.Toggle(toggleRect, item.data.enabled); // hide when outside cell rect } // Default icon and label args.rowRect = cellRect; base.RowGUI(args); } break; case MyColumns.Value1: case MyColumns.Value2: case MyColumns.Value3: { if (item.depth == 1) { cellRect.xMin += 5f; // When showing controls make some extra spacing if (column == MyColumns.Value1) { item.data.floatValue1 = EditorGUI.Slider(cellRect, GUIContent.none, item.data.floatValue1, 0f, 1f); } if (column == MyColumns.Value2) { item.data.material = (Material)EditorGUI.ObjectField(cellRect, GUIContent.none, item.data.material, typeof(Material), false); } if (column == MyColumns.Value3) { item.data.text = GUI.TextField(cellRect, item.data.text); } } else { string value = "Missing"; if (column == MyColumns.Value1) { value = item.data.floatValue1.ToString("f5"); } if (column == MyColumns.Value2) { value = item.data.floatValue2.ToString("f5"); } if (column == MyColumns.Value3) { value = item.data.floatValue3.ToString("f5"); } DefaultGUI.LabelRightAligned(cellRect, value, args.selected, args.focused); } } break; } }
void CellGUI(Rect cellRect, SerializedPropertyItem item, int columnIndex, ref RowGUIArgs args) { Profiler.BeginSample("SerializedPropertyTreeView.CellGUI"); CenterRectUsingSingleLineHeight(ref cellRect); var ltd = item.GetData(); Column column = (Column)this.multiColumnHeader.GetColumn(columnIndex); if (column.drawDelegate == DefaultDelegates.s_DrawName) { // default drawing Profiler.BeginSample("SerializedPropertyTreeView.OnItemGUI.LabelField"); DefaultGUI.Label(cellRect, ltd.name, IsSelected(args.item.id), false); Profiler.EndSample(); } else if (column.drawDelegate != null) { SerializedProperty[] props = ltd.properties; int depcnt = column.dependencyIndices != null ? column.dependencyIndices.Length : 0; for (int i = 0; i < depcnt; i++) { m_ColumnsInternal[columnIndex].dependencyProps[i] = props[column.dependencyIndices[i]]; } // allow to capture tabs if (args.item.id == state.lastClickedID && HasFocus() && columnIndex == multiColumnHeader.state.visibleColumns[multiColumnHeader.state.visibleColumns[0] == 0 ? 1 : 0]) { GUI.SetNextControlName(Styles.focusHelper); } SerializedProperty prop = ltd.properties[columnIndex]; EditorGUI.BeginChangeCheck(); Profiler.BeginSample("SerializedPropertyTreeView.OnItemGUI.drawDelegate"); column.drawDelegate(cellRect, prop, m_ColumnsInternal[columnIndex].dependencyProps); Profiler.EndSample(); if (EditorGUI.EndChangeCheck()) { // if we changed a value in a filtered column we'll have to reload the table m_ChangedId = ((column.filter != null) && column.filter.Active()) ? GUIUtility.keyboardControl : m_ChangedId; // update all selected items if the current row was part of the selection list ltd.Store(); var selIds = GetSelection(); if (selIds.Contains(ltd.objectId)) { IList <TreeViewItem> rows = FindRows(selIds); Undo.RecordObjects(rows.Select(r => ((SerializedPropertyItem)r).GetData().serializedObject.targetObject).ToArray(), "Modify Multiple Properties"); foreach (var r in rows) { if (r.id == args.item.id) { continue; } var data = ((SerializedPropertyItem)r).GetData(); if (!IsEditable(data.serializedObject.targetObject)) { continue; } if (column.copyDelegate != null) { column.copyDelegate(data.properties[columnIndex], prop); } else { DefaultDelegates.s_CopyDefault(data.properties[columnIndex], prop); } data.Store(); } } } Profiler.EndSample(); } }
private void CellGUI(Rect cellRect, ReferencesTreeViewItem <T> item, Columns column, ref RowGUIArgs args) { baseIndent = item.depth * DepthIndentation; CenterRectUsingSingleLineHeight(ref cellRect); switch (column) { case Columns.Path: var iconPadding = !Provider.isActive ? 0 : IconPadding; var entryRect = cellRect; var num = GetContentIndent(item) + extraSpaceBeforeIconAndLabel; entryRect.xMin += num; if (item.icon != null) { var iconRect = entryRect; iconRect.width = IconWidth; iconRect.x += iconPadding; iconRect.height = EditorGUIUtility.singleLineHeight; GUI.DrawTexture(iconRect, item.icon, ScaleMode.ScaleToFit); // BASED ON DECOMPILED CODE // AssetsTreeViewGUI: // float num = (!Provider.isActive) ? 0f : 7f; // iconRightPadding = num; // iconLeftPadding = num; // TreeViewGUI: // iconTotalPadding = iconLeftPadding + iconRightPadding entryRect.xMin += // TreeViewGUI: public float k_IconWidth = 16f; IconWidth + // TreeViewGUI: iconTotalPadding iconPadding * 2 + // TreeViewGUI: public float k_SpaceBetweenIconAndText = 2f; 2f; } Rect lastRect; var eyeButtonRect = entryRect; eyeButtonRect.width = UIHelpers.EyeButtonSize; eyeButtonRect.height = UIHelpers.EyeButtonSize; eyeButtonRect.x += UIHelpers.EyeButtonPadding; lastRect = eyeButtonRect; if (UIHelpers.IconButton(eyeButtonRect, CSIcons.Show)) { ShowItem(item); } if (item.depth == 1 && item.data.isReferenced) { var findButtonRect = entryRect; findButtonRect.width = UIHelpers.EyeButtonSize; findButtonRect.height = UIHelpers.EyeButtonSize; findButtonRect.x += UIHelpers.EyeButtonPadding * 2 + UIHelpers.EyeButtonSize; lastRect = findButtonRect; if (UIHelpers.IconButton(findButtonRect, CSIcons.Find, "Search for references")) { EditorApplication.delayCall += () => ReferencesFinder.FindAssetReferencesFromResults(item.data.assetPath); } } var labelRect = entryRect; labelRect.xMin = lastRect.xMax + UIHelpers.EyeButtonPadding; if (item.data.depth == 0 && !item.data.HasChildren) { GUI.contentColor = CSColors.labelDimmedColor; } DefaultGUI.Label(labelRect, args.label, args.selected, args.focused); GUI.contentColor = Color.white; break; case Columns.Type: DefaultGUI.Label(cellRect, item.data.assetTypeName, args.selected, args.focused); break; case Columns.Size: DefaultGUI.Label(cellRect, item.data.assetSizeFormatted, args.selected, args.focused); break; case Columns.ReferencesCount: if (item.depth == 0) { DefaultGUI.Label(cellRect, item.data.ChildrenCount.ToString(), args.selected, args.focused); } break; default: throw new ArgumentOutOfRangeException("column", column, null); } }
void CellGUI(Rect cellRect, TreeViewItem <AH_TreeviewElement> item, MyColumns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); AH_TreeviewElement element = (AH_TreeviewElement)item.data; switch (column) { case MyColumns.Icon: { if (item.data.AssetType != null) { GUI.DrawTexture(cellRect, AH_TreeviewElement.GetIcon(item.data.AssetType), ScaleMode.ScaleToFit); } } break; case MyColumns.Name: { Rect nameRect = cellRect; nameRect.x += GetContentIndent(item); DefaultGUI.Label(nameRect, item.data.m_Name, args.selected, args.focused); } break; case MyColumns.AssetSize: case MyColumns.FileSize: { string value = ""; if (column == MyColumns.AssetSize && element.AssetSize > 0) { value = element.AssetSizeStringRepresentation; } if (column == MyColumns.FileSize && element.FileSize > 0) { value = element.FileSizeStringRepresentation; } if (element.IsFolder && column == MyColumns.FileSize /*&& !IsExpanded(element.id)*/) { value = "{" + AH_Utils.BytesToString(element.GetFileSizeRecursively(((AH_MultiColumnHeader)multiColumnHeader).ShowMode)) + "}"; DefaultGUI.Label(cellRect, value, args.selected, args.focused); } else { DefaultGUI.LabelRightAligned(cellRect, value, args.selected, args.focused); } } break; case MyColumns.UsedInBuild: { if (item.data.UsedInBuild) { DefaultGUI.LabelRightAligned(cellRect, "\u2713", args.selected, args.focused); } } break; case MyColumns.LevelUsage: { if (item.data.UsedInBuild && item.data.ScenesReferencingAsset != null) { if (item.data.ScenesReferencingAsset.Count > 0) { string cellString = String.Format("Usage: {0}", item.data.ScenesReferencingAsset.Count.ToString()); if (args.selected && args.focused) { if (GUI.Button(cellRect, cellString)) { UnityEngine.Object[] sceneAssets = new UnityEngine.Object[item.data.ScenesReferencingAsset.Count]; string message = ""; for (int i = 0; i < item.data.ScenesReferencingAsset.Count; i++) { message += (item.data.ScenesReferencingAsset[i] + Environment.NewLine); sceneAssets[i] = AssetDatabase.LoadMainAssetAtPath(item.data.ScenesReferencingAsset[i]); } Selection.objects = sceneAssets; EditorUtility.DisplayDialog("Scenes referencing " + item.data.m_Name, message, "OK"); } } else { DefaultGUI.LabelRightAligned(cellRect, cellString, args.selected, args.focused); } } /*else * DefaultGUI.LabelRightAligned(cellRect, "Global", args.selected, args.focused);*/ } } break; } }
void CellGUI(Rect cellRect, TreeViewItem <QuestElement> item, MyColumns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); switch (column) { //case MyColumns.Icon1: // { // //GUI.DrawTexture(cellRect, s_TestIcons[GetIcon1Index(item)], ScaleMode.ScaleToFit); // } // break; //case MyColumns.Icon2: // { // //GUI.DrawTexture(cellRect, s_TestIcons[GetIcon2Index(item)], ScaleMode.ScaleToFit); // } // break; case MyColumns.PrimaryKey: DefaultGUI.Label(cellRect, item.data.Pk.ToString(), args.selected, args.focused); break; case MyColumns.OpenAsset: { Rect buttonRect = cellRect; buttonRect.x += GetContentIndent(item); buttonRect.width = 25; if (GUI.Button(buttonRect, s_TestIcons[0])) { Selection.activeObject = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(item.data.Path); } } break; case MyColumns.Name: { // Do toggle //Rect toggleRect = cellRect; //toggleRect.x += GetContentIndent(item); //toggleRect.width = kToggleWidth; //if (toggleRect.xMax < cellRect.xMax) //item.data.enabled = EditorGUI.Toggle(toggleRect, item.data.enabled); // hide when outside cell rect // Default icon and label //args.rowRect = cellRect; //base.RowGUI(args); EditorGUI.LabelField(cellRect, item.data.name); } break; case MyColumns.Description: DefaultGUI.Label(cellRect, item.data.Description, args.selected, args.focused); break; case MyColumns.Objectives: DefaultGUI.Label(cellRect, item.data.Objectives, args.selected, args.focused); break; case MyColumns.Active: { Rect toggleRect = cellRect; toggleRect.x += GetContentIndent(item); toggleRect.width = kToggleWidth; EditorGUI.Toggle(toggleRect, item.data.Active); } break; case MyColumns.Complete: { Rect toggleRect = cellRect; toggleRect.x += GetContentIndent(item); toggleRect.width = kToggleWidth; EditorGUI.Toggle(toggleRect, item.data.Completed); } break; case MyColumns.Delete: { Rect buttonRect = cellRect; buttonRect.x += GetContentIndent(item); buttonRect.width = 55; if (GUI.Button(buttonRect, "Delete")) { int choice = EditorUtility.DisplayDialogComplex("Delete Quest?", $"Delete both the database entry and local asset OR just the database entry for '{item.data.name}'?", "DB Entry and Asset", "Cancel", "DB Entry Only"); if (choice == 1) { } else { var dbPath = $@"Assets/StreamingAssets/{"quests.db"}"; var connection = new SQLiteConnection(dbPath, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create); connection.Delete <QuestEntry>(item.data.Pk); connection.Close(); if (choice == 0) // delete both { AssetDatabase.DeleteAsset(item.data.Path); } Repaint(); Debug.Log("Deleted"); } } } break; //case MyColumns.Value1: //case MyColumns.Value2: //case MyColumns.Value3: // { // if (showControls) // { // cellRect.xMin += 5f; // When showing controls make some extra spacing // if (column == MyColumns.Value1) // item.data.floatValue1 = EditorGUI.Slider(cellRect, GUIContent.none, item.data.floatValue1, 0f, 1f); // if (column == MyColumns.Value2) // item.data.material = (Material)EditorGUI.ObjectField(cellRect, GUIContent.none, item.data.material, typeof(Material), false); // if (column == MyColumns.Value3) // item.data.text = GUI.TextField(cellRect, item.data.text); // } // else // { // string value = "Missing"; // if (column == MyColumns.Value1) // value = item.data.floatValue1.ToString("f5"); // if (column == MyColumns.Value2) // value = item.data.floatValue2.ToString("f5"); // if (column == MyColumns.Value3) // value = item.data.floatValue3.ToString("f5"); // DefaultGUI.LabelRightAligned(cellRect, value, args.selected, args.focused); // } // } // break; default: throw new ArgumentOutOfRangeException(nameof(column), column, null); } }
void CellGUI(Rect cellRect, TreeViewItem <EditorAssetInfo> item, Columns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); if (item.data.IsSelected != args.selected) { item.data.OnSelected(); item.data.IsSelected = args.selected; } switch (column) { case Columns.Icon: { if (item.data.Texture != null) { GUI.DrawTexture(cellRect, item.data.Texture, ScaleMode.ScaleToFit); } } break; case Columns.Checker: { GUI.DrawTexture(cellRect, item.data.IsAvailable ? GUIHelper.Textures.CheckMarkOK : GUIHelper.Textures.CheckMaarkNG, ScaleMode.ScaleToFit); } break; case Columns.FileName: { var toggleRect = cellRect; toggleRect.x += GetContentIndent(item); toggleRect.width = kToggleWidth; var build = EditorGUI.Toggle(toggleRect, item.data.IsBuild); // hide when outside cell rect if (item.data.IsBuild != build) { UndoHelper.BuilderDataUndo("Check asset"); setChildren(item, build); } //if( item.data.IsDirectoryLabel ) // SetExpanded( item.id, false ); var rect = cellRect; rect.x += GetContentIndent(item) + 15f; rect.width -= (GetContentIndent(item) + 15f); EditorGUI.BeginDisabledGroup(!item.data.IsBuild); DefaultGUI.Label(rect, item.data.Name, args.selected, args.focused); EditorGUI.EndDisabledGroup(); } break; case Columns.Extension: { EditorGUI.BeginDisabledGroup(!item.data.IsBuild); DefaultGUI.Label(cellRect, item.data.Extension, args.selected, args.focused); EditorGUI.EndDisabledGroup(); } break; case Columns.AssetBundleName: { if (item.data.IsBuild) { var assetBundleName = Config.GetAssetLabel(item.data, BuildRootPath); item.data.AssetBundleName = assetBundleName; } else { if (item.parent != null) { var parent = getAssetInfo(item.parent); item.data.AssetBundleName = parent.data.AssetBundleName; } } if (!item.data.IsAvailable) { break; } EditorGUI.BeginDisabledGroup(!item.data.IsBuild); DefaultGUI.Label(cellRect, item.data.AssetBundleName, args.selected, args.focused); EditorGUI.EndDisabledGroup(); } break; case Columns.AssetPath: { EditorGUI.BeginDisabledGroup(!item.data.IsBuild); DefaultGUI.Label(cellRect, item.data.AssetPath, args.selected, args.focused); EditorGUI.EndDisabledGroup(); } break; case Columns.Guid: { EditorGUI.BeginDisabledGroup(!item.data.IsBuild); DefaultGUI.Label(cellRect, item.data.Guid, args.selected, args.focused); EditorGUI.EndDisabledGroup(); } break; case Columns.Version: { EditorGUI.BeginDisabledGroup(!item.data.IsBuild); if (Config.IsUseAssetBundleList) { item.data.Version = item.data.IsBuild ? item.data.OldAssetVersion + 1 : item.data.OldAssetVersion; var version = item.data.Version > 0 ? item.data.Version : 1; DefaultGUI.Label(cellRect, version.ToString(), args.selected, args.focused); var iconRect = cellRect; iconRect.x += 13; iconRect.width = 30; if (item.data.IsBuild) { GUI.DrawTexture(iconRect, item.data.OldAssetVersion > 0 ? GUIHelper.Textures.VersionUpdate : GUIHelper.Textures.VersionNew, ScaleMode.ScaleToFit); } } EditorGUI.EndDisabledGroup(); } break; case Columns.UnityVersion: { EditorGUI.BeginDisabledGroup(!item.data.IsBuild); if (Config.IsUseAssetBundleList) { DefaultGUI.Label(cellRect, item.data.OldUnityVersion, args.selected, args.focused); } else { DefaultGUI.Label(cellRect, item.data.UnityVersion, args.selected, args.focused); } EditorGUI.EndDisabledGroup(); } break; } }
protected override void RowGUI(RowGUIArgs args) { var wi = WatchRegistry.Watches[args.item.id]; string value = null; if (wi.StringAccessor == null) { wi.StringAccessor = WatchRegistry.CreateStringAccessor(wi.Watch, wi.Watch); } if (wi.StringAccessor != null) { if (!wi.StringAccessor.TryGet(out value)) { value = "<?>"; } } else { value = $"<No string accessor for type '{wi.Watch.GetValueType().Name}'>"; } for (int iVisCol = 0; iVisCol != args.GetNumVisibleColumns(); ++iVisCol) { var i = args.GetColumn(iVisCol); var rect = args.GetCellRect(iVisCol); switch (i) { case kColumnIndexName: DefaultGUI.Label(rect, wi.Watch.GetName(), args.selected, args.focused); break; case kColumnIndexValue: DefaultGUI.Label(rect, value, args.selected, args.focused); break; case kColumnIndexType: DefaultGUI.Label(rect, wi.Watch.GetValueType().Name, args.selected, args.focused); break; case kColumnIndexContext: DefaultGUI.Label(rect, wi.Watch.GetContextName(), args.selected, args.focused); break; case kColumnIndexVisualization: if (WatchRegistry.WatchTypeRegistry.TryGetTypeInfo(wi.Watch.GetValueType(), out var ti)) { GUILayout.BeginArea(rect); GUILayout.BeginHorizontal(); foreach (var nameVisFact in ti.Visualizers) { bool hasVis = wi.TryGetWatchVisualizer(nameVisFact.Key, out var vis); if (GUILayout.Toggle(hasVis, new GUIContent(nameVisFact.Key, nameVisFact.Value.GetDescription()), "Button")) { if (!hasVis) { wi.TryAddVisualizer(nameVisFact.Value, wi.Watch, out vis); } } else { if (hasVis) { wi.TryRemoveWatchVisualizer(vis); } } } GUILayout.EndHorizontal(); GUILayout.EndArea(); } break; } } }
void CellGUI(Rect cellRect, TreeViewItem <VariablesElement> item, MyColumns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); switch (column) { case MyColumns.Id: { if (editing) { EditorGUI.BeginChangeCheck(); _variableID = EditorGUI.DelayedTextField(cellRect, item.data.variable.name).Trim().Replace(" ", "").Replace("_", ""); if (EditorGUI.EndChangeCheck()) { AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(item.data.variable), _variableID); } } else { DefaultGUI.Label(cellRect, item.data.variable.name, args.selected, args.focused); } } break; case MyColumns.Group: { if (editing) { EditorGUI.BeginChangeCheck(); _variableGroup = EditorGUI.DelayedTextField(cellRect, item.data.variable.group).Trim().Replace(" ", "").Replace("_", ""); if (EditorGUI.EndChangeCheck()) { item.data.variable.group = _variableGroup; } } else { DefaultGUI.Label(cellRect, item.data.variable.group, args.selected, args.focused); } } break; case MyColumns.Type: if (editing) { EditorGUI.BeginChangeCheck(); _variableType = (Variable.VariableType)EditorGUI.EnumPopup(cellRect, item.data.variable.Type); if (EditorGUI.EndChangeCheck()) { item.data.variable.Type = _variableType; EditorUtility.SetDirty(item.data.variable); } } else { DefaultGUI.Label(cellRect, item.data.variable.Type.ToString(), args.selected, args.focused); } break; case MyColumns.Default: { if (editing) { EditorGUI.BeginChangeCheck(); _serializedVariable = VariableEditor.DrawSerializedVariable(cellRect, item.data.variable.Type, item.data.variable.DefaultValue); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(item.data.variable); } } else { DefaultGUI.Label(cellRect, item.data.variable.DefaultValue.ToString(), args.selected, args.focused); } } break; case MyColumns.InGame: { if (editing) { EditorGUI.BeginChangeCheck(); _serializedVariable = VariableEditor.DrawSerializedVariable(cellRect, item.data.variable.Type, item.data.variable.InGameValue); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(item.data.variable); } } else { DefaultGUI.Label(cellRect, item.data.variable.InGameValue.ToString(), args.selected, args.focused); } } break; case MyColumns.Description: { if (editing) { EditorGUI.BeginChangeCheck(); _description = EditorGUI.DelayedTextField(cellRect, item.data.variable.description); if (EditorGUI.EndChangeCheck()) { item.data.variable.description = _description; } } else { DefaultGUI.Label(cellRect, item.data.variable.description, args.selected, args.focused); } } break; } }