diff options
Diffstat (limited to 'modules/visual_script/visual_script_nodes.h')
-rw-r--r-- | modules/visual_script/visual_script_nodes.h | 216 |
1 files changed, 201 insertions, 15 deletions
diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h index 6080050d78..50f61ecfcc 100644 --- a/modules/visual_script/visual_script_nodes.h +++ b/modules/visual_script/visual_script_nodes.h @@ -14,6 +14,11 @@ class VisualScriptFunction : public VisualScriptNode { }; Vector<Argument> arguments; + + bool stack_less; + int stack_size; + + protected: bool _set(const StringName& p_name, const Variant& p_value); @@ -38,6 +43,7 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "flow_control"; } void add_argument(Variant::Type p_type,const String& p_name,int p_index=-1); void set_argument_type(int p_argidx,Variant::Type p_type); @@ -47,7 +53,14 @@ public: void remove_argument(int p_argidx); int get_argument_count() const; - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + + void set_stack_less(bool p_enable); + bool is_stack_less() const; + + void set_stack_size(int p_size); + int get_stack_size() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptFunction(); }; @@ -80,19 +93,20 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "operators"; } void set_operator(Variant::Operator p_op); Variant::Operator get_operator() const; - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptOperator(); }; -class VisualScriptVariable : public VisualScriptNode { +class VisualScriptVariableGet : public VisualScriptNode { - OBJ_TYPE(VisualScriptVariable,VisualScriptNode) + OBJ_TYPE(VisualScriptVariableGet,VisualScriptNode) StringName variable; @@ -118,15 +132,56 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_variable(StringName p_var); StringName get_variable() const; - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); - VisualScriptVariable(); + VisualScriptVariableGet(); }; + +class VisualScriptVariableSet : public VisualScriptNode { + + OBJ_TYPE(VisualScriptVariableSet,VisualScriptNode) + + + StringName variable; +protected: + + virtual void _validate_property(PropertyInfo& property) const; + static void _bind_methods(); +public: + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "data"; } + + void set_variable(StringName p_var); + StringName get_variable() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptVariableSet(); +}; + + class VisualScriptConstant : public VisualScriptNode { OBJ_TYPE(VisualScriptConstant,VisualScriptNode) @@ -156,6 +211,7 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_constant_type(Variant::Type p_type); Variant::Type get_constant_type() const; @@ -163,7 +219,7 @@ public: void set_constant_value(Variant p_value); Variant get_constant_value() const; - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptConstant(); }; @@ -192,8 +248,9 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "operators"; } - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptIndexGet(); }; @@ -222,8 +279,9 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "operators"; } - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptIndexSet(); }; @@ -255,11 +313,12 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_global_constant(int p_which); int get_global_constant(); - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptGlobalConstant(); }; @@ -283,6 +342,7 @@ public: private: static const char* const_name[MATH_CONSTANT_MAX]; + static double const_value[MATH_CONSTANT_MAX]; MathConstant constant; protected: static void _bind_methods(); @@ -304,11 +364,12 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_math_constant(MathConstant p_which); MathConstant get_math_constant(); - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptMathConstant(); }; @@ -340,11 +401,12 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_singleton(const String &p_string); String get_singleton(); - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptEngineSingleton(); }; @@ -378,11 +440,12 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_node_path(const NodePath &p_path); NodePath get_node_path(); - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptSceneNode(); }; @@ -416,8 +479,9 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptSceneTree(); }; @@ -450,16 +514,138 @@ public: virtual String get_caption() const; virtual String get_text() const; + virtual String get_category() const { return "data"; } void set_resource_path(const String &p_path); String get_resource_path(); - virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance); + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptResourcePath(); }; +class VisualScriptSelf : public VisualScriptNode { + + OBJ_TYPE(VisualScriptSelf,VisualScriptNode) + + +protected: + + static void _bind_methods(); +public: + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "data"; } + + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptSelf(); +}; + + +class VisualScriptCustomNode: public VisualScriptNode { + + OBJ_TYPE(VisualScriptCustomNode,VisualScriptNode) + + +protected: + + virtual bool _use_builtin_script() const { return true; } + + static void _bind_methods(); +public: + + enum StartMode { //replicated for step + START_MODE_BEGIN_SEQUENCE, + START_MODE_CONTINUE_SEQUENCE, + START_MODE_RESUME_YIELD + }; + + enum { //replicated for step + STEP_SHIFT=1<<24, + STEP_MASK=STEP_SHIFT-1, + STEP_PUSH_STACK_BIT=STEP_SHIFT, //push bit to stack + STEP_GO_BACK_BIT=STEP_SHIFT<<1, //go back to previous node + STEP_NO_ADVANCE_BIT=STEP_SHIFT<<2, //do not advance past this node + STEP_EXIT_FUNCTION_BIT=STEP_SHIFT<<3, //return from function + STEP_YIELD_BIT=STEP_SHIFT<<4, //yield (will find VisualScriptFunctionState state in first working memory) + }; + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptCustomNode(); +}; + +class VisualScriptSubCall: public VisualScriptNode { + + OBJ_TYPE(VisualScriptSubCall,VisualScriptNode) + + +protected: + + virtual bool _use_builtin_script() const { return true; } + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptSubCall(); +}; + + void register_visual_script_nodes(); #endif // VISUAL_SCRIPT_NODES_H |