浏览代码

Remove GraphEditorPresenter

/main
Peter Bay Bastian 7 年前
当前提交
3930a641
共有 4 个文件被更改,包括 93 次插入160 次删除
  1. 66
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/AbstractMaterialGraphEditWindow.cs
  2. 116
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/GraphEditorView.cs
  3. 68
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/GraphEditorPresenter.cs
  4. 3
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/GraphEditorPresenter.cs.meta

66
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/AbstractMaterialGraphEditWindow.cs


{
if (m_GraphEditorView != null)
{
if (m_GraphEditorView.presenter != null)
m_GraphEditorView.presenter.Dispose();
rootVisualContainer.Remove(m_GraphEditorView);
if (m_GraphEditorView != null)
{
m_GraphEditorView.onUpdateAssetClick += UpdateAsset;
m_GraphEditorView.onConvertToSubgraphClick += ToSubGraph;
m_GraphEditorView.onShowInProjectClick += PingAsset;
m_GraphEditorView.RegisterCallback<PostLayoutEvent>(OnPostLayout);
rootVisualContainer.Add(graphEditorView);
}
}
}

void Update()
{
if (graphEditorView == null || graphEditorView.graphPresenter == null)
graphEditorView = new GraphEditorView(inMemoryAsset, this, selected.name);
{
if (graphEditorView.presenter == null)
CreatePresenter();
if (graphEditorView.presenter != null)
graphEditorView.presenter.UpdatePreviews();
}
}
void OnEnable()
{
graphEditorView = new GraphEditorView();
graphEditorView.onUpdateAssetClick += UpdateAsset;
graphEditorView.onConvertToSubgraphClick += ToSubGraph;
graphEditorView.onShowInProjectClick += PingAsset;
rootVisualContainer.Add(graphEditorView);
graphEditorView.previewSystem.Update();
rootVisualContainer.Clear();
graphEditorView = null;
}

void OnGUI()
{
var presenter = graphEditorView.presenter;
var presenter = graphEditorView.graphPresenter;
e.commandName == "Copy" && presenter.graphPresenter.canCopy
|| e.commandName == "Paste" && presenter.graphPresenter.canPaste
|| e.commandName == "Duplicate" && presenter.graphPresenter.canDuplicate
|| e.commandName == "Cut" && presenter.graphPresenter.canCut
|| (e.commandName == "Delete" || e.commandName == "SoftDelete") && presenter.graphPresenter.canDelete))
e.commandName == "Copy" && presenter.canCopy
|| e.commandName == "Paste" && presenter.canPaste
|| e.commandName == "Duplicate" && presenter.canDuplicate
|| e.commandName == "Cut" && presenter.canCut
|| (e.commandName == "Delete" || e.commandName == "SoftDelete") && presenter.canDelete))
{
e.Use();
}

if (e.commandName == "Copy")
presenter.graphPresenter.Copy();
presenter.Copy();
presenter.graphPresenter.Paste();
presenter.Paste();
presenter.graphPresenter.Duplicate();
presenter.Duplicate();
presenter.graphPresenter.Cut();
presenter.Cut();
presenter.graphPresenter.Delete();
presenter.Delete();
}
if (e.type == EventType.KeyDown)

if (path.Length == 0)
return;
var graphPresenter = graphEditorView.presenter.graphPresenter;
var graphPresenter = graphEditorView.graphPresenter;
var selected = graphPresenter.elements.Where(e => e.selected);
var filtered = new List<GraphElementPresenter>();

inMemoryAsset.OnEnable();
inMemoryAsset.ValidateGraph();
CreatePresenter();
graphEditorView = new GraphEditorView(inMemoryAsset, this, selected.name);
}
void CreatePresenter()
{
if (graphEditorView.presenter != null)
graphEditorView.presenter.Dispose();
var presenter = CreateInstance<GraphEditorPresenter>();
presenter.Initialize(inMemoryAsset, this, selected.name);
graphEditorView.presenter = presenter;
graphEditorView.RegisterCallback<PostLayoutEvent>(OnPostLayout);
}
void OnPostLayout(PostLayoutEvent evt)

116
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/GraphEditorView.cs


