コード例 #1
0
        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;
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
            }
        }