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); } }
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); } }