示例#1
0
 public void OnRegisterPorts()
 {
     on_enter = RegisterExitPort("Enter");
     on_stay  = RegisterExitPort("Stay");
     on_exit  = RegisterExitPort("Exit");
     RegisterOutputValue <Collision2D>("Collision2D", () => { return(collision); });
 }
示例#2
0
 public void OnRegisterDefaultPorts()
 {
     if (useOut)
     {
         output = RegisterExitPort("Out");
     }
 }
示例#3
0
        public void OnRegisterDefaultPorts()
        {
            if (reference)
            {
                this.title    = this.name = "{ " + string.Format("{0}", reference.title.IsNullOrEmpty() ? reference.name : reference.title) + " }";
                this.subtitle = reference.subtitle;
                macro         = this;

                input_node  = (InputNode)reference.graph.nodes.FirstOrDefault(n => n is InputNode);
                output_node = (OutputNode)reference.graph.nodes.FirstOrDefault(n => n is OutputNode);

                if (input_node)
                {
                    input_node.macro = this;
                    input            = RegisterEntryPort("In", OnExecute);
                }
                if (output_node)
                {
                    output_node.macro = this;
                    output            = RegisterExitPort("Out");
                }

                if (macro)
                {
                    if (input_node)
                    {
                        input_acts   = new List <InputAction>();
                        input_values = new Dictionary <int, IInputValue>();
                        foreach (Parameter parameter in reference.graph.inputParameters)
                        {
                            if (parameter is ParameterInput)
                            {
                                input_acts.Add(RegisterEntryPort(parameter.name, () => { Call(input_node.output_acts[parameter.id]); }));
                            }
                            else
                            {
                                input_values[parameter.id] = (IInputValue)RegisterInputValue(parameter.valueType, parameter.name);
                            }
                        }
                    }
                    if (output_node)
                    {
                        output_acts   = new Dictionary <int, OutputAction>();
                        output_values = new List <IOutputValue>();
                        foreach (Parameter parameter in reference.graph.outputParameters)
                        {
                            if (parameter is ParameterOutput)
                            {
                                output_acts[parameter.id] = RegisterExitPort(parameter.name);
                            }
                            else
                            {
                                output_values.Add((IOutputValue)RegisterOutputValue(parameter.valueType, parameter.name, () => { return(output_node.input_values[parameter.id].GetValue()); }));
                            }
                        }
                    }
                }
            }
        }
示例#4
0
        public void OnRegisterPorts()
        {
            input_value = RegisterInputValue <string>("Input");
            compare     = RegisterInputValue <string>("Compare With");

            on_equals     = RegisterExitPort("==");
            on_not_equals = RegisterExitPort("!=");
        }
示例#5
0
        public void OnRegisterPorts()
        {
            first_index = RegisterInputValue <int>("first index");
            last_index  = RegisterInputValue <int>("last index");

            on_loop = RegisterExitPort("Loop");
            RegisterOutputValue <int>("index", () => { return(index); });
        }
示例#6
0
        public void OnRegisterPorts()
        {
            list = RegisterInputValue <IEnumerable>("list");

            RegisterEntryPort("Break", () => { broken = true; });
            RegisterOutputValue <object>("current", () => { return(current); });
            on_loop = RegisterExitPort("Loop");
        }
示例#7
0
        public void OnRegisterPorts()
        {
            input_value = RegisterInputValue <string>("Input");
            compare     = RegisterInputValue <string>("Compare With");

            on_equals = RegisterExitPort("==");
            on_great  = RegisterExitPort(">");
            on_less   = RegisterExitPort("<");
        }
示例#8
0
        public void RegisterPort(string name)
        {
            OutputAction output = RegisterExitPort(name);

            if (m_outputs.Contains(output))
            {
                return;
            }
            m_outputs.Add(output);
        }
示例#9
0
 public void OnRegisterDefaultPorts()
 {
     if (useIn)
     {
         input = RegisterEntryPort("In", OnExecute);
     }
     if (useOut)
     {
         output = RegisterExitPort("Out");
     }
 }
示例#10
0
        public void OnRegisterDefaultPorts()
        {
            output = RegisterExitPort("Out");

            int id = 0;

            output_values = new List <IOutputValue>();
            output_acts   = new Dictionary <int, OutputAction>();
            foreach (Parameter parameter in graph.inputParameters)
            {
                if (parameter is ParameterInput)
                {
                    output_acts[parameter.id] = RegisterExitPort(parameter.name);
                }
                else
                {
                    output_values.Add((IOutputValue)RegisterOutputValue(parameter.valueType, parameter.name, () => { return(macro.input_values[parameter.id].GetValue()); }));
                }
            }
            id++;
        }
示例#11
0
 public void OnRegisterPorts()
 {
     on_true   = RegisterExitPort("True");
     on_false  = RegisterExitPort("False");
     condition = RegisterInputValue <bool>("condition");
 }
示例#12
0
 public void OnRegisterPorts()
 {
     reset        = RegisterEntryPort("Reset", Reset);
     on_completed = RegisterExitPort("Completed");
 }
示例#13
0
        public void SetMethod(MethodInfo method_info, params Type[] type_args)
        {
            if (method_info == null)
            {
#if UNITY_EDITOR
                node_color = Color.red;
                DisplayMessage("Missing Method", UnityEditor.MessageType.Error);
#endif
                Debug.LogError("type method_info is null!");
                return;
            }

            this.cached_method = method_info;

            if (type_args.IsNullOrEmpty())
            {
                this.serialized_method = this.serialized_method ?? new SerializedMethod(method_info);
            }
            else
            {
                this.serialized_method = this.serialized_method ?? new SerializedMethod(method_info, type_args);
            }

            string method_name = cached_method.Name;
            this.name = method_name;

            RegisterEntryPort("In", Execute);
            this.output = RegisterExitPort("Out");

            if (method_info.ReturnType != typeof(void))
            {
                RegisterOutputValue(method_info.ReturnType, "Get", Invoke);
            }
#if UNITY_EDITOR
            node_color = GUIReferrer.GetTypeColor(method_info.ReturnType);

            ObsoleteAttribute obsolete_flag = method_info.GetAttribute <ObsoleteAttribute>(false);
            if (obsolete_flag != null)
            {
                DisplayMessage(obsolete_flag.Message, UnityEditor.MessageType.Warning);
            }
#endif

            if (method_info.IsStatic)
            {
                this.target = null;
                string title = method_name;
                if (title.Contains("get_"))
                {
                    title = title.Replace("get_", string.Empty);
                }
                else if (title.Contains("set_"))
                {
                    title = title.Replace("set_", string.Empty);
                }
                this.title = title;
            }
            else
            {
                this.target = (IInputValue)RegisterInputValue(method_info.ReflectedType, "Target");
                string title = method_name;
                if (title.Contains("get_"))
                {
                    title = /*"[Get] " + */ title.Replace("get_", string.Empty).AddSpacesToSentence();
                }
                else if (title.Contains("set_"))
                {
                    title = /*"[Set] " + */ title.Replace("set_", string.Empty).AddSpacesToSentence();
                }
                this.title = title;
            }

            parameters = new List <IInputValue>();
            foreach (ParameterInfo parameter in method_info.GetParameters())
            {
                parameters.Add((IInputValue)RegisterInputValue(parameter.ParameterType, parameter.Name.AddSpacesToSentence()));
            }
        }
示例#14
0
 public void OnRegisterPorts()
 {
     condition = RegisterInputValue <bool>("condition");
     on_loop   = RegisterExitPort("Loop");
 }