Exemplo n.º 1
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.º 2
0
        override public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context)
        {
            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);
                var position = GetGraphPositionFromContext(context);
                position.x -= 140; // this offset is added for the search window, remove it for the node
                node.SetPosition(new Rect(position, Vector2.zero));
                node.Select(_graphView, false);
                var collection = direction == Direction.Input ? node.portsIn : node.portsOut;
                var port       = collection.FirstOrDefault(p => p.Value.portType == typeToSearch).Value;
                if (port != null)
                {
                    var e = startingPort.ConnectTo(port);
                    _graphView.AddElement(e);
                }

                // Do we need to do this to reserialize, etc?
                _graphView.ReSerializeData();
                return(true);
            }
            else if (entry.userData is VariableInfo)
            {
                var data     = entry.userData as VariableInfo;
                var position = GetGraphPositionFromContext(context);
                position.x -= 140; // this offset is added for the search window, remove it for the node

                UdonNode udonNode = _graphView.MakeVariableNode(data.uid, position, data.isGetter);
                _graphView.AddElement(udonNode);
                var collection = direction == Direction.Input ? udonNode.portsIn : udonNode.portsOut;
                var port       = collection.First().Value;
                if (port != null)
                {
                    var e = startingPort.ConnectTo(port);
                    _graphView.AddElement(e);
                }
                _graphView.ReSerializeData();
                return(true);
            }
            else
            {
                return(false);
            }
        }