using UnityEditor.MaterialGraph.Drawing.Inspector;
using UnityEngine;
using UnityEngine.Experimental.UIElements;
using UnityEngine.MaterialGraph;
public class GraphEditorView : DataWatchContainer, IDisposable
public class GraphEditorView : VisualElement, IDisposable
ToolbarView m_ToolbarView;
ToolbarButtonView m_TimeButton;
PreviewSystem m_PreviewSystem;
[SerializeField]
MaterialGraphPresenter m_GraphPresenter;
[SerializeField]
GraphInspectorPresenter m_GraphInspectorPresenter;
public Action onUpdateAssetClick { get; set; }
public Action onConvertToSubgraphClick { get; set; }
public Action onShowInProjectClick { get; set; }
public GraphView graphView
{

ToolbarView m_ToolbarView;
public PreviewRate previewRate
{
get { return previewSystem.previewRate; }
set { previewSystem.previewRate = value; }
}
public Action onUpdateAssetClick { get; set; }
public Action onConvertToSubgraphClick { get; set; }
public Action onShowInProjectClick { get; set; }
public MaterialGraphPresenter graphPresenter
{
get { return m_GraphPresenter; }
set { m_GraphPresenter = value; }
}
public GraphEditorView()
public GraphInspectorPresenter graphInspectorPresenter
{
get { return m_GraphInspectorPresenter; }
set { m_GraphInspectorPresenter = value; }
}
public PreviewSystem previewSystem
{
get { return m_PreviewSystem; }
set { m_PreviewSystem = value; }
}
public GraphEditorView(AbstractMaterialGraph graph, HelperMaterialGraphEditWindow container, string assetName)
previewSystem = new PreviewSystem(graph);
m_GraphInspectorPresenter = ScriptableObject.CreateInstance<GraphInspectorPresenter>();
m_GraphInspectorPresenter.Initialize(assetName, previewSystem, container);
m_GraphPresenter = ScriptableObject.CreateInstance<MaterialGraphPresenter>();
m_GraphPresenter.Initialize(graph, container, previewSystem);
m_GraphPresenter.onSelectionChanged += m_GraphInspectorPresenter.UpdateSelection;
m_ToolbarView = new ToolbarView { name = "TitleBar" };
{

m_ToolbarView.Add(new ToolbarSpaceView());
m_ToolbarView.Add(new ToolbarSeparatorView());
m_TimeButton = new ToolbarButtonView { text = "" };
m_TimeButton = new ToolbarButtonView { text = "Preview rate: " + previewRate };
if (presenter == null)
return;
if (presenter.previewRate == PreviewRate.Full)
presenter.previewRate = PreviewRate.Throttled;
else if (presenter.previewRate == PreviewRate.Throttled)
presenter.previewRate = PreviewRate.Off;
else if (presenter.previewRate == PreviewRate.Off)
presenter.previewRate = PreviewRate.Full;
m_TimeButton.text = "Preview rate: " + presenter.previewRate;
if (previewRate == PreviewRate.Full)
previewRate = PreviewRate.Throttled;
else if (previewRate == PreviewRate.Throttled)
previewRate = PreviewRate.Off;
else if (previewRate == PreviewRate.Off)
previewRate = PreviewRate.Full;
m_TimeButton.text = "Preview rate: " + previewRate;
}));
m_ToolbarView.Add(m_TimeButton);

var content = new VisualElement();
content.name = "content";
{
m_GraphView = new MaterialGraphView { name = "GraphView" };
m_GraphInspectorView = new GraphInspectorView() { name = "inspector" };
m_GraphView = new MaterialGraphView { name = "GraphView", presenter = m_GraphPresenter };
m_GraphInspectorView = new GraphInspectorView() { name = "inspector", presenter = m_GraphInspectorPresenter};
content.Add(m_GraphView);
content.Add(m_GraphInspectorView);
}

public override void OnDataChanged()
{
m_GraphView.presenter = m_Presenter.graphPresenter;
m_GraphInspectorView.presenter = m_Presenter.graphInspectorPresenter;
m_TimeButton.text = "Preview rate: " + presenter.previewRate;
}
GraphEditorPresenter m_Presenter;
ToolbarButtonView m_TimeButton;
public GraphEditorPresenter presenter
{
get { return m_Presenter; }
set
{
if (m_Presenter == value)
return;
RemoveWatch();
m_Presenter = value;
OnDataChanged();
AddWatch();
}
}
protected override Object[] toWatch
{
get { return new Object[] { m_Presenter }; }
}
public void Dispose()
{
onUpdateAssetClick = null;

if (m_GraphInspectorPresenter != null)
{
m_GraphInspectorPresenter.Dispose();
m_GraphInspectorPresenter = null;
}
if (previewSystem != null)
{
previewSystem.Dispose();
previewSystem = null;
}
}
}
}

68
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/GraphEditorPresenter.cs


using System;
using UnityEditor.MaterialGraph.Drawing.Inspector;
using UnityEngine;
using UnityEngine.Graphing;
using UnityEngine.MaterialGraph;
namespace UnityEditor.MaterialGraph.Drawing
{
public class GraphEditorPresenter : ScriptableObject, IDisposable
{
[SerializeField]
MaterialGraphPresenter m_GraphPresenter;
[SerializeField]
GraphInspectorPresenter m_GraphInspectorPresenter;
PreviewSystem m_PreviewSystem;
public PreviewRate previewRate
{
get { return m_PreviewSystem.previewRate; }
set { m_PreviewSystem.previewRate = value; }
}
public MaterialGraphPresenter graphPresenter
{
get { return m_GraphPresenter; }
set { m_GraphPresenter = value; }
}
public GraphInspectorPresenter graphInspectorPresenter
{
get { return m_GraphInspectorPresenter; }
set { m_GraphInspectorPresenter = value; }
}
public void Initialize(AbstractMaterialGraph graph, HelperMaterialGraphEditWindow container, string assetName)
{
m_PreviewSystem = new PreviewSystem(graph);
m_GraphInspectorPresenter = CreateInstance<GraphInspectorPresenter>();
m_GraphInspectorPresenter.Initialize(assetName, m_PreviewSystem, container);
m_GraphPresenter = CreateInstance<MaterialGraphPresenter>();
m_GraphPresenter.Initialize(graph, container, m_PreviewSystem);
m_GraphPresenter.onSelectionChanged += m_GraphInspectorPresenter.UpdateSelection;
}
public void UpdatePreviews()
{
m_PreviewSystem.Update();
}
public void Dispose()
{
if (m_GraphInspectorPresenter != null)
{
m_GraphInspectorPresenter.Dispose();
m_GraphInspectorPresenter = null;
}
if (m_PreviewSystem != null)
{
m_PreviewSystem.Dispose();
m_PreviewSystem = null;
}
}
}
}

3
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/GraphEditorPresenter.cs.meta


fileFormatVersion: 2
guid: fabca78859dd4417a90ce77e22bee37c
timeCreated: 1504007101
正在加载...
取消
保存