Exemplo n.º 1
0
 public override bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
 {
     if (entry.userData is UdonNodeDefinition definition && !_graphView.IsDuplicateEventNode(definition.fullName))
     {
         _graphView.AddNodeFromSearch(definition, GetGraphPositionFromContext(context));
         return(true);
     }
Exemplo n.º 2
0
        public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
        {
            var type = (Type)searchTreeEntry.userData;

            _onSelect?.Invoke(type);
            return(true);
        }
        private void OnCreateNode(NodeCreationContext context)
        {
            var windowContext = new SearchWindowContext(context.screenMousePosition,
                                                        SearchWindowWidth, SearchWindowHeight);

            SearchWindow.Open(windowContext, m_searchWindowProvider);
        }
Exemplo n.º 4
0
            public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
            {
                var entries = new List <SearchTreeEntry> {
                    new SearchTreeGroupEntry(new GUIContent("Create Node"))
                };

                var names             = Enum.GetNames(typeof(UILayer));
                var viewConfiguration = UIViewConfiguration.GlobalInstance;

                for (int i = 0; i < names.Length - 2; i++)
                {
                    entries.Add(new SearchTreeGroupEntry(new GUIContent(names[i]))
                    {
                        level = 1
                    });
                    var layer = (UILayer)Enum.Parse(typeof(UILayer), names[i]);
                    foreach (var configuration in viewConfiguration.Configurations)
                    {
                        if (configuration.AttachLayer == layer)
                        {
                            entries.Add(new SearchTreeEntry(new GUIContent(configuration.Name))
                            {
                                level = 2, userData = configuration
                            });
                        }
                    }
                }

                return(entries);
            }
        public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            if (entry is SearchTreeGroupEntry)
            {
                return(false);
            }

            var actorConfig = (ActorConfig)entry.userData;
            var actorSetup  = ActorSystemSetupAnalyzer.CreateActorSetup(actorConfig);

            m_Asset.ActorSetups.Add(actorSetup);

            foreach (var inputConfig in actorConfig.InputConfigs)
            {
                var isValid = MultiplicityValidator.IsValid(m_Asset.ComponentConfigs.First(x => x.Id == inputConfig.ComponentConfigId).InputMultiplicity, 0);
                actorSetup.Inputs.Add(new ActorPort(Guid.NewGuid().ToString(), inputConfig.Id, new List <ActorLink>(), isValid, false));
            }

            foreach (var outputConfig in actorConfig.OutputConfigs)
            {
                var isValid = MultiplicityValidator.IsValid(m_Asset.ComponentConfigs.First(x => x.Id == outputConfig.ComponentConfigId).OutputMultiplicity, 0);
                actorSetup.Outputs.Add(new ActorPort(Guid.NewGuid().ToString(), outputConfig.Id, new List <ActorLink>(), isValid, false));
            }

            var node = CreateNode(actorSetup);

            var pointInWindow = context.screenMousePosition - position.position;
            var pointInGraph  = node.parent.WorldToLocal(pointInWindow);

            node.SetPosition(new Rect(pointInGraph, Vector2.zero));
            actorSetup.Position = pointInGraph;

            return(true);
        }
Exemplo n.º 6
0
        public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            var nodeEntry  = (NodeEntry)entry.userData;
            var nodeEditor = nodeEntry.LogicNodeEditor;

            var windowMousePosition = _editorWindow.rootVisualElement.ChangeCoordinatesTo(_editorWindow.rootVisualElement.parent, context.screenMousePosition - _editorWindow.position.position);
            var graphMousePosition  = _graphView.contentViewContainer.WorldToLocal(windowMousePosition);

            nodeEditor.Position = new Vector3(graphMousePosition.x, graphMousePosition.y, 0);

            _logicGraphEditorView.AddNode(nodeEditor);

            if (ConnectedLogicPort != null)
            {
                var connectedSlotReference  = ConnectedLogicPort.Slot;
                var compatibleSlotReference = nodeEditor.FindOutputSlot <LogicSlot>(nodeEntry.compatibleSlotId);

                var fromReference = ConnectedLogicPort.Slot.isOutputSlot ? connectedSlotReference : compatibleSlotReference;
                var toReference   = ConnectedLogicPort.Slot.isOutputSlot ? compatibleSlotReference : connectedSlotReference;

                _logicGraphEditorView.RemoveEdgesConnectedTo(ConnectedLogicPort);

                _logicGraphEditorView.AddEdge(fromReference, toReference);
            }

            return(true);
        }
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            var entries = new List <SearchTreeEntry>
            {
                new SearchTreeGroupEntry(new GUIContent("Create Node")),
                new SearchTreeEntry(new GUIContent("State"))
                {
                    level = 1
                },
                new SearchTreeEntry(new GUIContent("Any State"))
                {
                    level = 1
                },
                new SearchTreeEntry(new GUIContent("Parameter"))
                {
                    level = 1
                },
            };

            if (!GraphView.nodes.ToList().Exists(n => n is AnyStatePriorityManagerNodeUI))
            {
                entries.Insert(3, new SearchTreeEntry(new GUIContent("Any State Priority Manager"))
                {
                    level = 1
                });
            }

            return(entries);
        }
