浏览代码

Remove Match(GraphChange) utility function

/main
Peter Bay Bastian 7 年前
当前提交
dac79163
共有 3 个文件被更改,包括 31 次插入28 次删除
  1. 19
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Interfaces/GraphChange.cs
  2. 20
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/MaterialGraphPresenter.cs
  3. 20
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/PreviewSystem.cs

19
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Interfaces/GraphChange.cs


public IEdge edge { get; private set; }
}
public static class GraphChangeExtensions
{
public static void Match(this GraphChange change,
Action<NodeAddedGraphChange> nodeAdded = null,
Action<NodeRemovedGraphChange> nodeRemoved = null,
Action<EdgeAddedGraphChange> edgeAdded = null,
Action<EdgeRemovedGraphChange> edgeRemoved = null)
{
if (change is NodeAddedGraphChange && nodeAdded != null)
nodeAdded((NodeAddedGraphChange)change);
else if (change is NodeRemovedGraphChange && nodeRemoved != null)
nodeRemoved((NodeRemovedGraphChange)change);
else if (change is EdgeAddedGraphChange && edgeAdded != null)
edgeAdded((EdgeAddedGraphChange)change);
else if (change is EdgeRemovedGraphChange && edgeRemoved != null)
edgeRemoved((EdgeRemovedGraphChange)change);
}
}
}

20
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/MaterialGraphPresenter.cs


public IGraph graph { get; private set; }
protected MaterialGraphPresenter()
{
}
protected MaterialGraphPresenter() { }
public override List<NodeAnchorPresenter> GetCompatibleAnchors(NodeAnchorPresenter startAnchor, NodeAdapter nodeAdapter)
{

void OnChange(GraphChange change)
{
change.Match(NodeAdded, NodeRemoved, EdgeAdded, EdgeRemoved);
var nodeAdded = change as NodeAddedGraphChange;
if (nodeAdded != null)
NodeAdded(nodeAdded);
var nodeRemoved = change as NodeRemovedGraphChange;
if (nodeRemoved != null)
NodeRemoved(nodeRemoved);
var edgeAdded = change as EdgeAddedGraphChange;
if (edgeAdded != null)
EdgeAdded(edgeAdded);
var edgeRemoved = change as EdgeRemovedGraphChange;
if (edgeRemoved != null)
EdgeRemoved(edgeRemoved);
}
void NodeAdded(NodeAddedGraphChange change)

20
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/PreviewSystem.cs


void OnGraphChange(GraphChange change)
{
change.Match(
nodeAdded: c => AddPreview(c.node),
nodeRemoved: c => RemovePreview(c.node),
edgeAdded: c => m_DirtyShaders.Add(c.edge.inputSlot.nodeGuid),
edgeRemoved: c => m_DirtyShaders.Add(c.edge.inputSlot.nodeGuid));
var nodeAdded = change as NodeAddedGraphChange;
if (nodeAdded != null)
AddPreview(nodeAdded.node);
var nodeRemoved = change as NodeRemovedGraphChange;
if (nodeRemoved != null)
RemovePreview(nodeRemoved.node);
var edgeAdded = change as EdgeAddedGraphChange;
if (edgeAdded != null)
m_DirtyShaders.Add(edgeAdded.edge.inputSlot.nodeGuid);
var edgeRemoved = change as EdgeRemovedGraphChange;
if (edgeRemoved != null)
m_DirtyShaders.Add(edgeRemoved.edge.inputSlot.nodeGuid);
}
void AddPreview(INode node)

正在加载...
取消
保存