using System.Collections.Generic; using RMGUI.GraphView; using UnityEngine; using UnityEngine.Graphing; namespace UnityEditor.Graphing.Drawing { public class NodeDrawData : GraphElementData { protected NodeDrawData() {} public INode node { get; private set; } protected List m_Children = new List(); public override IEnumerable elements { get { return m_Children; } } public virtual void OnModified(ModificationScope scope) {} public override void CommitChanges() { base.CommitChanges(); var drawData = node.drawState; drawData.position = position; node.drawState = drawData; } protected virtual IEnumerable GetControlData() { return new ControlDrawData[0]; } public virtual void Initialize(INode inNode) { node = inNode; capabilities |= Capabilities.Movable; if (node == null) return; name = inNode.name; foreach (var input in node.GetSlots()) { var data = CreateInstance(); data.Initialize(input); m_Children.Add(data); } var controlData = GetControlData(); m_Children.AddRange(controlData); position = new Rect(node.drawState.position.x, node.drawState.position.y, 0, 0); //position } } }