Exemplo n.º 8
0
    public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
    {
        var tree = new List <SearchTreeEntry>();

        tree.Add(new SearchTreeGroupEntry(new GUIContent("Create Node"), 0));

        Texture2D icon = EditorGUIUtility.FindTexture("cs Script Icon");

        tree.Add(new SearchTreeGroupEntry(new GUIContent("Test Category"), 1));
        tree.Add(new SearchTreeEntry(new GUIContent("Test Item1", icon))
        {
            level = 2, userData = typeof(SampleGraphView)
        });
        tree.Add(new SearchTreeEntry(new GUIContent("Test Item2", icon))
        {
            level = 2, userData = typeof(SampleGraphView)
        });
        tree.Add(new SearchTreeEntry(new GUIContent("Test Item3", icon))
        {
            level = 2, userData = typeof(SampleGraphView)
        });
        tree.Add(new SearchTreeEntry(new GUIContent("Test Item4", icon))
        {
            level = 2, userData = typeof(SampleGraphView)
        });
        tree.Add(new SearchTreeEntry(new GUIContent("Create Dialogue", icon))
        {
            level = 2
        });

        return(tree);
    }
        public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            var nodeEntry  = (NodeEntry)entry.userData;
            var nodeEditor = nodeEntry.NodeEditor;

            var windowMousePosition = _editorWindow.GetRootVisualContainer().ChangeCoordinatesTo(_editorWindow.GetRootVisualContainer().parent, context.screenMousePosition - _editorWindow.position.position);
            var graphMousePosition  = _graphView.contentViewContainer.WorldToLocal(windowMousePosition);

            nodeEditor.Position = new Vector3(graphMousePosition.x, graphMousePosition.y, 0);

            _logicGraphEditorView.AddNode(nodeEditor);

//            if (connectedPort != null)
//            {
//                var connectedSlot = connectedPort.slot;
//                var connectedSlotReference = connectedSlot.owner.GetSlotReference(connectedSlot.id);
//                var compatibleSlotReference = node.GetSlotReference(nodeEntry.compatibleSlotId);
//
//                var fromReference = connectedSlot.isOutputSlot ? connectedSlotReference : compatibleSlotReference;
//                var toReference = connectedSlot.isOutputSlot ? compatibleSlotReference : connectedSlotReference;
//                m_Graph.Connect(fromReference, toReference);
//
//                nodeNeedsRepositioning = true;
//                targetSlotReference = compatibleSlotReference;
//                targetPosition = graphMousePosition;
//            }

            return(true);
        }
Exemplo n.º 10
0
    public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
    {
        var tree = new List <SearchTreeEntry> {
            //First group entries are the header of it
            new SearchTreeGroupEntry(new GUIContent("Create Stuff"), 0),
            //level = Row
            //Logic Group
            new SearchTreeGroupEntry(new GUIContent("Logic"), 1),
            // AINode
            new SearchTreeEntry(new GUIContent("AINode", _iconFix))
            {
                userData = new AINode(),
                level    = 2,
            },
            //
            new SearchTreeEntry(new GUIContent("Hello world", _iconFix))
            {
                level = 2
            }
        };

        for (int i = 0; i < 30; i++)
        {
            tree.Add(new SearchTreeEntry(new GUIContent("AINode" + i, _iconFix))
            {
                userData = new AINode(),
                level    = 2,
            });
        }


        return(tree);
    }
