示例#1
0
        private void OnAddInput(object e)
        {
            CKlaxVariable newInput = new CKlaxVariable()
            {
                Name  = "NewVariable",
                Type  = typeof(int),
                Value = 0
            };

            AddInput(newInput, true);
        }
        public CSetKlaxVariableNode(CKlaxVariable sourceVariable)
        {
            IsImplicit     = true;
            SourceVariable = sourceVariable;

            CExecutionPin inPin = new CExecutionPin("In");

            InExecutionPins.Add(inPin);

            CExecutionPin outPin = new CExecutionPin("Out");

            OutExecutionPins.Add(outPin);
        }
示例#3
0
        private void OnAddInput(object e)
        {
            if (m_functionGraph == null)
            {
                return;
            }

            CKlaxVariable newInput = new CKlaxVariable()
            {
                Name  = "NewVariable",
                Type  = typeof(int),
                Value = 0
            };

            AddInput(newInput, true);
        }
示例#4
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));
            }
        }
示例#5
0
        public void RebuildNode(List <CKlaxVariable> returnParameters)
        {
            // Adjust the nodes input pins to the new return parameters
            // Note the editor has to take care of adjusting pin connections
            if (returnParameters.Count >= InputPins.Count)
            {
                for (int i = 0; i < returnParameters.Count; i++)
                {
                    CKlaxVariable returnParameter = returnParameters[i];
                    if (InputPins.Count > i)
                    {
                        CInputPin pin = InputPins[i];
                        pin.Name = returnParameter.Name;
                        pin.Type = returnParameter.Type;
                    }
                    else
                    {
                        InputPins.Add(new CInputPin(returnParameter.Name, returnParameter.Type));
                    }
                }
            }
            else
            {
                for (int i = InputPins.Count - 1; i >= 0; i--)
                {
                    if (returnParameters.Count > i)
                    {
                        CKlaxVariable returnParameter = returnParameters[i];
                        CInputPin     pin             = InputPins[i];
                        pin.Name = returnParameter.Name;
                        pin.Type = returnParameter.Type;
                    }
                    else
                    {
                        InputPins.RemoveAt(i);
                    }
                }
            }

            RaiseNodeRebuildEvent();
        }
示例#6
0
 public void RebuildNode(List <CKlaxVariable> inputParameters)
 {
     // Adjust the nodes output pins to the new input parameters
     // Note the editor has to take care of adjusting pin connections
     if (inputParameters.Count >= OutputPins.Count)
     {
         for (int i = 0; i < inputParameters.Count; i++)
         {
             CKlaxVariable inputParameter = inputParameters[i];
             if (OutputPins.Count > i)
             {
                 COutputPin pin = OutputPins[i];
                 pin.Name = inputParameter.Name;
                 pin.Type = inputParameter.Type;
             }
             else
             {
                 OutputPins.Add(new COutputPin(inputParameter.Name, inputParameter.Type));
             }
         }
     }
     else
     {
         for (int i = OutputPins.Count - 1; i >= 0; i--)
         {
             if (inputParameters.Count > i)
             {
                 CKlaxVariable inputParameter = inputParameters[i];
                 COutputPin    pin            = OutputPins[i];
                 pin.Name = inputParameter.Name;
                 pin.Type = inputParameter.Type;
             }
             else
             {
                 OutputPins.RemoveAt(i);
             }
         }
     }
     RaiseNodeRebuildEvent();
 }
示例#7
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));
            }
        }
 public CGetKlaxVariableNode(CKlaxVariable sourceVariable)
 {
     IsImplicit     = true;
     SourceVariable = sourceVariable;
 }
        private void OnFunctionRebuilt()
        {
            // Input parameter rebuild
            if (m_targetFunction.InputParameters.Count > InputPins.Count)
            {
                for (int i = 0; i < m_targetFunction.InputParameters.Count; i++)
                {
                    CKlaxVariable inputParameter = m_targetFunction.InputParameters[i];
                    if (InputPins.Count > i)
                    {
                        InputPins[i].Type = inputParameter.Type;
                        InputPins[i].Name = inputParameter.Name;
                    }
                    else
                    {
                        InputPins.Add(new CInputPin(inputParameter.Name, inputParameter.Type));
                    }
                }
            }
            else
            {
                for (int i = InputPins.Count - 1; i >= 0; i--)
                {
                    if (m_targetFunction.InputParameters.Count > i)
                    {
                        CKlaxVariable inputParameter = m_targetFunction.InputParameters[i];
                        InputPins[i].Type = inputParameter.Type;
                        InputPins[i].Name = inputParameter.Name;
                    }
                    else
                    {
                        InputPins.RemoveAt(i);
                    }
                }
            }

            // Output parameter rebuild
            if (m_targetFunction.OutputParameters.Count > OutputPins.Count)
            {
                for (int i = 0; i < m_targetFunction.OutputParameters.Count; i++)
                {
                    CKlaxVariable outputParameter = m_targetFunction.OutputParameters[i];
                    if (OutputPins.Count > i)
                    {
                        OutputPins[i].Type = outputParameter.Type;
                        OutputPins[i].Name = outputParameter.Name;
                    }
                    else
                    {
                        OutputPins.Add(new COutputPin(outputParameter.Name, outputParameter.Type));
                    }
                }
            }
            else
            {
                for (int i = OutputPins.Count - 1; i >= 0; i--)
                {
                    if (m_targetFunction.OutputParameters.Count > i)
                    {
                        CKlaxVariable outputParameter = m_targetFunction.OutputParameters[i];
                        OutputPins[i].Type = outputParameter.Type;
                        OutputPins[i].Name = outputParameter.Name;
                    }
                    else
                    {
                        OutputPins.RemoveAt(i);
                    }
                }
            }
            RaiseNodeRebuildEvent();
        }