public CExecuteCustomFunctionNode(CCustomFunctionGraph functionGraph)
        {
            TargetFunctionGuid = functionGraph.Guid;

            Name = functionGraph.Name;

            CExecutionPin inPin = new CExecutionPin("In");

            InExecutionPins.Add(inPin);

            CExecutionPin execPin = new CExecutionPin("Next");

            OutExecutionPins.Add(execPin);

            foreach (var inputParameter in functionGraph.InputParameters)
            {
                CInputPin input = new CInputPin(inputParameter.Name, inputParameter.Type);
                InputPins.Add(input);
            }

            foreach (var returnParameter in functionGraph.OutputParameters)
            {
                COutputPin output = new COutputPin(returnParameter.Name, returnParameter.Type);
                OutputPins.Add(output);
            }
        }
        public CExecuteInterfaceFunctionNode(CKlaxScriptInterfaceFunction targetFunction)
        {
            TargetFunctionGuid = targetFunction.Guid;

            Name = targetFunction.Name;

            CExecutionPin inPin = new CExecutionPin("In");

            InExecutionPins.Add(inPin);

            CExecutionPin execPin = new CExecutionPin("Next");

            OutExecutionPins.Add(execPin);

            CInputPin targetInput = new CInputPin("Target", typeof(CEntity));

            InputPins.Add(targetInput);

            foreach (var inputParameter in targetFunction.InputParameters)
            {
                CInputPin input = new CInputPin(inputParameter.Name, inputParameter.Type);
                InputPins.Add(input);
            }

            foreach (var returnParameter in targetFunction.OutputParameters)
            {
                COutputPin output = new COutputPin(returnParameter.Name, returnParameter.Type);
                OutputPins.Add(output);
            }
        }
Пример #3
0
        protected override void OnSourceVariableChanged()
        {
            OutputPins.Clear();

            Name = "Get " + SourceVariable.Name;

            COutputPin output = new COutputPin(SourceVariable.Name, SourceVariable.Type);

            OutputPins.Add(output);
        }
        public CComponentVariableNode(CEntityComponent targetComponent)
        {
            IsImplicit = true;

            Name = "Get " + targetComponent.Name;
            ComponentTargetGuid = targetComponent.ComponentGuid;

            COutputPin output = new COutputPin(targetComponent.Name, targetComponent.GetType());

            OutputPins.Add(output);
        }
Пример #5
0
        public CImplicitCastNode()
        {
            IsImplicit = true;

            COutputPin successOutput = new COutputPin
            {
                Name = "Success",
                Type = typeof(bool)
            };

            OutputPins.Add(successOutput);
        }
Пример #6
0
        protected override void OnSourceVariableChanged()
        {
            OutputPins.Clear();
            InputPins.Clear();

            Name = "Set " + SourceVariable.Name;

            CInputPin input = new CInputPin(SourceVariable.Name, SourceVariable.Type);

            InputPins.Add(input);

            COutputPin output = new COutputPin("NewValue", SourceVariable.Type);

            OutputPins.Add(output);
        }
Пример #7
0
        public CFunctionGraphEntryNode(List <CKlaxVariable> inputParameters)
        {
            AllowDelete = false;
            AllowCopy   = false;

            Name = "Entry";

            CExecutionPin execPin = new CExecutionPin("Next");

            OutExecutionPins.Add(execPin);

            foreach (var inputParameter in inputParameters)
            {
                COutputPin output = new COutputPin(inputParameter.Name, inputParameter.Type);
                OutputPins.Add(output);
            }
        }
Пример #8
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();
 }
Пример #9
0
        public CBaseCastNode()
        {
            Name = "Cast";

            CInputPin targetTypeInput = new CInputPin
            {
                Name                 = "Target Type",
                Type                 = typeof(CKlaxScriptTypeInfo),
                Literal              = null,
                SourceNode           = null,
                SourceParameterIndex = -1,
                StackIndex           = -1
            };

            InputPins.Add(targetTypeInput);

            CInputPin targetObjectInput = new CInputPin
            {
                Name                 = "Target",
                Type                 = typeof(object),
                Literal              = null,
                SourceNode           = null,
                SourceParameterIndex = -1,
                StackIndex           = -1
            };

            InputPins.Add(targetObjectInput);

            COutputPin convertedObjectOutput = new COutputPin
            {
                Name = "Result",
                Type = typeof(object)
            };

            OutputPins.Add(convertedObjectOutput);
        }
Пример #10
0
 public COutputPinViewModel(COutputPin outputPin, CScriptNodeViewmodel nodeViewModel, int pinIndex) : base(nodeViewModel, pinIndex)
 {
     m_pin     = outputPin;
     Name      = outputPin.Name;
     ValueType = outputPin.Type;
 }
