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); }
public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context) { TargetParameter.BehaviorActionValue = (BehaviorAction)entry.userData; TargetParameter = null; return(true); }
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); }
public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context) { var rootElement = graphView.editorWindow.rootVisualElement; var worldPosition = rootElement.ChangeCoordinatesTo(rootElement.parent, context.screenMousePosition - graphView.editorWindow.position.position); var node = graphView.CreateNewNode((NodeEntry)entry.userData, graphView.contentViewContainer.WorldToLocal(worldPosition)); if (ConnectedPort != null) { Port other = ConnectedPort.direction == Direction.Input ? node.ChildrenPort : node.ParentPort; if (other != null) { //Disconnect old ports if necessary if (other.capacity == Port.Capacity.Single && other.connected) { graphView.DeleteElements(other.connections); } if (ConnectedPort.capacity == Port.Capacity.Single && ConnectedPort.connected) { graphView.DeleteElements(ConnectedPort.connections); } graphView.AddElement(ConnectedPort.ConnectTo(other)); //Connect ((TreeGraphNode)(ConnectedPort.direction == Direction.Input ? ConnectedPort : other).node).RecalculateOrder(); } ConnectedPort = null; } return(true); }
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 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); }
internal void AddToTree(List <SearchTreeEntry> tree) { SearchTreeEntry entry; // Add subgroups foreach (var group in Subgroups) { GUIContent content = new GUIContent(" " + group.Key, folderIcon); entry = new SearchTreeGroupEntry(content) { level = Depth }; tree.Add(entry); group.Value.AddToTree(tree); } // Add nodes foreach (var result in Results) { GUIContent content = new GUIContent(" " + result.Name); entry = new SearchTreeEntry(content) { level = Depth, userData = result }; tree.Add(entry); } }
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); }
// Spawning right node based on selection private bool CheckForNodeType(SearchTreeEntry searchTreeEntry, Vector2 pos) { switch (searchTreeEntry.userData) { case StartNode startNode: graphView.AddElement(graphView.CreateStartNode(pos)); return(true); case DialogueNode dialogueNode: graphView.AddElement(graphView.CreateDialogueNode(pos)); return(true); case EventNode eventNode: graphView.AddElement(graphView.CreateEventNode(pos)); return(true); case ItemCheckNode eventNode: graphView.AddElement(graphView.CreateItemCheckNode(pos)); return(true); case StatCheckNode statCheckNode: graphView.AddElement(graphView.CreateStatCheckNode(pos)); return(true); case EndNode endNode: graphView.AddElement(graphView.CreateEndNode(pos)); return(true); default: throw new IndexOutOfRangeException(); } }
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); } }
bool ISearchWindowProvider.OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context) { var type = searchTreeEntry.userData as System.Type; this.node.SetBehavior(type); return(true); }
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); }
public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context) { var type = (Type)searchTreeEntry.userData; _onSelect?.Invoke(type); return(true); }
private bool CheckForNodeType(SearchTreeEntry _searchTreeEntry, Vector2 _pos) { switch (_searchTreeEntry.userData) { case StartNode node: graphView.AddElement(graphView.CreateStartNode(_pos)); return(true); case DialogueNode node: graphView.AddElement(graphView.CreateDialogueNode(_pos)); return(true); case EventNode node: graphView.AddElement(graphView.CreateEventNode(_pos)); return(true); case EndNode node: graphView.AddElement(graphView.CreateEndNode(_pos)); return(true); case ScriptNode node: graphView.AddElement(graphView.CreateScriptNode(_pos)); return(true); default: break; } return(false); }
protected virtual void AddTreeEntry(List <SearchTreeEntry> entries, BetterSearchTree <T> tree, int level) { // Add Leaf element if (tree.IsLeaf) { var entry = new SearchTreeEntry(tree.label) { level = level, userData = tree.payload }; entries.Add(entry); } // Add Group else { var group = new SearchTreeGroupEntry(new GUIContent(tree.label.text), level); entries.Add(group); // Add children foreach (var child in tree.children) { AddTreeEntry(entries, child, level + 1); } } }
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); }
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); }
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 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); } } }
// 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); }
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 bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context) { Node node = null; switch (SearchTreeEntry.name) { case "Clip": node = new ClipNodeUI(); break; case "Layer Mixer": node = new LayerMixerNodeUI(); break; case "Mixer": node = new MixerNodeUI(); break; case "1D Blendspace": node = new Blendspace1DNodeUI(); break; case "2D Blendspace": node = new Blendspace2DNodeUI(); break; case "State Machine": node = new StateMachineNodeUI(); break; case "Wildcard": node = new WildcardNodeUI(); break; case "Output": node = new OutputNodeUI(); GraphView.OutputIndicatorNode = (OutputNodeUI)node; break; default: break; } if (node is BaseNodeUI baseNode) { baseNode.ID = Guid.NewGuid().ToString(); } GraphView.AddNode(node, context.screenMousePosition); return(true); }
public override bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context) { // checking type so we can support selecting registries as well if (entry.userData is UdonNodeDefinition definition && !_graphView.IsDuplicateEventNode(definition.fullName)) { _graphView.AddNodeFromSearch(definition, GetGraphPositionFromContext(context)); return(true); }
//作成ノードを追加する public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context) { var type = SearchTreeEntry.userData as System.Type; var node = Activator.CreateInstance(type) as GraphNodeExample; graphView.AddElement(node); return(true); }
bool ISearchWindowProvider.OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context) { var type = searchTreeEntry.userData as System.Type; var node = Activator.CreateInstance(type) as SampleNode; graphView.AddElement(node); return(true); }
public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context) { var mousePosition = window.rootVisualElement.ChangeCoordinatesTo(window.rootVisualElement.parent, context.screenMousePosition - window.position.position); onSelectEntry?.Invoke(searchTreeEntry.userData, mousePosition); return(true); }
public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context) { //Editor window-based mouse position var mousePosition = window.rootVisualElement.ChangeCoordinatesTo(window.rootVisualElement.parent, context.screenMousePosition - window.position.position); return(graphView.OnSelectEntry(searchTreeEntry, mousePosition)); }
public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context) { // var so = ScriptableObject.CreateInstance(SearchTreeEntry) var type = (Type)SearchTreeEntry.userData; _graphView.CreatedHandler(type, context.screenMousePosition); return(true); }
public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context) { var windowRoot = _window.rootVisualElement; var windowMousePosition = windowRoot.ChangeCoordinatesTo(windowRoot.parent, context.screenMousePosition - _window.position.position); var position = _graphView.contentViewContainer.WorldToLocal(windowMousePosition); _graphView.CreateNode(entry.userData as Type, position); return(true); }
override public bool OnSelectEntry(SearchTreeEntry entry, SearchWindowContext context) { if (_graphView == null) { return(false); } _graphView.AddNewVariable((string)entry.userData); return(true); }