Exemplo n.º 11
0
        override public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            // should check for adding duplicate event nodes here, look at Legacy.UdonGraph.TryCreateNodeInstance
            // Assuming that if we've made it to this point we're allowed to add the node

            UdonNode node;

            // checking type so we can support selecting registries as well
            if (entry.userData is UdonNodeDefinition && !_graphView.IsDuplicateEventNode((entry.userData as UdonNodeDefinition).fullName))
            {
                node = UdonNode.CreateNode(entry.userData as UdonNodeDefinition, _graphView);
                _graphView.AddElement(node);

                node.SetPosition(new Rect(GetGraphPositionFromContext(context), Vector2.zero));
                node.Select(_graphView, false);

                // Do we need to do this to reserialize, etc?
                _graphView.ReSerializeData();

                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 12
0
        public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context)
        {
            var mousePosition = _window.rootVisualElement.ChangeCoordinatesTo(_window.rootVisualElement.parent,
                                                                              context.screenMousePosition - _window.position.position);
            var graphMousePosition = _graphView.contentViewContainer.WorldToLocal(mousePosition);

            switch (SearchTreeEntry.userData)
            {
            case Group group:
                var rect = new Rect(graphMousePosition, EasyGraphView.CommentGroupSize);
                _graphView.CreateCommentGroup(rect);
                return(true);

            case TriggerNode triggerNode:
                _graphView.CreateAndAddNode <TriggerNode>(graphMousePosition);
                return(true);

            case ConditionNode conditionNode:
                _graphView.CreateAndAddNode <ConditionNode>(graphMousePosition);
                return(true);

            case ActionNode actionNode:
                _graphView.CreateAndAddNode <ActionNode>(graphMousePosition);
                return(true);
            }
            return(false);
        }
Exemplo n.º 13
0
 public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
 {
     return(new List <SearchTreeEntry>
     {
         new SearchTreeGroupEntry(new GUIContent("Create Node"), 0),
         new SearchTreeGroupEntry(new GUIContent("Instruction"), 1),
         new SearchTreeEntry(new GUIContent("Trigger Node", _icon))
         {
             level = 2, userData = new TriggerNode()
         },
         new SearchTreeEntry(new GUIContent("Condition Node", _icon))
         {
             level = 2, userData = new ConditionNode()
         },
         new SearchTreeEntry(new GUIContent("Action Node", _icon))
         {
             level = 2, userData = new ActionNode()
         },
         new SearchTreeEntry(new GUIContent("Comment Group", _icon))
         {
             level = 1,
             userData = new Group()
         }
     });
 }
Exemplo n.º 14
0
        public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            TargetParameter.BehaviorActionValue = (BehaviorAction)entry.userData;
            TargetParameter = null;

            return(true);
        }
        public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            if (!(entry is SearchTreeGroupEntry))
            {
                Type createType = entry.userData as Type;
                Node node       = CreateNodeFromType(createType, null);
                if (node == null)
                {
                    return(false);
                }

                node.userData = createType;
                m_GraphView.AddElement(node);

                Vector2 pointInWindow = context.screenMousePosition - position.position;
                Vector2 pointInGraph  = node.parent.WorldToLocal(pointInWindow);
                node.SetPosition(new Rect(pointInGraph, Vector2.zero));
                node.Select(m_GraphView, false);

                SaveGraphData();

                return(true);
            }

            return(false);
        }
Exemplo n.º 16
0
    public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
    {
        var worldMousePosition = _window.rootVisualElement.ChangeCoordinatesTo(_window.rootVisualElement.parent,
                                                                               context.screenMousePosition - _window.position.position);
        var localMousePosition = _graphView.contentViewContainer.WorldToLocal(worldMousePosition);

        switch (searchTreeEntry.userData)
        {
        case Group group:
            var rect = new Rect(localMousePosition, _graphView.DefaultCommentBlockSize);
            _graphView.CreateCommentBlock(rect);
            return(true);

        case OperatorInfo info:
            _graphView.AddElement(NodeFactory.CreateNode(new FrpNodeData
            {
                CodeText     = "Write code here",
                OperatorInfo = info,
                Position     = localMousePosition,
                Guid         = Guid.NewGuid().ToString()
            }));
            return(true);
        }

        return(false);
    }
    public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
    {
        if (_graphView == null || _editorWindow == null)
        {
            return(false);
        }

        //Get Relative world position of search window in regards to the Editor Window visual element
        Vector2 worldMousePosition = _editorWindow.rootVisualElement.ChangeCoordinatesTo(
            _editorWindow.rootVisualElement.parent, context.screenMousePosition - _editorWindow.position.position);

        // Transform to local coordinates based on GraphView
        Vector2 localMousePosition = _graphView.contentViewContainer.WorldToLocal(worldMousePosition);


        switch (searchTreeEntry.userData)
        {
        case DialogueNode node:
        {
            Debug.Log("Created");
            _graphView.CreateNode("Dialogue Node", localMousePosition);
            return(true);
        }

        default:
        {
            return(false);
        }
        }
    }