Пример #11
0
        private void OnTargetEventChanged()
        {
            if (TargetKlaxEvent == null)
            {
                throw new NullReferenceException("Target event cannot be null");
            }

            Name = TargetKlaxEvent.displayName ?? TargetKlaxEvent.klaxEventInfo.Name;

            Type eventType = TargetKlaxEvent.klaxEventInfo.FieldType;

            for (var i = 0; i < eventType.GenericTypeArguments.Length; i++)
            {
                Type   genericTypeArgument = eventType.GenericTypeArguments[i];
                string displayName         = genericTypeArgument.Name;
                switch (i)
                {
                case 0:
                    displayName = TargetKlaxEvent.ParameterName1 ?? displayName;
                    break;

                case 1:
                    displayName = TargetKlaxEvent.ParameterName2 ?? displayName;
                    break;

                case 2:
                    displayName = TargetKlaxEvent.ParameterName3 ?? displayName;
                    break;

                case 3:
                    displayName = TargetKlaxEvent.ParameterName4 ?? displayName;
                    break;

                case 4:
                    displayName = TargetKlaxEvent.ParameterName5 ?? displayName;
                    break;

                case 5:
                    displayName = TargetKlaxEvent.ParameterName6 ?? displayName;
                    break;

                case 6:
                    displayName = TargetKlaxEvent.ParameterName7 ?? displayName;
                    break;

                case 7:
                    displayName = TargetKlaxEvent.ParameterName8 ?? displayName;
                    break;

                case 8:
                    displayName = TargetKlaxEvent.ParameterName9 ?? displayName;
                    break;

                case 9:
                    displayName = TargetKlaxEvent.ParameterName10 ?? displayName;
                    break;
                }

                COutputPin output = new COutputPin()
                {
                    Name = displayName,
                    Type = genericTypeArgument,
                };

                OutputPins.Add(output);
            }
        }
Пример #12
0
 public override void OnInputConnectionChanged(CNodeChangeContext context, CInputPin pin, COutputPin otherpin)
 {
     if (otherpin == null)
     {
         ChangePinType(context, OutputPins[1], typeof(object));
     }
     else
     {
         Type type = otherpin.Type;
         if (type.IsGenericType)
         {
             if (type.GetGenericTypeDefinition() == typeof(List <>))
             {
                 Type outputType = type.GenericTypeArguments[0];
                 if (outputType != OutputPins[1].Type)
                 {
                     ChangePinType(context, OutputPins[1], outputType);
                 }
             }
         }
     }
 }
        public void OnNodeRebuilt()
        {
            if (m_inputPins.Count <= ScriptNode.InputPins.Count)
            {
                for (int i = 0; i < ScriptNode.InputPins.Count; i++)
                {
                    CInputPin scriptInput = ScriptNode.InputPins[i];
                    if (m_inputPins.Count > i)
                    {
                        CInputPinViewModel inputViewModel = m_inputPins[i];
                        inputViewModel.Name = scriptInput.Name;
                        if (inputViewModel.ValueType != scriptInput.Type)
                        {
                            inputViewModel.ValueType = scriptInput.Type;
                            inputViewModel.Literal   = scriptInput.Type.IsValueType ? Activator.CreateInstance(scriptInput.Type) : null;
                        }
                    }
                    else
                    {
                        m_inputPins.Add(new CInputPinViewModel(scriptInput, this, i));
                    }
                }
            }
            else
            {
                for (int i = m_inputPins.Count - 1; i >= 0; i--)
                {
                    if (ScriptNode.InputPins.Count > i)
                    {
                        CInputPin          scriptInput    = ScriptNode.InputPins[i];
                        CInputPinViewModel inputViewModel = m_inputPins[i];
                        inputViewModel.Name = scriptInput.Name;
                        if (inputViewModel.ValueType != scriptInput.Type)
                        {
                            inputViewModel.ValueType = scriptInput.Type;
                            inputViewModel.Literal   = scriptInput.Type.IsValueType ? Activator.CreateInstance(scriptInput.Type) : null;
                        }
                    }
                    else
                    {
                        m_inputPins[i].DisconnectAll();
                        m_inputPins.RemoveAt(i);
                    }
                }
            }

            if (m_outputPins.Count <= ScriptNode.OutputPins.Count)
            {
                for (int i = 0; i < ScriptNode.OutputPins.Count; i++)
                {
                    COutputPin scriptOutput = ScriptNode.OutputPins[i];
                    if (m_outputPins.Count > i)
                    {
                        COutputPinViewModel outputViewModel = m_outputPins[i];
                        outputViewModel.Name      = scriptOutput.Name;
                        outputViewModel.ValueType = scriptOutput.Type;
                    }
                    else
                    {
                        m_outputPins.Add(new COutputPinViewModel(scriptOutput, this, i));
                    }
                }
            }
            else
            {
                for (int i = m_outputPins.Count - 1; i >= 0; i--)
                {
                    if (ScriptNode.OutputPins.Count > i)
                    {
                        COutputPin          scriptOutput    = ScriptNode.OutputPins[i];
                        COutputPinViewModel outputViewModel = m_outputPins[i];
                        outputViewModel.Name      = scriptOutput.Name;
                        outputViewModel.ValueType = scriptOutput.Type;
                    }
                    else
                    {
                        m_outputPins[i].DisconnectAll();
                        m_outputPins.RemoveAt(i);
                    }
                }
            }
        }