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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #9
0
 public void InitContext(NodeDependencyLookupContext nodeDependencyLookupContext, AssetRelationsViewerWindow window)
 {
     _viewerWindow = window;
 }