public void Initialize(NodeData nodeData, Object nodeDataContainer)
        {
            OnNewDataSelected(nodeData, nodeDataContainer);

            _newNodeMenu    = new GenericMenu();
            _rightClickMenu = new GenericMenu();

            foreach (var pair in NodeCollector.Nodes)
            {
                var info = pair.Value;
                if (string.IsNullOrEmpty(info.Path))
                {
                    continue;
                }
                _newNodeMenu.AddItem(new GUIContent(info.Path), false, data =>
                {
                    CreateNode((string)data, _graphViewSize * 0.5f - _scrollMain);
                }, info.TypeID);

                _rightClickMenu.AddItem(new GUIContent("Create/" + info.Path), false, data =>
                {
                    CreateNode((string)data, _rightClickMenuPosition - _scrollMain);
                }, info.TypeID);
            }
            Show();
            DefaultNode.InitDefaults(nodeData);
        }
        public Node CreateNode(string typeID, Vector2 pos)
        {
            Undo.RecordObject(_nodeDataContainer, "Create Node");
            Node node = _nodeData.CreateNode(typeID);

            node.Position = pos;
            DefaultNode.InitDefaults(node, _nodeData);
            RebuildGraph();
            return(node);
        }
예제 #3
0
        void DrawProperty(Rect rect, Node node, string property, string name)
        {
            FieldInfo field = node.GetType().GetField(property);

            if (field == null)
            {
                return;
            }
            object value = field.GetValue(node);

            EditorGUI.BeginChangeCheck();
            value = DrawProperty(rect, field.FieldType, name, value);
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(_nodeDataContainer, "Change Property");
                field.SetValue(node, value);

                node.UpdateTypes(_nodeData, new HashSet <Node>());
                DefaultNode.InitDefaults(node, _nodeData);

                RebuildGraph();
            }
        }