浏览代码

Foundation has been laid for node inspectors (partially implemented for surface master)

/main
Peter Bay Bastian 8 年前
当前提交
e69e0431
共有 12 个文件被更改,包括 187 次插入4 次删除
  1. 47
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/AbstractGraphInspector.cs
  2. 8
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/MaterialGraphInspector.cs
  3. 9
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors.meta
  4. 9
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors.meta
  5. 40
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/AbstractNodeInspector.cs
  6. 12
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/AbstractNodeInspector.cs.meta
  7. 13
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/BasicNodeInspector.cs
  8. 12
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/BasicNodeInspector.cs.meta
  9. 29
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors/SurfaceMasterNodeInspector.cs
  10. 12
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors/SurfaceMasterNodeInspector.cs.meta

47
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/AbstractGraphInspector.cs


using System.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor.Graphing.Util;
using UnityEngine;
using UnityEngine.Graphing;
namespace UnityEditor.Graphing.Drawing

private readonly TypeMapper m_DataMapper = new TypeMapper(typeof(BasicNodeInspector));
[SerializeField] private List<AbstractNodeInspector> m_Inspectors = new List<AbstractNodeInspector>();
protected abstract void AddTypeMappings(Action<Type, Type> map);
UpdateInspectors();
foreach (var inspector in m_Inspectors)
{
inspector.OnInspectorGUI();
}
}
private void UpdateInspectors()
{
var selectedNodes = asset.drawingData.selection.Select(asset.graph.GetNodeFromGuid);
EditorGUILayout.LabelField("Selected nodes", string.Join(", ", selectedNodes.Select(x => x.name).ToArray()));
var selectedNodes = asset.drawingData.selection.Select(asset.graph.GetNodeFromGuid).ToList();
if (m_Inspectors.All(i => i.node != null) && selectedNodes.Select(n => n.guid).SequenceEqual(m_Inspectors.Select(i => i.nodeGuid)))
return;
m_Inspectors.Clear();
foreach (var node in selectedNodes.OfType<SerializableNode>())
{
var inspector = CreateInspector(node);
inspector.Initialize(node);
m_Inspectors.Add(inspector);
}
}
private AbstractNodeInspector CreateInspector(INode node)
{
var type = m_DataMapper.MapType(node.GetType());
return CreateInstance(type) as AbstractNodeInspector;
}
public void OnEnable()
{
m_DataMapper.Clear();
AddTypeMappings(m_DataMapper.AddMapping);
}
}
}

8
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/MaterialGraphInspector.cs


using System.Linq;
using System;
using System.Linq;
using UnityEditor.MaterialGraph.Drawing.NodeInspectors;
using UnityEngine.MaterialGraph;
namespace UnityEditor.MaterialGraph.Drawing

{
protected override void AddTypeMappings(Action<Type, Type> map)
{
map(typeof(AbstractSurfaceMasterNode), typeof(SurfaceMasterNodeInspector));
}
}
}

9
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors.meta


fileFormatVersion: 2
guid: 61532a693bec945fab1b24887cb6e726
folderAsset: yes
timeCreated: 1482412458
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors.meta


fileFormatVersion: 2
guid: eb549fa7bbf654674b93a8ea187f48ea
folderAsset: yes
timeCreated: 1482418252
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

40
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/AbstractNodeInspector.cs


using System;
using UnityEngine;
using UnityEngine.Graphing;
namespace UnityEditor.Graphing.Drawing
{
public abstract class AbstractNodeInspector : ScriptableObject, ISerializationCallbackReceiver
{
[SerializeField] private string m_SerializedNodeGuid;
private Guid m_NodeGuid;
public Guid nodeGuid
{
get { return m_NodeGuid; }
}
public INode node { get; private set; }
public virtual void OnInspectorGUI()
{
}
public virtual void Initialize(SerializableNode node)
{
this.node = node;
m_NodeGuid = node.guid;
}
public void OnBeforeSerialize()
{
m_SerializedNodeGuid = m_NodeGuid.ToString();
}
public void OnAfterDeserialize()
{
m_NodeGuid = new Guid(m_SerializedNodeGuid);
}
}
}

12
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/AbstractNodeInspector.cs.meta


fileFormatVersion: 2
guid: 3e1c9fc1866b040c48aaedc5172d7826
timeCreated: 1482412458
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

13
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/BasicNodeInspector.cs


using UnityEngine;
using UnityEngine.Graphing;
namespace UnityEditor.Graphing.Drawing
{
public class BasicNodeInspector : AbstractNodeInspector
{
public override void OnInspectorGUI()
{
GUILayout.Label(node.name, EditorStyles.boldLabel);
}
}
}

12
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/NodeInspectors/BasicNodeInspector.cs.meta


fileFormatVersion: 2
guid: 91fcb4d1151304e61842c34f652879ce
timeCreated: 1482412458
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

29
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors/SurfaceMasterNodeInspector.cs


using UnityEditor.Graphing.Drawing;
using UnityEngine;
using UnityEngine.Graphing;
using UnityEngine.MaterialGraph;
namespace UnityEditor.MaterialGraph.Drawing.NodeInspectors
{
public class SurfaceMasterNodeInspector : BasicNodeInspector
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
var surfaceNode = node as AbstractSurfaceMasterNode;
if (surfaceNode == null)
return;
var options = surfaceNode.options;
options.srcBlend = (SurfaceMaterialOptions.BlendMode) EditorGUILayout.EnumPopup("Src Blend", options.srcBlend);
options.dstBlend = (SurfaceMaterialOptions.BlendMode) EditorGUILayout.EnumPopup("Dst Blend", options.dstBlend);
options.cullMode = (SurfaceMaterialOptions.CullMode) EditorGUILayout.EnumPopup("Cull Mode", options.cullMode);
options.zTest = (SurfaceMaterialOptions.ZTest) EditorGUILayout.EnumPopup("Z Test", options.zTest);
options.zWrite = (SurfaceMaterialOptions.ZWrite) EditorGUILayout.EnumPopup("Z Write", options.zWrite);
options.renderQueue = (SurfaceMaterialOptions.RenderQueue) EditorGUILayout.EnumPopup("Render Queue", options.renderQueue);
options.renderType = (SurfaceMaterialOptions.RenderType) EditorGUILayout.EnumPopup("Render Type", options.renderType);
}
}
}

12
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors/SurfaceMasterNodeInspector.cs.meta


fileFormatVersion: 2
guid: 6efdce810d0984e1ab454b8858fff7c4
timeCreated: 1482418253
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存