public void InitContext(NodeDependencyLookupContext context, AssetRelationsViewerWindow viewerWindow) { _viewerWindow = viewerWindow; HashSet <string> nodes = new HashSet <string>(); foreach (KeyValuePair <string, CreatedDependencyCache> pair in context.CreatedCaches) { List <IResolvedNode> resolvedNodes = new List <IResolvedNode>(); pair.Value.Cache.AddExistingNodes(resolvedNodes); foreach (IResolvedNode node in resolvedNodes) { if (node.Type == HandledType) { nodes.Add(node.Id); } } } _nodes = new HashSet <string>(nodes); BuildHashToGameObjectMapping(); Selection.selectionChanged += SelectionChanged; }
public static AssetRelationsViewerWindow ShowWindow() { AssetRelationsViewerWindow window = GetWindow <AssetRelationsViewerWindow>(false, OwnName); window.LoadDependencyCache(); return(window); }
public static void DrawPathNodeRec(float px, float py, PathNode node, ITypeColorProvider colorProvider) { DrawPathSegment(node.PosX + px, node.PosY + py, node); foreach (PathNode child in node.Children) { DrawPathNodeRec(px, py, child, colorProvider); AssetRelationsViewerWindow.DrawConnection(node.PosX + px + node.TextLength, node.PosY + py, child.PosX + px, child.PosY + py, colorProvider.GetConnectionColorForType(child.DependencyType)); } }
private void DrawPathNodeConnections(PathNode rootNode, HashSet <PathNode> targetNodes, ITypeColorProvider colorProvider, float yOffset) { foreach (PathNode tn in targetNodes) { Color color = colorProvider.GetConnectionColorForType(tn.DependencyType); int offset = -32; int endX = PosX + Bounds.Width; AssetRelationsViewerWindow.DrawConnection(tn.PosX + tn.Width + PosX - 16, tn.PosY + PosY + yOffset, endX + offset, tn.PosY + PosY + yOffset, color); AssetRelationsViewerWindow.DrawConnection(endX + offset, tn.PosY + PosY + yOffset, endX, rootNode.PosY + PosY + yOffset, color); } }
public void InitContext(NodeDependencyLookupContext nodeDependencyLookupContext, AssetRelationsViewerWindow window) { _viewerWindow = window; _filteredNodes = CreateFilter(_filterString); if (_explorerSyncModePref.GetValue()) { RegisterOnSelectionChanged(); } else { UnregisterOnSelectionChanged(); } }
private void DisplayFilterOptions() { EditorGUILayout.BeginVertical(); Object newSelectedAsset = EditorGUILayout.ObjectField(_selectedAsset, typeof(Object), false); if (newSelectedAsset != _selectedAsset) { string fileId = NodeDependencyLookupUtility.GetAssetIdForAsset(newSelectedAsset); _viewerWindow.ChangeSelection(fileId, GetHandledType()); _selectedAsset = newSelectedAsset; } float origWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 50; _filterString.DirtyOnChange(EditorGUILayout.TextField("Filter:", _filterString, GUILayout.MinWidth(200))); EditorGUIUtility.labelWidth = origWidth; if (GUILayout.Button("Apply")) { _filteredNodes = CreateFilter(_filterString); _viewerWindow.InvalidateNodeStructure(); } AssetRelationsViewerWindow.TogglePref(_explorerSyncModePref, "Sync to explorer:", b => { if (b) { RegisterOnSelectionChanged(); } else { UnregisterOnSelectionChanged(); } }); EditorGUILayout.EndVertical(); }
private static void ShowWindowForAssetInternal() { AssetRelationsViewerWindow window = ShowWindow(); window.OnAssetSelectionChanged(); }
public override void Draw(int depth, RelationType relationType, ITypeColorProvider colorProvider, ISelectionChanger selectionChanger, NodeDisplayData displayData, ViewAreaData viewAreaData) { Vector2 position = GetPosition(viewAreaData); Color rectColor = (depth == 0) ? ARVStyles.NodeBackGroundColorOwn : ARVStyles.NodeBackGroundColor; bool isMissing = NodeData.IsMissing; if (NodeData.IsEditorAsset) { rectColor.b += 0.05f; } if (isMissing) { rectColor = new Color(0.8f, 0.07f, 0.02f, 1.0f); } int assetPreviewSize = displayData.AssetPreviewSize; EditorGUI.DrawRect(new Rect(position.x + assetPreviewSize, position.y, displayData.NodeWidth, 16), rectColor); if (NodeData.IsPackedToApp && displayData.HighlightPackagedAssets) { EditorGUI.DrawRect(new Rect(position.x + assetPreviewSize, position.y + 16, displayData.NodeWidth, 1), ARVStyles.PackageToAppColor); } DrawPreviewTexture(position.x, position.y, displayData); GUIStyle style = new GUIStyle(); Color textColor = Color.white; if (depth > 0) { string typeId = GetRelations(AssetRelationsViewerWindow.InvertRelationType(relationType))[0].Datas[0].Type; // TODO move textColor = colorProvider.GetConnectionColorForType(typeId); } textColor *= ARVStyles.TextColorMod; style.normal.textColor = textColor; style.clipping = TextClipping.Clip; string name = isMissing ? "Missing!!!" : NodeData.Name; GUI.Label(new Rect(position.x + assetPreviewSize, position.y, displayData.NodeWidth - 32, assetPreviewSize), name, style); if (displayData.ShowAdditionalInformation) { string text = string.Format("Size: {0}kb | TreeSize: {1}kb ", NodeData.OwnSize, NodeData.HierarchySize); GUI.Label(new Rect(position.x + assetPreviewSize, position.y + 16, 200, 16), text); } DrawIsFilteredOverlay(position, displayData); if (GUI.Button(new Rect(position.x + displayData.NodeWidth + assetPreviewSize - 16, position.y, 16, 16), ">")) { selectionChanger.ChangeSelection(NodeData.Id, NodeData.Type); } if (GUI.Button(new Rect(position.x + displayData.NodeWidth + assetPreviewSize - 32, position.y, 16, 16), "s")) { NodeData.TypeHandler.SelectInEditor(NodeData.Id); } }
public void InitContext(NodeDependencyLookupContext nodeDependencyLookupContext, AssetRelationsViewerWindow window) { _viewerWindow = window; }