浏览代码

[Material graph]Add imgui block for texture controls. Fix controls so they have the correct height.

/main
Tim Cooper 8 年前
当前提交
a8d80b3f
共有 7 个文件被更改,包括 88 次插入9 次删除
  1. 3
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/MaterialGraphDataSource.cs
  2. 5
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/MaterialGraphNode.cs
  3. 51
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/MaterialNodeData.cs
  4. 2
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeDrawers/AbstractMaterialNodeUI.cs
  5. 3
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Styles/NodalView.uss
  6. 12
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/PropertyNode.cs
  7. 21
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/TextureNode.cs

3
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/MaterialGraphDataSource.cs


if (found == null)
found = typeof(MaterialNodeData);
var nodeData = (MaterialNodeData)ScriptableObject.CreateInstance(found);
var nodeData = (MaterialNodeData)CreateInstance(found);
node.onModified += OnNodeChanged;

m_DataMapper.Clear ();
m_DataMapper [typeof(AbstractMaterialNode)] = typeof(MaterialNodeData);
m_DataMapper [typeof(ColorNode)] = typeof(ColorNodeData);
m_DataMapper [typeof(TextureNode)] = typeof(TextureNodeData);
this.graphAsset = graphAsset;

5
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/MaterialGraphNode.cs


foreach (var controlData in nodeData.elements.OfType<NodeControlData>())
{
var imContainer = new IMGUIContainer()
var imContainer = new IMGUIContainer
pickingMode = PickingMode.Position
pickingMode = PickingMode.Position,
height = controlData.GetHeight(),
};
m_ControlsContainer.AddChild(imContainer);
}

51
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Editor/Drawing/MaterialNodeData.cs


namespace UnityEditor.Graphing.Drawing
{
class TextureNodeContolData : NodeControlData
{
private string[] m_TextureTypeNames;
private string[] textureTypeNames
{
get
{
if (m_TextureTypeNames == null)
m_TextureTypeNames = Enum.GetNames(typeof(TextureType));
return m_TextureTypeNames;
}
}
public override void OnGUIHandler()
{
base.OnGUIHandler();
var tNode = node as UnityEngine.MaterialGraph.TextureNode;
if (tNode == null)
return;
tNode.exposedState = (PropertyNode.ExposedState)EditorGUILayout.EnumPopup(new GUIContent("Exposed"), tNode.exposedState);
tNode.defaultTexture = EditorGUILayout.MiniThumbnailObjectField(new GUIContent("Texture"), tNode.defaultTexture, typeof(Texture2D), null) as Texture2D;
tNode.textureType = (TextureType)EditorGUILayout.Popup((int)tNode.textureType, textureTypeNames, EditorStyles.popup);
}
public override float GetHeight()
{
return 3 * (EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing) + EditorGUIUtility.standardVerticalSpacing;
}
}
base.OnGUIHandler ();
base.OnGUIHandler();
cNode.color = EditorGUILayout.ColorField("Color", cNode.color);
cNode.color = EditorGUILayout.ColorField("Color", cNode.color);
}
public override float GetHeight()
{
return EditorGUIUtility.singleLineHeight + 2 * EditorGUIUtility.standardVerticalSpacing;
}
}

protected override IEnumerable<GraphElementData> GetControlData()
{
var instance = CreateInstance<ColorNodeContolData>();
instance.Initialize(node);
return new List<GraphElementData> { instance };
}
}
[Serializable]
public class TextureNodeData : MaterialNodeData
{
protected override IEnumerable<GraphElementData> GetControlData()
{
var instance = CreateInstance<TextureNodeContolData>();
instance.Initialize(node);
return new List<GraphElementData> { instance };
}

2
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeDrawers/AbstractMaterialNodeUI.cs


GUIUtility.GetControlID (node.guid.GetHashCode(), FocusType.Passive);
}
public abstract float GetHeight();
}
[Serializable]

3
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Styles/NodalView.uss


MaterialGraphNode #controls {
flex-direction: column;
height: 26;
padding-bottom: 2;
flex:1;
}
MaterialGraphNode #preview {

12
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/PropertyNode.cs


return m_Exposed;
}
set { m_Exposed = value; }
set
{
if (m_Exposed == value)
return;
m_Exposed = value;
if (onModified != null)
{
onModified(this);
}
}
}
public string description

21
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/TextureNode.cs


}
set
{
if (defaultTexture == value)
return;
if (onModified != null)
{
onModified(this);
}
}
}
#else

public TextureType textureType
{
get { return m_TextureType; }
set { m_TextureType = value; }
set
{
if (m_TextureType == value)
return;
m_TextureType = value;
if (onModified != null)
{
onModified(this);
}
}
}
public TextureNode()

正在加载...
取消
保存