visual_script_flow_control.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. #ifndef VISUAL_SCRIPT_FLOW_CONTROL_H
  2. #define VISUAL_SCRIPT_FLOW_CONTROL_H
  3. #include "visual_script.h"
  4. class VisualScriptReturn : public VisualScriptNode {
  5. OBJ_TYPE(VisualScriptReturn,VisualScriptNode)
  6. Variant::Type type;
  7. bool with_value;
  8. protected:
  9. static void _bind_methods();
  10. public:
  11. virtual int get_output_sequence_port_count() const;
  12. virtual bool has_input_sequence_port() const;
  13. virtual String get_output_sequence_port_text(int p_port) const;
  14. virtual int get_input_value_port_count() const;
  15. virtual int get_output_value_port_count() const;
  16. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  17. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  18. virtual String get_caption() const;
  19. virtual String get_text() const;
  20. virtual String get_category() const { return "flow_control"; }
  21. void set_return_type(Variant::Type);
  22. Variant::Type get_return_type() const;
  23. void set_enable_return_value(bool p_enable);
  24. bool is_return_value_enabled() const;
  25. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  26. VisualScriptReturn();
  27. };
  28. class VisualScriptCondition : public VisualScriptNode {
  29. OBJ_TYPE(VisualScriptCondition,VisualScriptNode)
  30. protected:
  31. static void _bind_methods();
  32. public:
  33. virtual int get_output_sequence_port_count() const;
  34. virtual bool has_input_sequence_port() const;
  35. virtual String get_output_sequence_port_text(int p_port) const;
  36. virtual int get_input_value_port_count() const;
  37. virtual int get_output_value_port_count() const;
  38. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  39. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  40. virtual String get_caption() const;
  41. virtual String get_text() const;
  42. virtual String get_category() const { return "flow_control"; }
  43. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  44. VisualScriptCondition();
  45. };
  46. class VisualScriptWhile : public VisualScriptNode {
  47. OBJ_TYPE(VisualScriptWhile,VisualScriptNode)
  48. protected:
  49. static void _bind_methods();
  50. public:
  51. virtual int get_output_sequence_port_count() const;
  52. virtual bool has_input_sequence_port() const;
  53. virtual String get_output_sequence_port_text(int p_port) const;
  54. virtual int get_input_value_port_count() const;
  55. virtual int get_output_value_port_count() const;
  56. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  57. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  58. virtual String get_caption() const;
  59. virtual String get_text() const;
  60. virtual String get_category() const { return "flow_control"; }
  61. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  62. VisualScriptWhile();
  63. };
  64. class VisualScriptIterator : public VisualScriptNode {
  65. OBJ_TYPE(VisualScriptIterator,VisualScriptNode)
  66. protected:
  67. static void _bind_methods();
  68. public:
  69. virtual int get_output_sequence_port_count() const;
  70. virtual bool has_input_sequence_port() const;
  71. virtual String get_output_sequence_port_text(int p_port) const;
  72. virtual int get_input_value_port_count() const;
  73. virtual int get_output_value_port_count() const;
  74. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  75. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  76. virtual String get_caption() const;
  77. virtual String get_text() const;
  78. virtual String get_category() const { return "flow_control"; }
  79. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  80. VisualScriptIterator();
  81. };
  82. class VisualScriptSequence : public VisualScriptNode {
  83. OBJ_TYPE(VisualScriptSequence,VisualScriptNode)
  84. int steps;
  85. protected:
  86. static void _bind_methods();
  87. public:
  88. virtual int get_output_sequence_port_count() const;
  89. virtual bool has_input_sequence_port() const;
  90. virtual String get_output_sequence_port_text(int p_port) const;
  91. virtual int get_input_value_port_count() const;
  92. virtual int get_output_value_port_count() const;
  93. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  94. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  95. virtual String get_caption() const;
  96. virtual String get_text() const;
  97. virtual String get_category() const { return "flow_control"; }
  98. void set_steps(int p_steps);
  99. int get_steps() const;
  100. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  101. VisualScriptSequence();
  102. };
  103. class VisualScriptInputSelector : public VisualScriptNode {
  104. OBJ_TYPE(VisualScriptInputSelector,VisualScriptNode)
  105. protected:
  106. static void _bind_methods();
  107. public:
  108. virtual int get_output_sequence_port_count() const;
  109. virtual bool has_input_sequence_port() const;
  110. virtual String get_output_sequence_port_text(int p_port) const;
  111. virtual int get_input_value_port_count() const;
  112. virtual int get_output_value_port_count() const;
  113. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  114. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  115. virtual String get_caption() const;
  116. virtual String get_text() const;
  117. virtual String get_category() const { return "flow_control"; }
  118. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  119. VisualScriptInputSelector();
  120. };
  121. class VisualScriptInputFilter : public VisualScriptNode {
  122. OBJ_TYPE(VisualScriptInputFilter,VisualScriptNode)
  123. Vector<InputEvent> filters;
  124. protected:
  125. bool _set(const StringName& p_name, const Variant& p_value);
  126. bool _get(const StringName& p_name,Variant &r_ret) const;
  127. void _get_property_list( List<PropertyInfo> *p_list) const;
  128. public:
  129. virtual int get_output_sequence_port_count() const;
  130. virtual bool has_input_sequence_port() const;
  131. virtual String get_output_sequence_port_text(int p_port) const;
  132. virtual int get_input_value_port_count() const;
  133. virtual int get_output_value_port_count() const;
  134. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  135. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  136. virtual String get_caption() const;
  137. virtual String get_text() const;
  138. virtual String get_category() const { return "flow_control"; }
  139. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  140. VisualScriptInputFilter();
  141. };
  142. class VisualScriptTypeCast : public VisualScriptNode {
  143. OBJ_TYPE(VisualScriptTypeCast,VisualScriptNode)
  144. StringName base_type;
  145. String script;
  146. protected:
  147. static void _bind_methods();
  148. public:
  149. virtual int get_output_sequence_port_count() const;
  150. virtual bool has_input_sequence_port() const;
  151. virtual String get_output_sequence_port_text(int p_port) const;
  152. virtual int get_input_value_port_count() const;
  153. virtual int get_output_value_port_count() const;
  154. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  155. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  156. virtual String get_caption() const;
  157. virtual String get_text() const;
  158. virtual String get_category() const { return "flow_control"; }
  159. void set_base_type(const StringName& p_type);
  160. StringName get_base_type() const;
  161. void set_base_script(const String& p_path);
  162. String get_base_script() const;
  163. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  164. VisualScriptTypeCast();
  165. };
  166. void register_visual_script_flow_control_nodes();
  167. #endif // VISUAL_SCRIPT_FLOW_CONTROL_H