visual_script_nodes.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. #ifndef VISUAL_SCRIPT_NODES_H
  2. #define VISUAL_SCRIPT_NODES_H
  3. #include "visual_script.h"
  4. class VisualScriptFunction : public VisualScriptNode {
  5. OBJ_TYPE(VisualScriptFunction,VisualScriptNode)
  6. struct Argument {
  7. String name;
  8. Variant::Type type;
  9. };
  10. Vector<Argument> arguments;
  11. protected:
  12. bool _set(const StringName& p_name, const Variant& p_value);
  13. bool _get(const StringName& p_name,Variant &r_ret) const;
  14. void _get_property_list( List<PropertyInfo> *p_list) const;
  15. public:
  16. virtual int get_output_sequence_port_count() const;
  17. virtual bool has_input_sequence_port() const;
  18. virtual String get_output_sequence_port_text(int p_port) const;
  19. virtual int get_input_value_port_count() const;
  20. virtual int get_output_value_port_count() const;
  21. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  22. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  23. virtual String get_caption() const;
  24. virtual String get_text() const;
  25. void add_argument(Variant::Type p_type,const String& p_name,int p_index=-1);
  26. void set_argument_type(int p_argidx,Variant::Type p_type);
  27. Variant::Type get_argument_type(int p_argidx) const;
  28. void set_argument_name(int p_argidx,const String& p_name);
  29. String get_argument_name(int p_argidx) const;
  30. void remove_argument(int p_argidx);
  31. int get_argument_count() const;
  32. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  33. VisualScriptFunction();
  34. };
  35. class VisualScriptOperator : public VisualScriptNode {
  36. OBJ_TYPE(VisualScriptOperator,VisualScriptNode)
  37. Variant::Operator op;
  38. protected:
  39. static void _bind_methods();
  40. public:
  41. virtual int get_output_sequence_port_count() const;
  42. virtual bool has_input_sequence_port() const;
  43. virtual String get_output_sequence_port_text(int p_port) const;
  44. virtual int get_input_value_port_count() const;
  45. virtual int get_output_value_port_count() const;
  46. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  47. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  48. virtual String get_caption() const;
  49. virtual String get_text() const;
  50. void set_operator(Variant::Operator p_op);
  51. Variant::Operator get_operator() const;
  52. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  53. VisualScriptOperator();
  54. };
  55. class VisualScriptVariable : public VisualScriptNode {
  56. OBJ_TYPE(VisualScriptVariable,VisualScriptNode)
  57. StringName variable;
  58. protected:
  59. virtual void _validate_property(PropertyInfo& property) const;
  60. static void _bind_methods();
  61. public:
  62. virtual int get_output_sequence_port_count() const;
  63. virtual bool has_input_sequence_port() const;
  64. virtual String get_output_sequence_port_text(int p_port) const;
  65. virtual int get_input_value_port_count() const;
  66. virtual int get_output_value_port_count() const;
  67. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  68. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  69. virtual String get_caption() const;
  70. virtual String get_text() const;
  71. void set_variable(StringName p_var);
  72. StringName get_variable() const;
  73. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  74. VisualScriptVariable();
  75. };
  76. class VisualScriptConstant : public VisualScriptNode {
  77. OBJ_TYPE(VisualScriptConstant,VisualScriptNode)
  78. Variant::Type type;
  79. Variant value;
  80. protected:
  81. virtual void _validate_property(PropertyInfo& property) const;
  82. static void _bind_methods();
  83. public:
  84. virtual int get_output_sequence_port_count() const;
  85. virtual bool has_input_sequence_port() const;
  86. virtual String get_output_sequence_port_text(int p_port) const;
  87. virtual int get_input_value_port_count() const;
  88. virtual int get_output_value_port_count() const;
  89. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  90. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  91. virtual String get_caption() const;
  92. virtual String get_text() const;
  93. void set_constant_type(Variant::Type p_type);
  94. Variant::Type get_constant_type() const;
  95. void set_constant_value(Variant p_value);
  96. Variant get_constant_value() const;
  97. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  98. VisualScriptConstant();
  99. };
  100. class VisualScriptIndexGet : public VisualScriptNode {
  101. OBJ_TYPE(VisualScriptIndexGet,VisualScriptNode)
  102. public:
  103. virtual int get_output_sequence_port_count() const;
  104. virtual bool has_input_sequence_port() const;
  105. virtual String get_output_sequence_port_text(int p_port) const;
  106. virtual int get_input_value_port_count() const;
  107. virtual int get_output_value_port_count() const;
  108. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  109. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  110. virtual String get_caption() const;
  111. virtual String get_text() const;
  112. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  113. VisualScriptIndexGet();
  114. };
  115. class VisualScriptIndexSet : public VisualScriptNode {
  116. OBJ_TYPE(VisualScriptIndexSet,VisualScriptNode)
  117. public:
  118. virtual int get_output_sequence_port_count() const;
  119. virtual bool has_input_sequence_port() const;
  120. virtual String get_output_sequence_port_text(int p_port) const;
  121. virtual int get_input_value_port_count() const;
  122. virtual int get_output_value_port_count() const;
  123. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  124. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  125. virtual String get_caption() const;
  126. virtual String get_text() const;
  127. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  128. VisualScriptIndexSet();
  129. };
  130. class VisualScriptGlobalConstant : public VisualScriptNode {
  131. OBJ_TYPE(VisualScriptGlobalConstant,VisualScriptNode)
  132. int index;
  133. static void _bind_methods();
  134. public:
  135. virtual int get_output_sequence_port_count() const;
  136. virtual bool has_input_sequence_port() const;
  137. virtual String get_output_sequence_port_text(int p_port) const;
  138. virtual int get_input_value_port_count() const;
  139. virtual int get_output_value_port_count() const;
  140. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  141. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  142. virtual String get_caption() const;
  143. virtual String get_text() const;
  144. void set_global_constant(int p_which);
  145. int get_global_constant();
  146. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  147. VisualScriptGlobalConstant();
  148. };
  149. class VisualScriptMathConstant : public VisualScriptNode {
  150. OBJ_TYPE(VisualScriptMathConstant,VisualScriptNode)
  151. public:
  152. enum MathConstant {
  153. MATH_CONSTANT_ONE,
  154. MATH_CONSTANT_PI,
  155. MATH_CONSTANT_2PI,
  156. MATH_CONSTANT_HALF_PI,
  157. MATH_CONSTANT_E,
  158. MATH_CONSTANT_SQRT2,
  159. MATH_CONSTANT_MAX,
  160. };
  161. private:
  162. static const char* const_name[MATH_CONSTANT_MAX];
  163. MathConstant constant;
  164. protected:
  165. static void _bind_methods();
  166. public:
  167. virtual int get_output_sequence_port_count() const;
  168. virtual bool has_input_sequence_port() const;
  169. virtual String get_output_sequence_port_text(int p_port) const;
  170. virtual int get_input_value_port_count() const;
  171. virtual int get_output_value_port_count() const;
  172. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  173. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  174. virtual String get_caption() const;
  175. virtual String get_text() const;
  176. void set_math_constant(MathConstant p_which);
  177. MathConstant get_math_constant();
  178. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  179. VisualScriptMathConstant();
  180. };
  181. VARIANT_ENUM_CAST( VisualScriptMathConstant::MathConstant )
  182. class VisualScriptEngineSingleton : public VisualScriptNode {
  183. OBJ_TYPE(VisualScriptEngineSingleton,VisualScriptNode)
  184. String singleton;
  185. static void _bind_methods();
  186. public:
  187. virtual int get_output_sequence_port_count() const;
  188. virtual bool has_input_sequence_port() const;
  189. virtual String get_output_sequence_port_text(int p_port) const;
  190. virtual int get_input_value_port_count() const;
  191. virtual int get_output_value_port_count() const;
  192. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  193. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  194. virtual String get_caption() const;
  195. virtual String get_text() const;
  196. void set_singleton(const String &p_string);
  197. String get_singleton();
  198. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  199. VisualScriptEngineSingleton();
  200. };
  201. class VisualScriptSceneNode : public VisualScriptNode {
  202. OBJ_TYPE(VisualScriptSceneNode,VisualScriptNode)
  203. NodePath path;
  204. protected:
  205. virtual void _validate_property(PropertyInfo& property) const;
  206. static void _bind_methods();
  207. public:
  208. virtual int get_output_sequence_port_count() const;
  209. virtual bool has_input_sequence_port() const;
  210. virtual String get_output_sequence_port_text(int p_port) const;
  211. virtual int get_input_value_port_count() const;
  212. virtual int get_output_value_port_count() const;
  213. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  214. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  215. virtual String get_caption() const;
  216. virtual String get_text() const;
  217. void set_node_path(const NodePath &p_path);
  218. NodePath get_node_path();
  219. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  220. VisualScriptSceneNode();
  221. };
  222. class VisualScriptSceneTree : public VisualScriptNode {
  223. OBJ_TYPE(VisualScriptSceneTree,VisualScriptNode)
  224. protected:
  225. virtual void _validate_property(PropertyInfo& property) const;
  226. static void _bind_methods();
  227. public:
  228. virtual int get_output_sequence_port_count() const;
  229. virtual bool has_input_sequence_port() const;
  230. virtual String get_output_sequence_port_text(int p_port) const;
  231. virtual int get_input_value_port_count() const;
  232. virtual int get_output_value_port_count() const;
  233. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  234. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  235. virtual String get_caption() const;
  236. virtual String get_text() const;
  237. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  238. VisualScriptSceneTree();
  239. };
  240. class VisualScriptResourcePath : public VisualScriptNode {
  241. OBJ_TYPE(VisualScriptResourcePath,VisualScriptNode)
  242. String path;
  243. protected:
  244. static void _bind_methods();
  245. public:
  246. virtual int get_output_sequence_port_count() const;
  247. virtual bool has_input_sequence_port() const;
  248. virtual String get_output_sequence_port_text(int p_port) const;
  249. virtual int get_input_value_port_count() const;
  250. virtual int get_output_value_port_count() const;
  251. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  252. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  253. virtual String get_caption() const;
  254. virtual String get_text() const;
  255. void set_resource_path(const String &p_path);
  256. String get_resource_path();
  257. virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
  258. VisualScriptResourcePath();
  259. };
  260. void register_visual_script_nodes();
  261. #endif // VISUAL_SCRIPT_NODES_H