private void OnDrop(object e) { if (ScriptGraph == null) { return; } DragEventArgs args = (DragEventArgs)e; args.Effects = DragDropEffects.None; List <CNode> newNodes = new List <CNode>(); if (args.Data.GetDataPresent("klaxVariableEntry")) { CEntityVariableViewModel variableEntry = (CEntityVariableViewModel)args.Data.GetData("klaxVariableEntry"); NodeGraphView graphView = (NodeGraphView)Content; if (Keyboard.Modifiers.HasFlag(ModifierKeys.Control)) { newNodes.Add(new CGetKlaxVariableNode(variableEntry.Variable)); } else if (Keyboard.Modifiers.HasFlag(ModifierKeys.Alt)) { newNodes.Add(new CSetKlaxVariableNode(variableEntry.Variable)); } else { VariablePopup.IsVisible = true; VariablePopup.Position = graphView.GetPasteReferenceLocation(); VariablePopup.Variable = variableEntry; } } else if (args.Data.GetDataPresent("builderSceneComponent")) { CInspectorSceneComponentViewModel sceneComponentViewModel = (CInspectorSceneComponentViewModel)args.Data.GetData("builderSceneComponent"); newNodes.Add(new CComponentVariableNode(sceneComponentViewModel.ComponentId.GetComponent())); } else if (args.Data.GetDataPresent("builderEntityComponent")) { CInspectorEntityComponentViewModel entityComponentViewModel = (CInspectorEntityComponentViewModel)args.Data.GetData("builderEntityComponent"); newNodes.Add(new CComponentVariableNode(entityComponentViewModel.ComponentId.GetComponent())); } if (newNodes.Count > 0) { NodeGraphView graphView = (NodeGraphView)Content; AddNodesToGraph(newNodes, graphView.GetPasteReferenceLocation(), true); } args.Handled = true; }
private void AddInput(CKlaxVariable parameter, bool bIsNewParameter) { var newViewmodel = new CEntityVariableViewModel(parameter); var functionGraph = m_functionGraph; void Redo() { newViewmodel.PropertyChanged += OnParameterPropertyChanged; functionGraph.InputParameters.Add(parameter); InputParameters.Add(newViewmodel); functionGraph.RebuildFunctionNodes(); } void Undo() { newViewmodel.PropertyChanged -= OnParameterPropertyChanged; InputParameters.Remove(newViewmodel); functionGraph.InputParameters.Remove(parameter); functionGraph.RebuildFunctionNodes(); } newViewmodel.DeleteCommand = new CRelayCommand(arg => { Undo(); UndoRedoUtility.Record(new CRelayUndoItem(Redo, Undo)); }); if (bIsNewParameter) { Redo(); } else { newViewmodel.PropertyChanged += OnParameterPropertyChanged; InputParameters.Add(newViewmodel); } if (bIsNewParameter) { UndoRedoUtility.Record(new CRelayUndoItem(Undo, Redo)); } }
private void AddInput(CKlaxVariable parameter, bool bIsNewParameter) { var newViewmodel = new CEntityVariableViewModel(parameter); void Redo() { m_interfaceFunction.InputParameters.Add(parameter); InputParameters.Add(newViewmodel); } void Undo() { InputParameters.Remove(newViewmodel); m_interfaceFunction.InputParameters.Remove(parameter); } newViewmodel.DeleteCommand = new CRelayCommand(arg => { Undo(); UndoRedoUtility.Record(new CRelayUndoItem(Redo, Undo)); }); if (bIsNewParameter) { Redo(); } else { InputParameters.Add(newViewmodel); } if (bIsNewParameter) { UndoRedoUtility.Record(new CRelayUndoItem(Undo, Redo)); } }