Exemplo n.º 18
0
        public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
        {
            var windowRoot          = graphView.GraphWindow.rootVisualElement;
            var windowMousePosition = windowRoot.ChangeCoordinatesTo(windowRoot.parent, context.screenMousePosition - graphView.GraphWindow.position.position);
            var graphMousePosition  = graphView.contentViewContainer.WorldToLocal(windowMousePosition);

            BaseNode createNode = graphView.Model.NewNode(searchTreeEntry.userData as Type, graphMousePosition);

            //自动连接
            if (ConnectionFilter != null)
            {
                graphView.CommandDispacter.Do(new AddNodeCommand(graphView.Model, createNode));
                Port         port      = ConnectionFilter.input == null ? ConnectionFilter.output : ConnectionFilter.input;
                BasePortView portView1 = port as BasePortView;

                string portName = nodePortNameMap[searchTreeEntry.userData as Type];
                if (checkInPort)
                {
                    graphView.CommandDispacter.Do(new ConnectCommand(graphView.Model, createNode, portName, waitConnectNode, waitConnectPortName));
                }
                else
                {
                    graphView.CommandDispacter.Do(new ConnectCommand(graphView.Model, waitConnectNode, waitConnectPortName, createNode, portName));
                }
            }
            else
            {
                graphView.CommandDispacter.Do(new AddNodeCommand(graphView.Model, createNode));
            }
            graphView.GraphWindow.Focus();
            return(true);
        }
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            List <SearchTreeEntry> tree = new List <SearchTreeEntry>();

            if (_data != null)
            {
                tree.Add(new SearchTreeGroupEntry(new GUIContent("Create Element"), 0));
                List <SearchElement> dataSearchList = _data.GetSearchMenu();
                dataSearchList.ForEach(searchElement => {
                    if (searchElement.nodeType != null & searchElement.nodeType != "")
                    {
                        tree.Add(new SearchTreeEntry(new GUIContent(searchElement.name, _indentationIcon))
                        {
                            userData = GetInstance(searchElement.nodeType),
                            level    = searchElement.level
                        });
                    }
                    else
                    {
                        tree.Add(new SearchTreeGroupEntry(new GUIContent(searchElement.name), searchElement.level));
                    }
                });
            }
            else
            {
                tree.Add(new SearchTreeGroupEntry(new GUIContent("No Node Available"), 0));
            }
            return(tree);
        }
        bool ISearchWindowProvider.OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
        {
            var type = searchTreeEntry.userData as System.Type;

            this.node.SetBehavior(type);
            return(true);
        }
Exemplo n.º 21
0
    List <SearchTreeEntry> ISearchWindowProvider.CreateSearchTree(SearchWindowContext context)
    {
        var entries = new List <SearchTreeEntry>();

        entries.Add(new SearchTreeGroupEntry(new GUIContent("Create Node")));

        // Exampleというグループを追加
        entries.Add(new SearchTreeGroupEntry(new GUIContent("Example"))
        {
            level = 1
        });

        // Exampleグループの下に各ノードを作るためのメニューを追加
        entries.Add(new SearchTreeEntry(new GUIContent(nameof(ValueNode)))
        {
            level = 2, userData = typeof(ValueNode)
        });
        entries.Add(new SearchTreeEntry(new GUIContent(nameof(AddNode)))
        {
            level = 2, userData = typeof(AddNode)
        });
        entries.Add(new SearchTreeEntry(new GUIContent(nameof(OutputNode)))
        {
            level = 2, userData = typeof(OutputNode)
        });

        return(entries);
    }
