Exemple #1
0
        public void Initialize(string assetGuid)
        {
            try
            {
                m_ColorSpace = PlayerSettings.colorSpace;

                var asset = AssetDatabase.LoadAssetAtPath <Object>(AssetDatabase.GUIDToAssetPath(assetGuid));
                if (asset == null)
                {
                    return;
                }

                if (!EditorUtility.IsPersistent(asset))
                {
                    return;
                }

                if (selectedGuid == assetGuid)
                {
                    return;
                }

                var  path      = AssetDatabase.GetAssetPath(asset);
                var  extension = Path.GetExtension(path);
                Type graphType;
                switch (extension)
                {
                case ".ShaderGraph":
                    graphType = typeof(MaterialGraph);
                    break;

                case ".ShaderSubGraph":
                    graphType = typeof(SubGraph);
                    break;

                default:
                    return;
                }

                selectedGuid = assetGuid;

                var textGraph = File.ReadAllText(path, Encoding.UTF8);
                graphObject           = CreateInstance <GraphObject>();
                graphObject.hideFlags = HideFlags.HideAndDontSave;
                graphObject.graph     = JsonUtility.FromJson(textGraph, graphType) as IGraph;
                graphObject.graph.OnEnable();
                graphObject.graph.ValidateGraph();

                graphEditorView = new GraphEditorView(this, m_GraphObject.graph as AbstractMaterialGraph, asset.name)
                {
                    persistenceKey = selectedGuid
                };
                graphEditorView.RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);

                titleContent = new GUIContent(asset.name);

                Repaint();
            }
            catch (Exception)
            {
                m_HasError        = true;
                m_GraphEditorView = null;
                graphObject       = null;
                throw;
            }
        }
Exemple #2
0
        public void Initialize(string assetGuid)
        {
            try
            {
                m_ColorSpace          = PlayerSettings.colorSpace;
                m_RenderPipelineAsset = GraphicsSettings.renderPipelineAsset;

                var asset = AssetDatabase.LoadAssetAtPath <Object>(AssetDatabase.GUIDToAssetPath(assetGuid));
                if (asset == null)
                {
                    return;
                }

                if (!EditorUtility.IsPersistent(asset))
                {
                    return;
                }

                if (selectedGuid == assetGuid)
                {
                    return;
                }

                var path      = AssetDatabase.GetAssetPath(asset);
                var extension = Path.GetExtension(path);
                if (extension == null)
                {
                    return;
                }
                // Path.GetExtension returns the extension prefixed with ".", so we remove it. We force lower case such that
                // the comparison will be case-insensitive.
                extension = extension.Substring(1).ToLowerInvariant();
                Type graphType;
                switch (extension)
                {
                case ShaderGraphImporter.Extension:
                    graphType = typeof(MaterialGraph);
                    break;

                case ShaderSubGraphImporter.Extension:
                    graphType = typeof(SubGraph);
                    break;

                default:
                    return;
                }

                selectedGuid = assetGuid;

                var textGraph = File.ReadAllText(path, Encoding.UTF8);
                graphObject           = CreateInstance <GraphObject>();
                graphObject.hideFlags = HideFlags.HideAndDontSave;
                graphObject.graph     = JsonUtility.FromJson(textGraph, graphType) as IGraph;
                graphObject.graph.OnEnable();
                graphObject.graph.ValidateGraph();

                graphEditorView = new GraphEditorView(this, m_GraphObject.graph as AbstractMaterialGraph)
                {
                    persistenceKey = selectedGuid,
                    assetName      = asset.name.Split('/').Last()
                };
                m_FrameAllAfterLayout = true;
                graphEditorView.RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);

                titleContent = new GUIContent(asset.name.Split('/').Last());

                Repaint();
            }
            catch (Exception)
            {
                m_HasError        = true;
                m_GraphEditorView = null;
                graphObject       = null;
                throw;
            }
        }