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; } }
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; } }