visual_script_yield_nodes.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #ifndef VISUAL_SCRIPT_YIELD_NODES_H
  2. #define VISUAL_SCRIPT_YIELD_NODES_H
  3. #include "visual_script.h"
  4. class VisualScriptYield : public VisualScriptNode {
  5. OBJ_TYPE(VisualScriptYield,VisualScriptNode)
  6. public:
  7. enum YieldMode {
  8. YIELD_FRAME,
  9. YIELD_FIXED_FRAME,
  10. YIELD_WAIT
  11. };
  12. private:
  13. YieldMode yield_mode;
  14. float wait_time;
  15. protected:
  16. virtual void _validate_property(PropertyInfo& property) const;
  17. static void _bind_methods();
  18. public:
  19. virtual int get_output_sequence_port_count() const;
  20. virtual bool has_input_sequence_port() const;
  21. virtual String get_output_sequence_port_text(int p_port) const;
  22. virtual int get_input_value_port_count() const;
  23. virtual int get_output_value_port_count() const;
  24. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  25. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  26. virtual String get_caption() const;
  27. virtual String get_text() const;
  28. virtual String get_category() const { return "functions"; }
  29. void set_yield_mode(YieldMode p_mode);
  30. YieldMode get_yield_mode();
  31. void set_wait_time(float p_time);
  32. float get_wait_time();
  33. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  34. VisualScriptYield();
  35. };
  36. VARIANT_ENUM_CAST( VisualScriptYield::YieldMode )
  37. class VisualScriptYieldSignal : public VisualScriptNode {
  38. OBJ_TYPE(VisualScriptYieldSignal,VisualScriptNode)
  39. public:
  40. enum CallMode {
  41. CALL_MODE_SELF,
  42. CALL_MODE_NODE_PATH,
  43. CALL_MODE_INSTANCE,
  44. };
  45. private:
  46. CallMode call_mode;
  47. StringName base_type;
  48. NodePath base_path;
  49. StringName signal;
  50. Node *_get_base_node() const;
  51. StringName _get_base_type() const;
  52. protected:
  53. virtual void _validate_property(PropertyInfo& property) const;
  54. static void _bind_methods();
  55. public:
  56. virtual int get_output_sequence_port_count() const;
  57. virtual bool has_input_sequence_port() const;
  58. virtual String get_output_sequence_port_text(int p_port) const;
  59. virtual int get_input_value_port_count() const;
  60. virtual int get_output_value_port_count() const;
  61. virtual PropertyInfo get_input_value_port_info(int p_idx) const;
  62. virtual PropertyInfo get_output_value_port_info(int p_idx) const;
  63. virtual String get_caption() const;
  64. virtual String get_text() const;
  65. virtual String get_category() const { return "functions"; }
  66. void set_base_type(const StringName& p_type);
  67. StringName get_base_type() const;
  68. void set_signal(const StringName& p_type);
  69. StringName get_signal() const;
  70. void set_base_path(const NodePath& p_type);
  71. NodePath get_base_path() const;
  72. void set_call_mode(CallMode p_mode);
  73. CallMode get_call_mode() const;
  74. virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
  75. VisualScriptYieldSignal();
  76. };
  77. VARIANT_ENUM_CAST(VisualScriptYieldSignal::CallMode );
  78. void register_visual_script_yield_nodes();
  79. #endif // VISUAL_SCRIPT_YIELD_NODES_H