Exemplo n.º 22
0
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            _results.Clear();

            _results.Add(new SearchTreeGroupEntry(new GUIContent("Create Node")));

            foreach (var nodeType in _graphType.AvailableNodes)
            {
                // we need to create a node to know what ports it have
                SNode newNode = nodeType.CreateSNode();

                // if we have _fromPort, check that we can connect it to any of the input ports in the newNode
                if (_fromPort == null ||
                    newNode.InputPorts().Any(p => _graphType.FindConnectionType(_fromPort.Type, p.Type) != null))
                {
                    var content     = new GUIContent(ObjectNames.NicifyVariableName(nodeType.Name));
                    var searchEntry = new SearchTreeEntry(content)
                    {
                        level    = 1,
                        userData = newNode
                    };

                    _results.Add(searchEntry);
                }
            }

            return(_results);
        }
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            var tree = new List <SearchTreeEntry>();

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Create Node")));

            var nodes = m_Asset.ActorConfigs
                        .OrderBy(x => x.GroupName)
                        .ThenBy(x => x.DisplayName)
                        .ToList();

            string lastNodeGroupName = null;

            foreach (var node in nodes)
            {
                if (node.IsRemoved)
                {
                    continue;
                }

                if (node.GroupName != lastNodeGroupName)
                {
                    lastNodeGroupName = node.GroupName;
                    tree.Add(new SearchTreeGroupEntry(new GUIContent(node.GroupName), 1));
                }

                tree.Add(new SearchTreeEntry(new GUIContent(node.DisplayName))
                {
                    level = 2, userData = node
                });
            }

            return(tree);
        }
Exemplo n.º 24
0
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            var tree = new List <SearchTreeEntry>()
            {
                new SearchTreeGroupEntry(new GUIContent("Create Node"), 0)
            };

            foreach (var entry in _taskNodes
                     .GroupBy(x => x.GetCustomAttribute <TaskCategoryAttribute>()?.Category)
                     .OrderBy(x => x.Key))
            {
                tree.Add(new SearchTreeGroupEntry(new GUIContent(entry.Key ?? "Miscellaneous"), 1));

                foreach (var child in entry)
                {
                    if (child.IsAbstract)
                    {
                        continue;
                    }

                    tree.Add(new SearchTreeEntry(new GUIContent(ObjectNames.NicifyVariableName(child.Name), _indentationIcon))
                    {
                        level    = 2,
                        userData = child
                    });
                }
            }

            return(tree);
        }
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            var tree = new List <SearchTreeEntry>
            {
                new SearchTreeGroupEntry(new GUIContent("Custom Passes"), 0),
            };

            foreach (var customPassType in TypeCache.GetTypesDerivedFrom <CustomPass>())
            {
                if (customPassType.IsAbstract)
                {
                    continue;
                }

                if (customPassType.GetCustomAttribute <HideInInspector>() != null)
                {
                    continue;
                }

                tree.Add(new SearchTreeEntry(new GUIContent(customPassType.Name, icon))
                {
                    level    = 1,
                    userData = customPassType
                });
            }

            return(tree);
        }
Exemplo n.º 26
0
        // Node creation when validate a choice
        public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
        {
            // window to graph position
            var windowRoot          = window.rootVisualElement;
            var windowMousePosition = windowRoot.ChangeCoordinatesTo(windowRoot.parent, context.screenMousePosition - window.position.position);
            var graphMousePosition  = graphView.contentViewContainer.WorldToLocal(windowMousePosition);

            var nodeType = searchTreeEntry.userData is Type ? (Type)searchTreeEntry.userData : ((NodeProvider.PortDescription)searchTreeEntry.userData).nodeType;

            graphView.RegisterCompleteObjectUndo("Added " + nodeType);
            var view = graphView.AddNode(BaseNode.CreateFromType(nodeType, graphMousePosition));

            if (searchTreeEntry.userData is NodeProvider.PortDescription desc)
            {
                var targetPort = view.GetPortViewFromFieldName(desc.portFieldName, desc.portIdentifier);
                if (inputPortView == null)
                {
                    graphView.Connect(targetPort, outputPortView);
                }
                else
                {
                    graphView.Connect(inputPortView, targetPort);
                }
            }

            return(true);
        }
Exemplo n.º 27
0
    List <SearchTreeEntry> ISearchWindowProvider.CreateSearchTree(SearchWindowContext context)
    {
        dataLoadFlag = false;
        var entries = new List <SearchTreeEntry>();

        entries.Add(new SearchTreeGroupEntry(new GUIContent("新規作成")));

        //entries.Add(new SearchTreeGroupEntry(new GUIContent("Read Node")) { level = 1 });
        //entries.Add(new SearchTreeEntry(new GUIContent(nameof(TestNode))) { level = 2, userData = typeof(ReadNode) });


        entries.Add(new SearchTreeGroupEntry(new GUIContent("Create New Node"))
        {
            level = 1
        });

        //追加するノードの設定
        entries.Add(new SearchTreeEntry(new GUIContent(nameof(OutlineNode)))
        {
            level = 2, userData = typeof(OutlineNode)
        });

        //entries.Add(new SearchTreeEntry(new GUIContent(nameof(BoolNode))) { level = 2, userData = typeof(BoolNode) });
        //entries.Add(new SearchTreeEntry(new GUIContent(nameof(NumNode))) { level = 2, userData = typeof(NumNode) });
        //entries.Add(new SearchTreeEntry(new GUIContent(nameof(StringNode))) { level = 2, userData = typeof(StringNode) });
        //entries.Add(new SearchTreeEntry(new GUIContent(nameof(ValueNode))) { level = 2, userData = typeof(ValueNode) });

        //entries.Add(new SearchTreeGroupEntry(new GUIContent("Upload Node")) { level = 1 });
        //entries.Add(new SearchTreeEntry(new GUIContent(nameof(UploadNode))) { level = 2, userData = typeof(UploadNode) });

        return(entries);
    }
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            var tree = new List <SearchTreeEntry>();

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Create Node"), 0));

            Texture2D icon = EditorGUIUtility.FindTexture("cs Script Icon");

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Conditionals"), 1));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(StoryEventConditionNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(ItemInInventoryConditionNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(SelectedInventoryItemConditionNode)));

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Actions"), 1));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(WalkToNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(PickUpNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(DropNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(SetStoryEventNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(TriggerSceneNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(TriggerDialogNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(TriggerSingleLineNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(WaitSecondsNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(SetGameObjectActiveNode)));

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Animation"), 1));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(AnimTriggerNode)));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(SetAnimBooleanNode)));

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Debug"), 1));
            tree.Add(CreateSearchTreeEntry(icon, 2, typeof(PrintNode)));


            return(tree);
        }
Exemplo n.º 29
0
        public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            var nodeEntry = (NodeEntry)entry.userData;
            var node      = nodeEntry.node;

            var drawState = node.drawState;


            var windowRoot          = m_EditorWindow.rootVisualElement;
            var windowMousePosition = windowRoot.ChangeCoordinatesTo(windowRoot.parent, context.screenMousePosition - m_EditorWindow.position.position);
            var graphMousePosition  = m_GraphView.contentViewContainer.WorldToLocal(windowMousePosition);

            drawState.position = new Rect(graphMousePosition, Vector2.zero);
            node.drawState     = drawState;

            m_Graph.owner.RegisterCompleteObjectUndo("Add " + node.name);
            m_Graph.AddNode(node);

            if (connectedPort != null)
            {
                var connectedSlot           = connectedPort.slot;
                var connectedSlotReference  = connectedSlot.owner.GetSlotReference(connectedSlot.id);
                var compatibleSlotReference = node.GetSlotReference(nodeEntry.compatibleSlotId);

                var fromReference = connectedSlot.isOutputSlot ? connectedSlotReference : compatibleSlotReference;
                var toReference   = connectedSlot.isOutputSlot ? compatibleSlotReference : connectedSlotReference;
                m_Graph.Connect(fromReference, toReference);

                nodeNeedsRepositioning = true;
                targetSlotReference    = compatibleSlotReference;
                targetPosition         = graphMousePosition;
            }

            return(true);
        }
Exemplo n.º 30
0
        public List <SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
        {
            List <SearchTreeEntry> tree = new List <SearchTreeEntry>();

            tree.Add(new SearchTreeGroupEntry(new GUIContent("Create Node"), 0));
            tree.Add(new SearchTreeGroupEntry(new GUIContent(m_graphTypeMetadata.ActiveGraphType.Name + " Nodes"), 1));
            List <Type> nodeTypes = m_graphTypeMetadata.GetNodeTypesFromGraphType(m_graphTypeMetadata.ActiveGraphType);

            for (int i = 0; i < nodeTypes.Count; i++)
            {
                tree.Add(new SearchTreeEntry(new GUIContent(nodeTypes[i].Name))
                {
                    userData = nodeTypes[i],
                    level    = 2
                });
            }
            tree.Add(new SearchTreeGroupEntry(new GUIContent("Universal Nodes"), 1));
            for (int i = 0; i < m_graphTypeMetadata.UniversalNodeTypes.Count; i++)
            {
                tree.Add(new SearchTreeEntry(new GUIContent(m_graphTypeMetadata.UniversalNodeTypes[i].Name))
                {
                    userData = m_graphTypeMetadata.UniversalNodeTypes[i],
                    level    = 2
                });
            }
            return(tree);
        }