A Whole New World (clang-format edition)

I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?

I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon

A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format

A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
This commit is contained in:
Rémi Verschelde
2017-03-05 16:44:50 +01:00
parent 4ac67c3c30
commit cf1590bb62
17 changed files with 5656 additions and 7136 deletions

View File

@@ -28,23 +28,21 @@
/*************************************************************************/
#include "register_types.h"
#include "visual_script.h"
#include "visual_script_editor.h"
#include "io/resource_loader.h"
#include "visual_script_nodes.h"
#include "visual_script_func_nodes.h"
#include "visual_script.h"
#include "visual_script_builtin_funcs.h"
#include "visual_script_flow_control.h"
#include "visual_script_yield_nodes.h"
#include "visual_script_editor.h"
#include "visual_script_expression.h"
#include "visual_script_flow_control.h"
#include "visual_script_func_nodes.h"
#include "visual_script_nodes.h"
#include "visual_script_yield_nodes.h"
VisualScriptLanguage *visual_script_language=NULL;
VisualScriptLanguage *visual_script_language = NULL;
void register_visual_script_types() {
visual_script_language=memnew( VisualScriptLanguage );
visual_script_language = memnew(VisualScriptLanguage);
//script_language_gd->init();
ScriptServer::register_language(visual_script_language);
@@ -78,7 +76,6 @@ void register_visual_script_types() {
ClassDB::register_class<VisualScriptPreload>();
ClassDB::register_class<VisualScriptTypeCast>();
ClassDB::register_class<VisualScriptFunctionCall>();
ClassDB::register_class<VisualScriptPropertySet>();
ClassDB::register_class<VisualScriptPropertyGet>();
@@ -91,14 +88,13 @@ void register_visual_script_types() {
ClassDB::register_class<VisualScriptIterator>();
ClassDB::register_class<VisualScriptSequence>();
ClassDB::register_class<VisualScriptInputFilter>();
ClassDB::register_class<VisualScriptSwitch >();
ClassDB::register_class<VisualScriptSwitch>();
ClassDB::register_class<VisualScriptYield>();
ClassDB::register_class<VisualScriptYieldSignal>();
ClassDB::register_class<VisualScriptBuiltinFunc>();
ClassDB::register_class<VisualScriptExpression>();
register_visual_script_nodes();
@@ -111,13 +107,10 @@ void register_visual_script_types() {
#ifdef TOOLS_ENABLED
VisualScriptEditor::register_editor();
#endif
}
void unregister_visual_script_types() {
unregister_visual_script_nodes();
ScriptServer::unregister_language(visual_script_language);
@@ -126,6 +119,5 @@ void unregister_visual_script_types() {
VisualScriptEditor::free_clipboard();
#endif
if (visual_script_language)
memdelete( visual_script_language );
memdelete(visual_script_language);
}

File diff suppressed because it is too large Load Diff

View File

@@ -29,19 +29,19 @@
#ifndef VSCRIPT_H
#define VSCRIPT_H
#include "script_language.h"
#include "os/thread.h"
#include "script_language.h"
class VisualScriptInstance;
class VisualScriptNodeInstance;
class VisualScript;
class VisualScriptNode : public Resource {
GDCLASS(VisualScriptNode,Resource)
GDCLASS(VisualScriptNode, Resource)
friend class VisualScript;
friend class VisualScript;
Set<VisualScript*> scripts_used;
Set<VisualScript *> scripts_used;
Array default_input_values;
bool breakpoint;
@@ -50,41 +50,40 @@ friend class VisualScript;
Array _get_default_input_values() const;
void validate_input_default_values();
protected:
protected:
void _notification(int p_what);
void ports_changed_notify();
static void _bind_methods();
public:
public:
Ref<VisualScript> get_visual_script() const;
virtual int get_output_sequence_port_count() const=0;
virtual bool has_input_sequence_port() const=0;
virtual int get_output_sequence_port_count() const = 0;
virtual bool has_input_sequence_port() const = 0;
virtual String get_output_sequence_port_text(int p_port) const=0;
virtual String get_output_sequence_port_text(int p_port) const = 0;
virtual bool has_mixed_input_and_sequence_ports() const { return false; }
virtual int get_input_value_port_count() const=0;
virtual int get_output_value_port_count() const=0;
virtual int get_input_value_port_count() const = 0;
virtual int get_output_value_port_count() const = 0;
virtual PropertyInfo get_input_value_port_info(int p_idx) const = 0;
virtual PropertyInfo get_output_value_port_info(int p_idx) const = 0;
virtual PropertyInfo get_input_value_port_info(int p_idx) const=0;
virtual PropertyInfo get_output_value_port_info(int p_idx) const=0;
void set_default_input_value(int p_port,const Variant& p_value);
void set_default_input_value(int p_port, const Variant &p_value);
Variant get_default_input_value(int p_port) const;
virtual String get_caption() const=0;
virtual String get_text() const=0;
virtual String get_category() const=0;
virtual String get_caption() const = 0;
virtual String get_text() const = 0;
virtual String get_category() const = 0;
//used by editor, this is not really saved
void set_breakpoint(bool p_breakpoint);
bool is_breakpoint() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance)=0;
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance) = 0;
struct TypeGuess {
@@ -93,32 +92,32 @@ public:
StringName GDCLASS;
Ref<Script> script;
TypeGuess() { type=Variant::NIL; ev_type=InputEvent::NONE; }
TypeGuess() {
type = Variant::NIL;
ev_type = InputEvent::NONE;
}
};
virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const;
virtual TypeGuess guess_output_type(TypeGuess *p_inputs, int p_output) const;
VisualScriptNode();
};
class VisualScriptNodeInstance {
friend class VisualScriptInstance;
friend class VisualScriptLanguage; //for debugger
friend class VisualScriptInstance;
friend class VisualScriptLanguage; //for debugger
enum { //input argument addressing
INPUT_SHIFT=1<<24,
INPUT_MASK=INPUT_SHIFT-1,
INPUT_DEFAULT_VALUE_BIT=INPUT_SHIFT, // from unassigned input port, using default value (edited by user)
INPUT_SHIFT = 1 << 24,
INPUT_MASK = INPUT_SHIFT - 1,
INPUT_DEFAULT_VALUE_BIT = INPUT_SHIFT, // from unassigned input port, using default value (edited by user)
};
int id;
int sequence_index;
VisualScriptNodeInstance **sequence_outputs;
int sequence_output_count;
Vector<VisualScriptNodeInstance*> dependencies;
Vector<VisualScriptNodeInstance *> dependencies;
int *input_ports;
int input_port_count;
int *output_ports;
@@ -129,7 +128,6 @@ friend class VisualScriptLanguage; //for debugger
VisualScriptNode *base;
public:
enum StartMode {
START_MODE_BEGIN_SEQUENCE,
START_MODE_CONTINUE_SEQUENCE,
@@ -137,44 +135,42 @@ public:
};
enum {
STEP_SHIFT=1<<24,
STEP_MASK=STEP_SHIFT-1,
STEP_FLAG_PUSH_STACK_BIT=STEP_SHIFT, //push bit to stack
STEP_FLAG_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)
STEP_SHIFT = 1 << 24,
STEP_MASK = STEP_SHIFT - 1,
STEP_FLAG_PUSH_STACK_BIT = STEP_SHIFT, //push bit to stack
STEP_FLAG_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)
FLOW_STACK_PUSHED_BIT=1<<30, //in flow stack, means bit was pushed (must go back here if end of sequence)
FLOW_STACK_MASK=FLOW_STACK_PUSHED_BIT-1
FLOW_STACK_PUSHED_BIT = 1 << 30, //in flow stack, means bit was pushed (must go back here if end of sequence)
FLOW_STACK_MASK = FLOW_STACK_PUSHED_BIT - 1
};
_FORCE_INLINE_ int get_input_port_count() const { return input_port_count; }
_FORCE_INLINE_ int get_output_port_count() const { return output_port_count; }
_FORCE_INLINE_ int get_sequence_output_count() const { return sequence_output_count; }
_FORCE_INLINE_ int get_input_port_count() const { return input_port_count; }
_FORCE_INLINE_ int get_output_port_count() const { return output_port_count; }
_FORCE_INLINE_ int get_sequence_output_count() const { return sequence_output_count; }
_FORCE_INLINE_ int get_id() const { return id; }
_FORCE_INLINE_ int get_id() const { return id; }
virtual int get_working_memory_size() const { return 0; }
virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str)=0; //do a step, return which sequence port to go out
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Variant::CallError &r_error, String &r_error_str) = 0; //do a step, return which sequence port to go out
Ref<VisualScriptNode> get_base_node() { return Ref<VisualScriptNode>( base ); }
Ref<VisualScriptNode> get_base_node() { return Ref<VisualScriptNode>(base); }
VisualScriptNodeInstance();
virtual ~VisualScriptNodeInstance();
};
class VisualScript : public Script {
GDCLASS( VisualScript, Script )
GDCLASS(VisualScript, Script)
RES_BASE_EXTENSION("vs");
public:
struct SequenceConnection {
union {
@@ -187,9 +183,9 @@ public:
uint64_t id;
};
bool operator<(const SequenceConnection& p_connection) const {
bool operator<(const SequenceConnection &p_connection) const {
return id<p_connection.id;
return id < p_connection.id;
}
};
@@ -206,15 +202,14 @@ public:
uint64_t id;
};
bool operator<(const DataConnection& p_connection) const {
bool operator<(const DataConnection &p_connection) const {
return id<p_connection.id;
return id < p_connection.id;
}
};
private:
friend class VisualScriptInstance;
friend class VisualScriptInstance;
StringName base_type;
struct Argument {
@@ -228,7 +223,7 @@ friend class VisualScriptInstance;
Ref<VisualScriptNode> node;
};
Map<int,NodeData> nodes;
Map<int, NodeData> nodes;
Set<SequenceConnection> sequence_connections;
@@ -238,9 +233,7 @@ friend class VisualScriptInstance;
Vector2 scroll;
Function() { function_id=-1; }
Function() { function_id = -1; }
};
struct Variable {
@@ -249,109 +242,101 @@ friend class VisualScriptInstance;
bool _export;
};
Map<StringName, Function> functions;
Map<StringName, Variable> variables;
Map<StringName, Vector<Argument> > custom_signals;
Map<StringName,Function> functions;
Map<StringName,Variable> variables;
Map<StringName,Vector<Argument> > custom_signals;
Map<Object*,VisualScriptInstance*> instances;
Map<Object *, VisualScriptInstance *> instances;
#ifdef TOOLS_ENABLED
Set<PlaceHolderScriptInstance*> placeholders;
Set<PlaceHolderScriptInstance *> placeholders;
//void _update_placeholder(PlaceHolderScriptInstance *p_placeholder);
virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder);
void _update_placeholders();
#endif
void _set_variable_info(const StringName& p_name,const Dictionary& p_info);
Dictionary _get_variable_info(const StringName& p_name) const;
void _set_variable_info(const StringName &p_name, const Dictionary &p_info);
Dictionary _get_variable_info(const StringName &p_name) const;
void _set_data(const Dictionary& p_data);
void _set_data(const Dictionary &p_data);
Dictionary _get_data() const;
protected:
void _node_ports_changed(int p_id);
static void _bind_methods();
public:
void add_function(const StringName& p_name);
bool has_function(const StringName& p_name) const;
void remove_function(const StringName& p_name);
void rename_function(const StringName& p_name,const StringName& p_new_name);
void set_function_scroll(const StringName& p_name, const Vector2& p_scroll);
Vector2 get_function_scroll(const StringName& p_name) const;
void add_function(const StringName &p_name);
bool has_function(const StringName &p_name) const;
void remove_function(const StringName &p_name);
void rename_function(const StringName &p_name, const StringName &p_new_name);
void set_function_scroll(const StringName &p_name, const Vector2 &p_scroll);
Vector2 get_function_scroll(const StringName &p_name) const;
void get_function_list(List<StringName> *r_functions) const;
int get_function_node_id(const StringName& p_name) const;
int get_function_node_id(const StringName &p_name) const;
void add_node(const StringName &p_func, int p_id, const Ref<VisualScriptNode> &p_node, const Point2 &p_pos = Point2());
void remove_node(const StringName &p_func, int p_id);
bool has_node(const StringName &p_func, int p_id) const;
Ref<VisualScriptNode> get_node(const StringName &p_func, int p_id) const;
void set_node_pos(const StringName &p_func, int p_id, const Point2 &p_pos);
Point2 get_node_pos(const StringName &p_func, int p_id) const;
void get_node_list(const StringName &p_func, List<int> *r_nodes) const;
void add_node(const StringName& p_func,int p_id,const Ref<VisualScriptNode>& p_node,const Point2& p_pos=Point2());
void remove_node(const StringName& p_func,int p_id);
bool has_node(const StringName& p_func,int p_id) const;
Ref<VisualScriptNode> get_node(const StringName& p_func,int p_id) const;
void set_node_pos(const StringName& p_func,int p_id,const Point2& p_pos);
Point2 get_node_pos(const StringName& p_func,int p_id) const;
void get_node_list(const StringName& p_func,List<int> *r_nodes) const;
void sequence_connect(const StringName &p_func, int p_from_node, int p_from_output, int p_to_node);
void sequence_disconnect(const StringName &p_func, int p_from_node, int p_from_output, int p_to_node);
bool has_sequence_connection(const StringName &p_func, int p_from_node, int p_from_output, int p_to_node) const;
void get_sequence_connection_list(const StringName &p_func, List<SequenceConnection> *r_connection) const;
void sequence_connect(const StringName& p_func,int p_from_node,int p_from_output,int p_to_node);
void sequence_disconnect(const StringName& p_func,int p_from_node,int p_from_output,int p_to_node);
bool has_sequence_connection(const StringName& p_func,int p_from_node,int p_from_output,int p_to_node) const;
void get_sequence_connection_list(const StringName& p_func,List<SequenceConnection> *r_connection) const;
void data_connect(const StringName &p_func, int p_from_node, int p_from_port, int p_to_node, int p_to_port);
void data_disconnect(const StringName &p_func, int p_from_node, int p_from_port, int p_to_node, int p_to_port);
bool has_data_connection(const StringName &p_func, int p_from_node, int p_from_port, int p_to_node, int p_to_port) const;
void get_data_connection_list(const StringName &p_func, List<DataConnection> *r_connection) const;
bool is_input_value_port_connected(const StringName &p_name, int p_node, int p_port) const;
bool get_input_value_port_connection_source(const StringName &p_name, int p_node, int p_port, int *r_node, int *r_port) const;
void data_connect(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port);
void data_disconnect(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port);
bool has_data_connection(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port) const;
void get_data_connection_list(const StringName& p_func,List<DataConnection> *r_connection) const;
bool is_input_value_port_connected(const StringName& p_name,int p_node,int p_port) const;
bool get_input_value_port_connection_source(const StringName& p_name,int p_node,int p_port,int *r_node,int *r_port) const;
void add_variable(const StringName& p_name,const Variant& p_default_value=Variant(),bool p_export=false);
bool has_variable(const StringName& p_name) const;
void remove_variable(const StringName& p_name);
void set_variable_default_value(const StringName& p_name,const Variant& p_value);
Variant get_variable_default_value(const StringName& p_name) const;
void set_variable_info(const StringName& p_name,const PropertyInfo& p_info);
PropertyInfo get_variable_info(const StringName& p_name) const;
void set_variable_export(const StringName& p_name,bool p_export);
bool get_variable_export(const StringName& p_name) const;
void add_variable(const StringName &p_name, const Variant &p_default_value = Variant(), bool p_export = false);
bool has_variable(const StringName &p_name) const;
void remove_variable(const StringName &p_name);
void set_variable_default_value(const StringName &p_name, const Variant &p_value);
Variant get_variable_default_value(const StringName &p_name) const;
void set_variable_info(const StringName &p_name, const PropertyInfo &p_info);
PropertyInfo get_variable_info(const StringName &p_name) const;
void set_variable_export(const StringName &p_name, bool p_export);
bool get_variable_export(const StringName &p_name) const;
void get_variable_list(List<StringName> *r_variables) const;
void rename_variable(const StringName& p_name,const StringName& p_new_name);
void rename_variable(const StringName &p_name, const StringName &p_new_name);
void add_custom_signal(const StringName& p_name);
bool has_custom_signal(const StringName& p_name) const;
void custom_signal_add_argument(const StringName& p_func,Variant::Type p_type,const String& p_name,int p_index=-1);
void custom_signal_set_argument_type(const StringName& p_func,int p_argidx,Variant::Type p_type);
Variant::Type custom_signal_get_argument_type(const StringName& p_func,int p_argidx) const;
void custom_signal_set_argument_name(const StringName& p_func,int p_argidx,const String& p_name);
String custom_signal_get_argument_name(const StringName& p_func,int p_argidx) const;
void custom_signal_remove_argument(const StringName& p_func,int p_argidx);
int custom_signal_get_argument_count(const StringName& p_func) const;
void custom_signal_swap_argument(const StringName& p_func,int p_argidx,int p_with_argidx);
void remove_custom_signal(const StringName& p_name);
void rename_custom_signal(const StringName& p_name,const StringName& p_new_name);
void add_custom_signal(const StringName &p_name);
bool has_custom_signal(const StringName &p_name) const;
void custom_signal_add_argument(const StringName &p_func, Variant::Type p_type, const String &p_name, int p_index = -1);
void custom_signal_set_argument_type(const StringName &p_func, int p_argidx, Variant::Type p_type);
Variant::Type custom_signal_get_argument_type(const StringName &p_func, int p_argidx) const;
void custom_signal_set_argument_name(const StringName &p_func, int p_argidx, const String &p_name);
String custom_signal_get_argument_name(const StringName &p_func, int p_argidx) const;
void custom_signal_remove_argument(const StringName &p_func, int p_argidx);
int custom_signal_get_argument_count(const StringName &p_func) const;
void custom_signal_swap_argument(const StringName &p_func, int p_argidx, int p_with_argidx);
void remove_custom_signal(const StringName &p_name);
void rename_custom_signal(const StringName &p_name, const StringName &p_new_name);
void get_custom_signal_list(List<StringName> *r_custom_signals) const;
int get_available_id() const;
void set_instance_base_type(const StringName& p_type);
void set_instance_base_type(const StringName &p_type);
virtual bool can_instance() const;
virtual Ref<Script> get_base_script() const;
virtual StringName get_instance_base_type() const;
virtual ScriptInstance* instance_create(Object *p_this);
virtual ScriptInstance *instance_create(Object *p_this);
virtual bool instance_has(const Object *p_this) const;
virtual bool has_source_code() const;
virtual String get_source_code() const;
virtual void set_source_code(const String& p_code);
virtual Error reload(bool p_keep_state=false);
virtual void set_source_code(const String &p_code);
virtual Error reload(bool p_keep_state = false);
virtual bool is_tool() const;
@@ -359,14 +344,14 @@ public:
virtual ScriptLanguage *get_language() const;
virtual bool has_script_signal(const StringName& p_signal) const;
virtual bool has_script_signal(const StringName &p_signal) const;
virtual void get_script_signal_list(List<MethodInfo> *r_signals) const;
virtual bool get_property_default_value(const StringName& p_property,Variant& r_value) const;
virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const;
virtual void get_script_method_list(List<MethodInfo> *p_list) const;
virtual bool has_method(const StringName& p_method) const;
virtual MethodInfo get_method_info(const StringName& p_method) const;
virtual bool has_method(const StringName &p_method) const;
virtual MethodInfo get_method_info(const StringName &p_method) const;
virtual void get_script_property_list(List<PropertyInfo> *p_list) const;
@@ -378,13 +363,12 @@ public:
~VisualScript();
};
class VisualScriptInstance : public ScriptInstance {
Object *owner;
Ref<VisualScript> script;
Map<StringName,Variant> variables; //using variable path, not script
Map<int,VisualScriptNodeInstance*> instances;
Map<StringName, Variant> variables; //using variable path, not script
Map<int, VisualScriptNodeInstance *> instances;
struct Function {
int node;
@@ -398,50 +382,48 @@ class VisualScriptInstance : public ScriptInstance {
bool valid;
};
Map<StringName,Function> functions;
Map<StringName, Function> functions;
Vector<Variant> default_values;
int max_input_args,max_output_args;
int max_input_args, max_output_args;
StringName source;
void _dependency_step(VisualScriptNodeInstance* node, int p_pass, int *pass_stack, const Variant **input_args, Variant **output_args, Variant *variant_stack, Variant::CallError& r_error, String& error_str, VisualScriptNodeInstance **r_error_node);
Variant _call_internal(const StringName& p_method, void* p_stack,int p_stack_size, VisualScriptNodeInstance* p_node, int p_flow_stack_pos, int p_pass, bool p_resuming_yield,Variant::CallError &r_error);
void _dependency_step(VisualScriptNodeInstance *node, int p_pass, int *pass_stack, const Variant **input_args, Variant **output_args, Variant *variant_stack, Variant::CallError &r_error, String &error_str, VisualScriptNodeInstance **r_error_node);
Variant _call_internal(const StringName &p_method, void *p_stack, int p_stack_size, VisualScriptNodeInstance *p_node, int p_flow_stack_pos, int p_pass, bool p_resuming_yield, Variant::CallError &r_error);
//Map<StringName,Function> functions;
friend class VisualScriptFunctionState; //for yield
friend class VisualScriptLanguage; //for debugger
friend class VisualScriptFunctionState; //for yield
friend class VisualScriptLanguage; //for debugger
public:
virtual bool set(const StringName& p_name, const Variant& p_value);
virtual bool get(const StringName& p_name, Variant &r_ret) const;
virtual bool set(const StringName &p_name, const Variant &p_value);
virtual bool get(const StringName &p_name, Variant &r_ret) const;
virtual void get_property_list(List<PropertyInfo> *p_properties) const;
virtual Variant::Type get_property_type(const StringName& p_name,bool *r_is_valid=NULL) const;
virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid = NULL) const;
virtual void get_method_list(List<MethodInfo> *p_list) const;
virtual bool has_method(const StringName& p_method) const;
virtual Variant call(const StringName& p_method,const Variant** p_args,int p_argcount,Variant::CallError &r_error);
virtual bool has_method(const StringName &p_method) const;
virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error);
virtual void notification(int p_notification);
bool set_variable(const StringName& p_variable,const Variant& p_value) {
bool set_variable(const StringName &p_variable, const Variant &p_value) {
Map<StringName,Variant>::Element *E=variables.find(p_variable);
Map<StringName, Variant>::Element *E = variables.find(p_variable);
if (!E)
return false;
E->get()=p_value;
E->get() = p_value;
return true;
}
bool get_variable(const StringName& p_variable,Variant* r_variable) const {
bool get_variable(const StringName &p_variable, Variant *r_variable) const {
const Map<StringName,Variant>::Element *E=variables.find(p_variable);
const Map<StringName, Variant>::Element *E = variables.find(p_variable);
if (!E)
return false;
*r_variable=E->get();
*r_variable = E->get();
return true;
}
virtual Ref<Script> get_script() const;
@@ -449,22 +431,21 @@ public:
_FORCE_INLINE_ VisualScript *get_script_ptr() { return script.ptr(); }
_FORCE_INLINE_ Object *get_owner_ptr() { return owner; }
void create(const Ref<VisualScript>& p_script,Object *p_owner);
void create(const Ref<VisualScript> &p_script, Object *p_owner);
virtual ScriptLanguage *get_language();
virtual RPCMode get_rpc_mode(const StringName& p_method) const;
virtual RPCMode get_rset_mode(const StringName& p_variable) const;
virtual RPCMode get_rpc_mode(const StringName &p_method) const;
virtual RPCMode get_rset_mode(const StringName &p_variable) const;
VisualScriptInstance();
~VisualScriptInstance();
};
class VisualScriptFunctionState : public Reference {
GDCLASS(VisualScriptFunctionState,Reference);
friend class VisualScriptInstance;
GDCLASS(VisualScriptFunctionState, Reference);
friend class VisualScriptInstance;
ObjectID instance_id;
ObjectID script_id;
@@ -477,36 +458,34 @@ friend class VisualScriptInstance;
int flow_stack_pos;
int pass;
Variant _signal_callback(const Variant** p_args, int p_argcount, Variant::CallError& r_error);
Variant _signal_callback(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
protected:
static void _bind_methods();
public:
void connect_to_signal(Object* p_obj,const String& p_signal,Array p_binds);
public:
void connect_to_signal(Object *p_obj, const String &p_signal, Array p_binds);
bool is_valid() const;
Variant resume(Array p_args);
VisualScriptFunctionState();
~VisualScriptFunctionState();
};
typedef Ref<VisualScriptNode> (*VisualScriptNodeRegisterFunc)(const String& p_type);
typedef Ref<VisualScriptNode> (*VisualScriptNodeRegisterFunc)(const String &p_type);
class VisualScriptLanguage : public ScriptLanguage {
Map<String,VisualScriptNodeRegisterFunc> register_funcs;
Map<String, VisualScriptNodeRegisterFunc> register_funcs;
struct CallLevel {
Variant *stack;
Variant **work_mem;
const StringName *function;
VisualScriptInstance *instance;
int *current_id;
Variant *stack;
Variant **work_mem;
const StringName *function;
VisualScriptInstance *instance;
int *current_id;
};
int _debug_parse_err_node;
String _debug_parse_err_file;
String _debug_error;
@@ -520,52 +499,52 @@ public:
StringName _step;
StringName _subcall;
static VisualScriptLanguage* singleton;
static VisualScriptLanguage *singleton;
Mutex *lock;
bool debug_break(const String& p_error,bool p_allow_continue=true);
bool debug_break_parse(const String& p_file, int p_node,const String& p_error);
bool debug_break(const String &p_error, bool p_allow_continue = true);
bool debug_break_parse(const String &p_file, int p_node, const String &p_error);
_FORCE_INLINE_ void enter_function(VisualScriptInstance *p_instance,const StringName* p_function, Variant *p_stack, Variant **p_work_mem,int *current_id) {
_FORCE_INLINE_ void enter_function(VisualScriptInstance *p_instance, const StringName *p_function, Variant *p_stack, Variant **p_work_mem, int *current_id) {
if (Thread::get_main_ID()!=Thread::get_caller_ID())
return; //no support for other threads than main for now
if (Thread::get_main_ID() != Thread::get_caller_ID())
return; //no support for other threads than main for now
if (ScriptDebugger::get_singleton()->get_lines_left()>0 && ScriptDebugger::get_singleton()->get_depth()>=0)
ScriptDebugger::get_singleton()->set_depth( ScriptDebugger::get_singleton()->get_depth() +1 );
if (ScriptDebugger::get_singleton()->get_lines_left() > 0 && ScriptDebugger::get_singleton()->get_depth() >= 0)
ScriptDebugger::get_singleton()->set_depth(ScriptDebugger::get_singleton()->get_depth() + 1);
if (_debug_call_stack_pos >= _debug_max_call_stack) {
//stack overflow
_debug_error="Stack Overflow (Stack Size: "+itos(_debug_max_call_stack)+")";
ScriptDebugger::get_singleton()->debug(this);
return;
}
if (_debug_call_stack_pos >= _debug_max_call_stack) {
//stack overflow
_debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
ScriptDebugger::get_singleton()->debug(this);
return;
}
_call_stack[_debug_call_stack_pos].stack=p_stack;
_call_stack[_debug_call_stack_pos].instance=p_instance;
_call_stack[_debug_call_stack_pos].function=p_function;
_call_stack[_debug_call_stack_pos].work_mem=p_work_mem;
_call_stack[_debug_call_stack_pos].current_id=current_id;
_debug_call_stack_pos++;
_call_stack[_debug_call_stack_pos].stack = p_stack;
_call_stack[_debug_call_stack_pos].instance = p_instance;
_call_stack[_debug_call_stack_pos].function = p_function;
_call_stack[_debug_call_stack_pos].work_mem = p_work_mem;
_call_stack[_debug_call_stack_pos].current_id = current_id;
_debug_call_stack_pos++;
}
_FORCE_INLINE_ void exit_function() {
if (Thread::get_main_ID()!=Thread::get_caller_ID())
return; //no support for other threads than main for now
if (Thread::get_main_ID() != Thread::get_caller_ID())
return; //no support for other threads than main for now
if (ScriptDebugger::get_singleton()->get_lines_left()>0 && ScriptDebugger::get_singleton()->get_depth()>=0)
ScriptDebugger::get_singleton()->set_depth( ScriptDebugger::get_singleton()->get_depth() -1 );
if (ScriptDebugger::get_singleton()->get_lines_left() > 0 && ScriptDebugger::get_singleton()->get_depth() >= 0)
ScriptDebugger::get_singleton()->set_depth(ScriptDebugger::get_singleton()->get_depth() - 1);
if (_debug_call_stack_pos==0) {
if (_debug_call_stack_pos == 0) {
_debug_error="Stack Underflow (Engine Bug)";
ScriptDebugger::get_singleton()->debug(this);
return;
}
_debug_error = "Stack Underflow (Engine Bug)";
ScriptDebugger::get_singleton()->debug(this);
return;
}
_debug_call_stack_pos--;
_debug_call_stack_pos--;
}
//////////////////////////////////////
@@ -576,22 +555,21 @@ public:
virtual void init();
virtual String get_type() const;
virtual String get_extension() const;
virtual Error execute_file(const String& p_path) ;
virtual Error execute_file(const String &p_path);
virtual void finish();
/* EDITOR FUNCTIONS */
virtual void get_reserved_words(List<String> *p_words) const;
virtual void get_comment_delimiters(List<String> *p_delimiters) const;
virtual void get_string_delimiters(List<String> *p_delimiters) const;
virtual Ref<Script> get_template(const String& p_class_name, const String& p_base_class_name) const;
virtual bool validate(const String& p_script, int &r_line_error,int &r_col_error,String& r_test_error, const String& p_path="",List<String> *r_functions=NULL) const;
virtual Ref<Script> get_template(const String &p_class_name, const String &p_base_class_name) const;
virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path = "", List<String> *r_functions = NULL) const;
virtual Script *create_script() const;
virtual bool has_named_classes() const;
virtual int find_function(const String& p_function,const String& p_code) const;
virtual String make_function(const String& p_class,const String& p_name,const PoolStringArray& p_args) const;
virtual void auto_indent_code(String& p_code,int p_from_line,int p_to_line) const;
virtual void add_global_constant(const StringName& p_variable,const Variant& p_value);
virtual int find_function(const String &p_function, const String &p_code) const;
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const;
virtual void add_global_constant(const StringName &p_variable, const Variant &p_value);
/* DEBUGGER FUNCTIONS */
@@ -600,45 +578,40 @@ public:
virtual int debug_get_stack_level_line(int p_level) const;
virtual String debug_get_stack_level_function(int p_level) const;
virtual String debug_get_stack_level_source(int p_level) const;
virtual void debug_get_stack_level_locals(int p_level,List<String> *p_locals, List<Variant> *p_values, int p_max_subitems=-1,int p_max_depth=-1);
virtual void debug_get_stack_level_members(int p_level,List<String> *p_members, List<Variant> *p_values, int p_max_subitems=-1,int p_max_depth=-1);
virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems=-1,int p_max_depth=-1);
virtual String debug_parse_stack_level_expression(int p_level,const String& p_expression,int p_max_subitems=-1,int p_max_depth=-1);
virtual void debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1);
virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1);
virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1);
virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems = -1, int p_max_depth = -1);
virtual void reload_all_scripts();
virtual void reload_tool_script(const Ref<Script>& p_script,bool p_soft_reload);
virtual void reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload);
/* LOADER FUNCTIONS */
virtual void get_recognized_extensions(List<String> *p_extensions) const;
virtual void get_public_functions(List<MethodInfo> *p_functions) const;
virtual void get_public_constants(List<Pair<String,Variant> > *p_constants) const;
virtual void get_public_constants(List<Pair<String, Variant> > *p_constants) const;
virtual void profiling_start();
virtual void profiling_stop();
virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr,int p_info_max);
virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr,int p_info_max);
virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max);
virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max);
void add_register_func(const String& p_name,VisualScriptNodeRegisterFunc p_func);
Ref<VisualScriptNode> create_node_from_name(const String& p_name);
void add_register_func(const String &p_name, VisualScriptNodeRegisterFunc p_func);
Ref<VisualScriptNode> create_node_from_name(const String &p_name);
void get_registered_node_names(List<String> *r_names);
VisualScriptLanguage();
~VisualScriptLanguage();
};
//aid for registering
template<class T>
static Ref<VisualScriptNode> create_node_generic(const String& p_name) {
template <class T>
static Ref<VisualScriptNode> create_node_generic(const String &p_name) {
Ref<T> node;
node.instance();
return node;
}
#endif // VSCRIPT_H

File diff suppressed because it is too large Load Diff

View File

@@ -31,12 +31,10 @@
#include "visual_script.h"
class VisualScriptBuiltinFunc : public VisualScriptNode {
GDCLASS(VisualScriptBuiltinFunc,VisualScriptNode)
GDCLASS(VisualScriptBuiltinFunc, VisualScriptNode)
public:
enum BuiltinFunc {
MATH_SIN,
MATH_COS,
@@ -100,27 +98,25 @@ public:
static int get_func_argument_count(BuiltinFunc p_func);
static String get_func_name(BuiltinFunc p_func);
static void exec_func(BuiltinFunc p_func, const Variant** p_inputs, Variant* r_return, Variant::CallError& r_error, String& r_error_str);
static BuiltinFunc find_function(const String& p_string);
static void exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant *r_return, Variant::CallError &r_error, String &r_error_str);
static BuiltinFunc find_function(const String &p_string);
private:
static const char* func_name[FUNC_MAX];
static const char *func_name[FUNC_MAX];
BuiltinFunc func;
protected:
static void _bind_methods();
public:
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;
@@ -131,15 +127,13 @@ public:
void set_func(BuiltinFunc p_which);
BuiltinFunc get_func();
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptBuiltinFunc();
};
VARIANT_ENUM_CAST(VisualScriptBuiltinFunc::BuiltinFunc)
void register_visual_script_builtin_func_node();
#endif // VISUAL_SCRIPT_BUILTIN_FUNCS_H

File diff suppressed because it is too large Load Diff

View File

@@ -29,26 +29,23 @@
#ifndef VISUALSCRIPT_EDITOR_H
#define VISUALSCRIPT_EDITOR_H
#include "editor/plugins/script_editor_plugin.h"
#include "visual_script.h"
#include "editor/property_editor.h"
#include "scene/gui/graph_edit.h"
#include "editor/create_dialog.h"
#include "editor/plugins/script_editor_plugin.h"
#include "editor/property_editor.h"
#include "editor/property_selector.h"
#include "scene/gui/graph_edit.h"
#include "visual_script.h"
class VisualScriptEditorSignalEdit;
class VisualScriptEditorVariableEdit;
#ifdef TOOLS_ENABLED
class VisualScriptEditor : public ScriptEditorBase {
GDCLASS(VisualScriptEditor,ScriptEditorBase)
GDCLASS(VisualScriptEditor, ScriptEditorBase)
enum {
TYPE_SEQUENCE=1000,
INDEX_BASE_SEQUENCE=1024
TYPE_SEQUENCE = 1000,
INDEX_BASE_SEQUENCE = 1024
};
@@ -115,7 +112,7 @@ class VisualScriptEditor : public ScriptEditorBase {
bool updating_graph;
void _show_hint(const String& p_hint);
void _show_hint(const String &p_hint);
void _hide_timer();
CreateDialog *select_base_type;
@@ -124,18 +121,17 @@ class VisualScriptEditor : public ScriptEditorBase {
String name;
Variant::Type ret;
bool ret_variant;
Vector< Pair<Variant::Type,String> > args;
Vector<Pair<Variant::Type, String> > args;
};
Map<int,VirtualInMenu> virtuals_in_menu;
Map<int, VirtualInMenu> virtuals_in_menu;
PopupMenu *new_function_menu;
StringName edited_func;
void _update_graph_connections();
void _update_graph(int p_only_id=-1);
void _update_graph(int p_only_id = -1);
bool updating_members;
@@ -143,12 +139,12 @@ class VisualScriptEditor : public ScriptEditorBase {
StringName selected;
String _validate_name(const String& p_name) const;
String _validate_name(const String &p_name) const;
struct Clipboard {
Map<int,Ref<VisualScriptNode> > nodes;
Map<int,Vector2 > nodes_positions;
Map<int, Ref<VisualScriptNode> > nodes;
Map<int, Vector2> nodes_positions;
Set<VisualScript::SequenceConnection> sequence_connections;
Set<VisualScript::DataConnection> data_connections;
@@ -164,15 +160,14 @@ class VisualScriptEditor : public ScriptEditorBase {
Vector2 port_action_pos;
int port_action_new_node;
void _port_action_menu(int p_option);
void _selected_connect_node_method_or_setget(const String& p_text);
void _selected_connect_node_method_or_setget(const String &p_text);
int error_line;
void _node_selected(Node* p_node);
void _node_selected(Node *p_node);
void _center_on_node(int p_id);
void _node_filter_changed(const String& p_text);
void _node_filter_changed(const String &p_text);
void _change_base_type_callback();
void _change_base_type();
void _member_selected();
@@ -181,82 +176,78 @@ class VisualScriptEditor : public ScriptEditorBase {
void _begin_node_move();
void _end_node_move();
void _move_node(String func,int p_id,const Vector2& p_to);
void _move_node(String func, int p_id, const Vector2 &p_to);
void _node_moved(Vector2 p_from,Vector2 p_to, int p_id);
void _node_moved(Vector2 p_from, Vector2 p_to, int p_id);
void _remove_node(int p_id);
void _graph_connected(const String& p_from,int p_from_slot,const String& p_to,int p_to_slot);
void _graph_disconnected(const String& p_from,int p_from_slot,const String& p_to,int p_to_slot);
void _graph_connect_to_empty(const String& p_from,int p_from_slot,const Vector2& p_release_pos);
void _graph_connected(const String &p_from, int p_from_slot, const String &p_to, int p_to_slot);
void _graph_disconnected(const String &p_from, int p_from_slot, const String &p_to, int p_to_slot);
void _graph_connect_to_empty(const String &p_from, int p_from_slot, const Vector2 &p_release_pos);
void _node_ports_changed(const String& p_func,int p_id);
void _node_ports_changed(const String &p_func, int p_id);
void _available_node_doubleclicked();
void _update_available_nodes();
void _member_button(Object *p_item, int p_column, int p_button);
void _expression_text_changed(const String& p_text,int p_id);
void _expression_text_changed(const String &p_text, int p_id);
String revert_on_drag;
void _input(const InputEvent& p_event);
void _input(const InputEvent &p_event);
void _on_nodes_delete();
void _on_nodes_duplicate();
Variant get_drag_data_fw(const Point2& p_point,Control* p_from);
bool can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const;
void drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from);
Variant get_drag_data_fw(const Point2 &p_point, Control *p_from);
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
int editing_id;
int editing_input;
void _default_value_changed();
void _default_value_edited(Node * p_button,int p_id,int p_input_port);
void _default_value_edited(Node *p_button, int p_id, int p_input_port);
void _menu_option(int p_what);
void _graph_ofs_changed(const Vector2& p_ofs);
void _comment_node_resized(const Vector2& p_new_size,int p_node);
void _graph_ofs_changed(const Vector2 &p_ofs);
void _comment_node_resized(const Vector2 &p_new_size, int p_node);
int selecting_method_id;
void _selected_method(const String& p_method);
void _selected_method(const String &p_method);
void _draw_color_over_button(Object* obj,Color p_color);
void _button_resource_previewed(const String& p_path,const Ref<Texture>& p_preview,Variant p_ud);
VisualScriptNode::TypeGuess _guess_output_type(int p_port_action_node,int p_port_action_output,Set<int> &visited_nodes);
void _draw_color_over_button(Object *obj, Color p_color);
void _button_resource_previewed(const String &p_path, const Ref<Texture> &p_preview, Variant p_ud);
VisualScriptNode::TypeGuess _guess_output_type(int p_port_action_node, int p_port_action_output, Set<int> &visited_nodes);
protected:
void _notification(int p_what);
static void _bind_methods();
public:
public:
virtual void apply_code();
virtual Ref<Script> get_edited_script() const;
virtual Vector<String> get_functions();
virtual void set_edited_script(const Ref<Script>& p_script);
virtual void set_edited_script(const Ref<Script> &p_script);
virtual void reload_text();
virtual String get_name();
virtual Ref<Texture> get_icon();
virtual bool is_unsaved();
virtual Variant get_edit_state();
virtual void set_edit_state(const Variant& p_state);
virtual void goto_line(int p_line,bool p_with_error=false);
virtual void set_edit_state(const Variant &p_state);
virtual void goto_line(int p_line, bool p_with_error = false);
virtual void trim_trailing_whitespace();
virtual void ensure_focus();
virtual void tag_saved_version();
virtual void reload(bool p_soft);
virtual void get_breakpoints(List<int> *p_breakpoints);
virtual bool goto_method(const String& p_method);
virtual void add_callback(const String& p_function,PoolStringArray p_args);
virtual bool goto_method(const String &p_method);
virtual void add_callback(const String &p_function, PoolStringArray p_args);
virtual void update_settings();
virtual void set_debugger_active(bool p_active);
virtual void set_tooltip_request_func(String p_method,Object* p_obj);
virtual void set_tooltip_request_func(String p_method, Object *p_obj);
virtual Control *get_edit_menu();
virtual bool can_lose_focus_on_node_selection() { return false; }

File diff suppressed because it is too large Load Diff

View File

@@ -34,15 +34,15 @@
class VisualScriptExpression : public VisualScriptNode {
GDCLASS(VisualScriptExpression,VisualScriptNode)
friend class VisualScriptNodeInstanceExpression;
GDCLASS(VisualScriptExpression, VisualScriptNode)
friend class VisualScriptNodeInstanceExpression;
struct Input {
Variant::Type type;
String name;
Input() { type=Variant::NIL; }
Input() { type = Variant::NIL; }
};
Vector<Input> inputs;
@@ -97,28 +97,25 @@ friend class VisualScriptNodeInstanceExpression;
TK_MAX
};
static const char* token_name[TK_MAX];
static const char *token_name[TK_MAX];
struct Token {
TokenType type;
Variant value;
};
void _set_error(const String& p_err) {
void _set_error(const String &p_err) {
if (error_set)
return;
error_str=p_err;
error_set=true;
error_str = p_err;
error_set = true;
}
Error _get_token(Token& r_token);
Error _get_token(Token &r_token);
String error_str;
bool error_set;
struct ENode {
enum Type {
@@ -139,8 +136,12 @@ friend class VisualScriptNodeInstanceExpression;
Type type;
ENode() { next=NULL; }
virtual ~ENode() { if (next) { memdelete(next); } }
ENode() { next = NULL; }
virtual ~ENode() {
if (next) {
memdelete(next);
}
}
};
struct Expression {
@@ -152,22 +153,21 @@ friend class VisualScriptNodeInstanceExpression;
};
};
ENode* _parse_expression();
ENode *_parse_expression();
struct InputNode : public ENode {
int index;
InputNode() {
type=TYPE_INPUT;
type = TYPE_INPUT;
}
};
struct ConstantNode : public ENode {
Variant value;
ConstantNode() {
type=TYPE_CONSTANT;
type = TYPE_CONSTANT;
}
};
@@ -175,119 +175,104 @@ friend class VisualScriptNodeInstanceExpression;
Variant::Operator op;
ENode* nodes[2];
ENode *nodes[2];
OperatorNode() {
type=TYPE_OPERATOR;
type = TYPE_OPERATOR;
}
};
struct SelfNode : public ENode {
SelfNode() {
type=TYPE_SELF;
type = TYPE_SELF;
}
};
struct IndexNode : public ENode {
ENode*base;
ENode*index;
ENode *base;
ENode *index;
IndexNode() {
type=TYPE_INDEX;
type = TYPE_INDEX;
}
};
struct NamedIndexNode : public ENode {
ENode*base;
ENode *base;
StringName name;
NamedIndexNode() {
type=TYPE_NAMED_INDEX;
type = TYPE_NAMED_INDEX;
}
};
struct ConstructorNode : public ENode {
Variant::Type data_type;
Vector<ENode*> arguments;
Vector<ENode *> arguments;
ConstructorNode() {
type=TYPE_CONSTRUCTOR;
type = TYPE_CONSTRUCTOR;
}
};
struct CallNode : public ENode {
ENode*base;
ENode *base;
StringName method;
Vector<ENode*> arguments;
Vector<ENode *> arguments;
CallNode() {
type=TYPE_CALL;
type = TYPE_CALL;
}
};
struct ArrayNode : public ENode {
Vector<ENode*> array;
Vector<ENode *> array;
ArrayNode() {
type=TYPE_ARRAY;
type = TYPE_ARRAY;
}
};
struct DictionaryNode : public ENode {
Vector<ENode*> dict;
Vector<ENode *> dict;
DictionaryNode() {
type=TYPE_DICTIONARY;
type = TYPE_DICTIONARY;
}
};
struct BuiltinFuncNode : public ENode {
VisualScriptBuiltinFunc::BuiltinFunc func;
Vector<ENode*> arguments;
Vector<ENode *> arguments;
BuiltinFuncNode() {
type=TYPE_BUILTIN_FUNC;
type = TYPE_BUILTIN_FUNC;
}
};
template<class T>
T* alloc_node() {
T* node = memnew(T);
node->next=nodes;
nodes=node;
template <class T>
T *alloc_node() {
T *node = memnew(T);
node->next = nodes;
nodes = node;
return node;
}
ENode *root;
ENode *nodes;
protected:
bool _set(const StringName& p_name, const Variant& p_value);
bool _get(const StringName& p_name,Variant &r_ret) const;
void _get_property_list( List<PropertyInfo> *p_list) const;
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
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;
@@ -295,14 +280,12 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "operators"; }
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptExpression();
~VisualScriptExpression();
};
void register_visual_script_expression_node();
#endif // VISUALSCRIPTEXPRESSION_H

File diff suppressed because it is too large Load Diff

View File

@@ -33,27 +33,23 @@
class VisualScriptReturn : public VisualScriptNode {
GDCLASS(VisualScriptReturn,VisualScriptNode)
GDCLASS(VisualScriptReturn, VisualScriptNode)
Variant::Type type;
bool with_value;
protected:
static void _bind_methods();
public:
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;
@@ -67,35 +63,27 @@ public:
void set_enable_return_value(bool p_enable);
bool is_return_value_enabled() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptReturn();
};
class VisualScriptCondition : public VisualScriptNode {
GDCLASS(VisualScriptCondition,VisualScriptNode)
GDCLASS(VisualScriptCondition, VisualScriptNode)
protected:
static void _bind_methods();
public:
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;
@@ -103,35 +91,27 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "flow_control"; }
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptCondition();
};
class VisualScriptWhile : public VisualScriptNode {
GDCLASS(VisualScriptWhile,VisualScriptNode)
GDCLASS(VisualScriptWhile, VisualScriptNode)
protected:
static void _bind_methods();
public:
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;
@@ -139,36 +119,27 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "flow_control"; }
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptWhile();
};
class VisualScriptIterator : public VisualScriptNode {
GDCLASS(VisualScriptIterator,VisualScriptNode)
GDCLASS(VisualScriptIterator, VisualScriptNode)
protected:
static void _bind_methods();
public:
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;
@@ -176,37 +147,29 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "flow_control"; }
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptIterator();
};
class VisualScriptSequence : public VisualScriptNode {
GDCLASS(VisualScriptSequence,VisualScriptNode)
GDCLASS(VisualScriptSequence, VisualScriptNode)
int steps;
protected:
static void _bind_methods();
public:
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;
@@ -217,47 +180,41 @@ public:
void set_steps(int p_steps);
int get_steps() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptSequence();
};
class VisualScriptSwitch : public VisualScriptNode {
GDCLASS(VisualScriptSwitch,VisualScriptNode)
GDCLASS(VisualScriptSwitch, VisualScriptNode)
struct Case {
Variant::Type type;
Case() { type=Variant::NIL; }
Case() { type = Variant::NIL; }
};
Vector<Case> case_values;
friend class VisualScriptNodeInstanceSwitch;
protected:
friend class VisualScriptNodeInstanceSwitch;
bool _set(const StringName& p_name, const Variant& p_value);
bool _get(const StringName& p_name,Variant &r_ret) const;
void _get_property_list( List<PropertyInfo> *p_list) const;
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
static void _bind_methods();
public:
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 bool has_mixed_input_and_sequence_ports() const { return true; }
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;
@@ -265,40 +222,31 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "flow_control"; }
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptSwitch();
};
class VisualScriptInputFilter : public VisualScriptNode {
GDCLASS(VisualScriptInputFilter,VisualScriptNode)
GDCLASS(VisualScriptInputFilter, VisualScriptNode)
Vector<InputEvent> filters;
protected:
bool _set(const StringName& p_name, const Variant& p_value);
bool _get(const StringName& p_name,Variant &r_ret) const;
void _get_property_list( List<PropertyInfo> *p_list) const;
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
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;
@@ -306,40 +254,30 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "flow_control"; }
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptInputFilter();
};
class VisualScriptTypeCast : public VisualScriptNode {
GDCLASS(VisualScriptTypeCast,VisualScriptNode)
GDCLASS(VisualScriptTypeCast, VisualScriptNode)
StringName base_type;
String script;
protected:
static void _bind_methods();
public:
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;
@@ -347,23 +285,17 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "flow_control"; }
void set_base_type(const StringName& p_type);
void set_base_type(const StringName &p_type);
StringName get_base_type() const;
void set_base_script(const String& p_path);
void set_base_script(const String &p_path);
String get_base_script() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptTypeCast();
};
void register_visual_script_flow_control_nodes();
#endif // VISUAL_SCRIPT_FLOW_CONTROL_H

File diff suppressed because it is too large Load Diff

View File

@@ -31,10 +31,9 @@
#include "visual_script.h"
class VisualScriptFunctionCall : public VisualScriptNode {
GDCLASS(VisualScriptFunctionCall,VisualScriptNode)
GDCLASS(VisualScriptFunctionCall, VisualScriptNode)
public:
enum CallMode {
CALL_MODE_SELF,
@@ -53,7 +52,6 @@ public:
};
private:
CallMode call_mode;
StringName base_type;
String base_script;
@@ -65,34 +63,29 @@ private:
StringName singleton;
bool validate;
Node *_get_base_node() const;
StringName _get_base_type() const;
MethodInfo method_cache;
void _update_method_cache();
void _set_argument_cache(const Dictionary& p_args);
void _set_argument_cache(const Dictionary &p_args);
Dictionary _get_argument_cache() const;
protected:
virtual void _validate_property(PropertyInfo& property) const;
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;
@@ -103,22 +96,21 @@ public:
void set_basic_type(Variant::Type p_type);
Variant::Type get_basic_type() const;
void set_base_type(const StringName& p_type);
void set_base_type(const StringName &p_type);
StringName get_base_type() const;
void set_base_script(const String& p_path);
void set_base_script(const String &p_path);
String get_base_script() const;
void set_singleton(const StringName& p_type);
void set_singleton(const StringName &p_type);
StringName get_singleton() const;
void set_function(const StringName& p_type);
void set_function(const StringName &p_type);
StringName get_function() const;
void set_base_path(const NodePath& p_type);
void set_base_path(const NodePath &p_type);
NodePath get_base_path() const;
void set_call_mode(CallMode p_mode);
CallMode get_call_mode() const;
@@ -131,21 +123,19 @@ public:
void set_rpc_call_mode(RPCCallMode p_mode);
RPCCallMode get_rpc_call_mode() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const;
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
virtual TypeGuess guess_output_type(TypeGuess *p_inputs, int p_output) const;
VisualScriptFunctionCall();
};
VARIANT_ENUM_CAST(VisualScriptFunctionCall::CallMode );
VARIANT_ENUM_CAST(VisualScriptFunctionCall::RPCCallMode );
VARIANT_ENUM_CAST(VisualScriptFunctionCall::CallMode);
VARIANT_ENUM_CAST(VisualScriptFunctionCall::RPCCallMode);
class VisualScriptPropertySet : public VisualScriptNode {
GDCLASS(VisualScriptPropertySet,VisualScriptNode)
GDCLASS(VisualScriptPropertySet, VisualScriptNode)
public:
enum CallMode {
CALL_MODE_SELF,
@@ -153,14 +143,13 @@ public:
CALL_MODE_INSTANCE,
CALL_MODE_BASIC_TYPE,
};
private:
private:
PropertyInfo type_cache;
CallMode call_mode;
Variant::Type basic_type;
Variant::Type basic_type;
StringName base_type;
String base_script;
NodePath base_path;
@@ -174,28 +163,23 @@ private:
void _update_cache();
void _set_type_cache(const Dictionary& p_type);
void _set_type_cache(const Dictionary &p_type);
Dictionary _get_type_cache() const;
protected:
virtual void _validate_property(PropertyInfo& property) const;
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;
@@ -203,10 +187,10 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "functions"; }
void set_base_type(const StringName& p_type);
void set_base_type(const StringName &p_type);
StringName get_base_type() const;
void set_base_script(const String& p_path);
void set_base_script(const String &p_path);
String get_base_script() const;
void set_basic_type(Variant::Type p_type);
@@ -215,28 +199,26 @@ public:
void set_event_type(InputEvent::Type p_type);
InputEvent::Type get_event_type() const;
void set_property(const StringName& p_type);
void set_property(const StringName &p_type);
StringName get_property() const;
void set_base_path(const NodePath& p_type);
void set_base_path(const NodePath &p_type);
NodePath get_base_path() const;
void set_call_mode(CallMode p_mode);
CallMode get_call_mode() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const;
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
virtual TypeGuess guess_output_type(TypeGuess *p_inputs, int p_output) const;
VisualScriptPropertySet();
};
VARIANT_ENUM_CAST(VisualScriptPropertySet::CallMode );
VARIANT_ENUM_CAST(VisualScriptPropertySet::CallMode);
class VisualScriptPropertyGet : public VisualScriptNode {
GDCLASS(VisualScriptPropertyGet,VisualScriptNode)
GDCLASS(VisualScriptPropertyGet, VisualScriptNode)
public:
enum CallMode {
CALL_MODE_SELF,
@@ -245,8 +227,8 @@ public:
CALL_MODE_BASIC_TYPE,
};
private:
private:
Variant::Type type_cache;
CallMode call_mode;
@@ -267,23 +249,19 @@ private:
Variant::Type _get_type_cache() const;
protected:
virtual void _validate_property(PropertyInfo& property) const;
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;
@@ -291,10 +269,10 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "functions"; }
void set_base_type(const StringName& p_type);
void set_base_type(const StringName &p_type);
StringName get_base_type() const;
void set_base_script(const String& p_path);
void set_base_script(const String &p_path);
String get_base_script() const;
void set_basic_type(Variant::Type p_type);
@@ -303,55 +281,43 @@ public:
void set_event_type(InputEvent::Type p_type);
InputEvent::Type get_event_type() const;
void set_property(const StringName& p_type);
void set_property(const StringName &p_type);
StringName get_property() const;
void set_base_path(const NodePath& p_type);
void set_base_path(const NodePath &p_type);
NodePath get_base_path() const;
void set_call_mode(CallMode p_mode);
CallMode get_call_mode() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptPropertyGet();
};
VARIANT_ENUM_CAST(VisualScriptPropertyGet::CallMode );
VARIANT_ENUM_CAST(VisualScriptPropertyGet::CallMode);
class VisualScriptEmitSignal : public VisualScriptNode {
GDCLASS(VisualScriptEmitSignal,VisualScriptNode)
GDCLASS(VisualScriptEmitSignal, VisualScriptNode)
private:
StringName name;
protected:
virtual void _validate_property(PropertyInfo& property) const;
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;
@@ -359,19 +325,14 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "functions"; }
void set_signal(const StringName& p_type);
void set_signal(const StringName &p_type);
StringName get_signal() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptEmitSignal();
};
void register_visual_script_func_nodes();
#endif // VISUAL_SCRIPT_FUNC_NODES_H

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -28,9 +28,9 @@
/*************************************************************************/
#include "visual_script_yield_nodes.h"
#include "scene/main/scene_main_loop.h"
#include "os/os.h"
#include "scene/main/node.h"
#include "scene/main/scene_main_loop.h"
#include "visual_script_nodes.h"
//////////////////////////////////////////
@@ -42,16 +42,16 @@ int VisualScriptYield::get_output_sequence_port_count() const {
return 1;
}
bool VisualScriptYield::has_input_sequence_port() const{
bool VisualScriptYield::has_input_sequence_port() const {
return true;
}
int VisualScriptYield::get_input_value_port_count() const{
int VisualScriptYield::get_input_value_port_count() const {
return 0;
}
int VisualScriptYield::get_output_value_port_count() const{
int VisualScriptYield::get_output_value_port_count() const {
return 0;
}
@@ -61,20 +61,19 @@ String VisualScriptYield::get_output_sequence_port_text(int p_port) const {
return String();
}
PropertyInfo VisualScriptYield::get_input_value_port_info(int p_idx) const{
PropertyInfo VisualScriptYield::get_input_value_port_info(int p_idx) const {
return PropertyInfo();
}
PropertyInfo VisualScriptYield::get_output_value_port_info(int p_idx) const{
PropertyInfo VisualScriptYield::get_output_value_port_info(int p_idx) const {
return PropertyInfo();
}
String VisualScriptYield::get_caption() const {
return yield_mode==YIELD_RETURN?"Yield":"Wait";
return yield_mode == YIELD_RETURN ? "Yield" : "Wait";
}
String VisualScriptYield::get_text() const {
@@ -82,17 +81,15 @@ String VisualScriptYield::get_text() const {
switch (yield_mode) {
case YIELD_RETURN: return ""; break;
case YIELD_FRAME: return "Next Frame"; break;
case YIELD_FIXED_FRAME: return "Next Fixed Frame"; break;
case YIELD_WAIT: return rtos(wait_time)+" sec(s)"; break;
case YIELD_FIXED_FRAME: return "Next Fixed Frame"; break;
case YIELD_WAIT: return rtos(wait_time) + " sec(s)"; break;
}
return String();
}
class VisualScriptNodeInstanceYield : public VisualScriptNodeInstance {
public:
VisualScriptYield::YieldMode mode;
float wait_time;
@@ -100,18 +97,17 @@ public:
//virtual bool is_output_port_unsequenced(int p_idx) const { return false; }
//virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return false; }
virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) {
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Variant::CallError &r_error, String &r_error_str) {
if (p_start_mode==START_MODE_RESUME_YIELD) {
if (p_start_mode == START_MODE_RESUME_YIELD) {
return 0; //resuming yield
} else {
//yield
SceneTree *tree = OS::get_singleton()->get_main_loop()->cast_to<SceneTree>();
if (!tree) {
r_error_str="Main Loop is not SceneTree";
r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Main Loop is not SceneTree";
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
return 0;
}
@@ -119,99 +115,92 @@ public:
state.instance();
int ret = STEP_YIELD_BIT;
switch(mode) {
case VisualScriptYield::YIELD_RETURN: ret=STEP_EXIT_FUNCTION_BIT; break; //return the yield
case VisualScriptYield::YIELD_FRAME: state->connect_to_signal(tree,"idle_frame",Array()); break;
case VisualScriptYield::YIELD_FIXED_FRAME: state->connect_to_signal(tree,"fixed_frame",Array()); break;
case VisualScriptYield::YIELD_WAIT: state->connect_to_signal(tree->create_timer(wait_time).ptr(),"timeout",Array()); break;
switch (mode) {
case VisualScriptYield::YIELD_RETURN:
ret = STEP_EXIT_FUNCTION_BIT;
break; //return the yield
case VisualScriptYield::YIELD_FRAME: state->connect_to_signal(tree, "idle_frame", Array()); break;
case VisualScriptYield::YIELD_FIXED_FRAME: state->connect_to_signal(tree, "fixed_frame", Array()); break;
case VisualScriptYield::YIELD_WAIT: state->connect_to_signal(tree->create_timer(wait_time).ptr(), "timeout", Array()); break;
}
*p_working_mem=state;
*p_working_mem = state;
return ret;
}
}
};
VisualScriptNodeInstance* VisualScriptYield::instance(VisualScriptInstance* p_instance) {
VisualScriptNodeInstance *VisualScriptYield::instance(VisualScriptInstance *p_instance) {
VisualScriptNodeInstanceYield * instance = memnew(VisualScriptNodeInstanceYield );
VisualScriptNodeInstanceYield *instance = memnew(VisualScriptNodeInstanceYield);
//instance->instance=p_instance;
instance->mode=yield_mode;
instance->wait_time=wait_time;
instance->mode = yield_mode;
instance->wait_time = wait_time;
return instance;
}
void VisualScriptYield::set_yield_mode(YieldMode p_mode) {
if (yield_mode==p_mode)
if (yield_mode == p_mode)
return;
yield_mode=p_mode;
yield_mode = p_mode;
ports_changed_notify();
_change_notify();
}
VisualScriptYield::YieldMode VisualScriptYield::get_yield_mode(){
VisualScriptYield::YieldMode VisualScriptYield::get_yield_mode() {
return yield_mode;
}
void VisualScriptYield::set_wait_time(float p_time) {
if (wait_time==p_time)
if (wait_time == p_time)
return;
wait_time=p_time;
wait_time = p_time;
ports_changed_notify();
}
float VisualScriptYield::get_wait_time(){
float VisualScriptYield::get_wait_time() {
return wait_time;
}
void VisualScriptYield::_validate_property(PropertyInfo &property) const {
void VisualScriptYield::_validate_property(PropertyInfo& property) const {
if (property.name=="wait_time") {
if (yield_mode!=YIELD_WAIT) {
property.usage=0;
if (property.name == "wait_time") {
if (yield_mode != YIELD_WAIT) {
property.usage = 0;
}
}
}
void VisualScriptYield::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_yield_mode","mode"),&VisualScriptYield::set_yield_mode);
ClassDB::bind_method(D_METHOD("get_yield_mode"),&VisualScriptYield::get_yield_mode);
ClassDB::bind_method(D_METHOD("set_yield_mode", "mode"), &VisualScriptYield::set_yield_mode);
ClassDB::bind_method(D_METHOD("get_yield_mode"), &VisualScriptYield::get_yield_mode);
ClassDB::bind_method(D_METHOD("set_wait_time","sec"),&VisualScriptYield::set_wait_time);
ClassDB::bind_method(D_METHOD("get_wait_time"),&VisualScriptYield::get_wait_time);
ClassDB::bind_method(D_METHOD("set_wait_time", "sec"), &VisualScriptYield::set_wait_time);
ClassDB::bind_method(D_METHOD("get_wait_time"), &VisualScriptYield::get_wait_time);
ADD_PROPERTY(PropertyInfo(Variant::INT,"mode",PROPERTY_HINT_ENUM,"Frame,FixedFrame,Time",PROPERTY_USAGE_NOEDITOR),"set_yield_mode","get_yield_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL,"wait_time"),"set_wait_time","get_wait_time");
BIND_CONSTANT( YIELD_FRAME );
BIND_CONSTANT( YIELD_FIXED_FRAME );
BIND_CONSTANT( YIELD_WAIT );
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Frame,FixedFrame,Time", PROPERTY_USAGE_NOEDITOR), "set_yield_mode", "get_yield_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time"), "set_wait_time", "get_wait_time");
BIND_CONSTANT(YIELD_FRAME);
BIND_CONSTANT(YIELD_FIXED_FRAME);
BIND_CONSTANT(YIELD_WAIT);
}
VisualScriptYield::VisualScriptYield() {
yield_mode=YIELD_FRAME;
wait_time=1;
yield_mode = YIELD_FRAME;
wait_time = 1;
}
template<VisualScriptYield::YieldMode MODE>
static Ref<VisualScriptNode> create_yield_node(const String& p_name) {
template <VisualScriptYield::YieldMode MODE>
static Ref<VisualScriptNode> create_yield_node(const String &p_name) {
Ref<VisualScriptYield> node;
node.instance();
@@ -228,24 +217,24 @@ int VisualScriptYieldSignal::get_output_sequence_port_count() const {
return 1;
}
bool VisualScriptYieldSignal::has_input_sequence_port() const{
bool VisualScriptYieldSignal::has_input_sequence_port() const {
return true;
}
#ifdef TOOLS_ENABLED
static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const Ref<Script> &script) {
static Node *_find_script_node(Node *p_edited_scene, Node *p_current_node, const Ref<Script> &script) {
if (p_edited_scene!=p_current_node && p_current_node->get_owner()!=p_edited_scene)
if (p_edited_scene != p_current_node && p_current_node->get_owner() != p_edited_scene)
return NULL;
Ref<Script> scr = p_current_node->get_script();
if (scr.is_valid() && scr==script)
if (scr.is_valid() && scr == script)
return p_current_node;
for(int i=0;i<p_current_node->get_child_count();i++) {
Node *n = _find_script_node(p_edited_scene,p_current_node->get_child(i),script);
for (int i = 0; i < p_current_node->get_child_count(); i++) {
Node *n = _find_script_node(p_edited_scene, p_current_node->get_child(i), script);
if (n)
return n;
}
@@ -261,7 +250,7 @@ Node *VisualScriptYieldSignal::_get_base_node() const {
if (!script.is_valid())
return NULL;
MainLoop * main_loop = OS::get_singleton()->get_main_loop();
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
if (!main_loop)
return NULL;
@@ -275,7 +264,7 @@ Node *VisualScriptYieldSignal::_get_base_node() const {
if (!edited_scene)
return NULL;
Node* script_node = _find_script_node(edited_scene,edited_scene,script);
Node *script_node = _find_script_node(edited_scene, edited_scene, script);
if (!script_node)
return NULL;
@@ -294,36 +283,32 @@ Node *VisualScriptYieldSignal::_get_base_node() const {
StringName VisualScriptYieldSignal::_get_base_type() const {
if (call_mode==CALL_MODE_SELF && get_visual_script().is_valid())
if (call_mode == CALL_MODE_SELF && get_visual_script().is_valid())
return get_visual_script()->get_instance_base_type();
else if (call_mode==CALL_MODE_NODE_PATH && get_visual_script().is_valid()) {
else if (call_mode == CALL_MODE_NODE_PATH && get_visual_script().is_valid()) {
Node *path = _get_base_node();
if (path)
return path->get_class();
}
return base_type;
}
int VisualScriptYieldSignal::get_input_value_port_count() const{
int VisualScriptYieldSignal::get_input_value_port_count() const {
if (call_mode==CALL_MODE_INSTANCE)
if (call_mode == CALL_MODE_INSTANCE)
return 1;
else
return 0;
}
int VisualScriptYieldSignal::get_output_value_port_count() const{
int VisualScriptYieldSignal::get_output_value_port_count() const {
MethodInfo sr;
if (!ClassDB::get_signal(_get_base_type(),signal,&sr))
if (!ClassDB::get_signal(_get_base_type(), signal, &sr))
return 0;
return sr.arguments.size();
}
String VisualScriptYieldSignal::get_output_sequence_port_text(int p_port) const {
@@ -331,30 +316,27 @@ String VisualScriptYieldSignal::get_output_sequence_port_text(int p_port) const
return String();
}
PropertyInfo VisualScriptYieldSignal::get_input_value_port_info(int p_idx) const{
PropertyInfo VisualScriptYieldSignal::get_input_value_port_info(int p_idx) const {
if (call_mode==CALL_MODE_INSTANCE)
return PropertyInfo(Variant::OBJECT,"instance");
if (call_mode == CALL_MODE_INSTANCE)
return PropertyInfo(Variant::OBJECT, "instance");
else
return PropertyInfo();
}
PropertyInfo VisualScriptYieldSignal::get_output_value_port_info(int p_idx) const{
PropertyInfo VisualScriptYieldSignal::get_output_value_port_info(int p_idx) const {
MethodInfo sr;
if (!ClassDB::get_signal(_get_base_type(),signal,&sr))
if (!ClassDB::get_signal(_get_base_type(), signal, &sr))
return PropertyInfo(); //no signal
ERR_FAIL_INDEX_V(p_idx,sr.arguments.size(),PropertyInfo());
ERR_FAIL_INDEX_V(p_idx, sr.arguments.size(), PropertyInfo());
return sr.arguments[p_idx];
}
String VisualScriptYieldSignal::get_caption() const {
static const char*cname[3]= {
static const char *cname[3] = {
"WaitSignal",
"WaitNodeSignal",
"WaitInstanceSigna;",
@@ -365,52 +347,49 @@ String VisualScriptYieldSignal::get_caption() const {
String VisualScriptYieldSignal::get_text() const {
if (call_mode==CALL_MODE_SELF)
return " "+String(signal)+"()";
if (call_mode == CALL_MODE_SELF)
return " " + String(signal) + "()";
else
return " "+_get_base_type()+"."+String(signal)+"()";
return " " + _get_base_type() + "." + String(signal) + "()";
}
void VisualScriptYieldSignal::set_base_type(const StringName &p_type) {
void VisualScriptYieldSignal::set_base_type(const StringName& p_type) {
if (base_type==p_type)
if (base_type == p_type)
return;
base_type=p_type;
base_type = p_type;
_change_notify();
ports_changed_notify();
}
StringName VisualScriptYieldSignal::get_base_type() const{
StringName VisualScriptYieldSignal::get_base_type() const {
return base_type;
}
void VisualScriptYieldSignal::set_signal(const StringName& p_type){
void VisualScriptYieldSignal::set_signal(const StringName &p_type) {
if (signal==p_type)
if (signal == p_type)
return;
signal=p_type;
signal = p_type;
_change_notify();
ports_changed_notify();
}
StringName VisualScriptYieldSignal::get_signal() const {
return signal;
}
void VisualScriptYieldSignal::set_base_path(const NodePath& p_type) {
void VisualScriptYieldSignal::set_base_path(const NodePath &p_type) {
if (base_path==p_type)
if (base_path == p_type)
return;
base_path=p_type;
base_path = p_type;
_change_notify();
ports_changed_notify();
@@ -421,17 +400,15 @@ NodePath VisualScriptYieldSignal::get_base_path() const {
return base_path;
}
void VisualScriptYieldSignal::set_call_mode(CallMode p_mode) {
if (call_mode==p_mode)
if (call_mode == p_mode)
return;
call_mode=p_mode;
call_mode = p_mode;
_change_notify();
ports_changed_notify();
}
VisualScriptYieldSignal::CallMode VisualScriptYieldSignal::get_call_mode() const {
@@ -439,102 +416,89 @@ VisualScriptYieldSignal::CallMode VisualScriptYieldSignal::get_call_mode() const
return call_mode;
}
void VisualScriptYieldSignal::_validate_property(PropertyInfo &property) const {
void VisualScriptYieldSignal::_validate_property(PropertyInfo& property) const {
if (property.name=="signal/base_type") {
if (call_mode!=CALL_MODE_INSTANCE) {
property.usage=PROPERTY_USAGE_NOEDITOR;
if (property.name == "signal/base_type") {
if (call_mode != CALL_MODE_INSTANCE) {
property.usage = PROPERTY_USAGE_NOEDITOR;
}
}
if (property.name=="signal/node_path") {
if (call_mode!=CALL_MODE_NODE_PATH) {
property.usage=0;
if (property.name == "signal/node_path") {
if (call_mode != CALL_MODE_NODE_PATH) {
property.usage = 0;
} else {
Node *bnode = _get_base_node();
if (bnode) {
property.hint_string=bnode->get_path(); //convert to loong string
property.hint_string = bnode->get_path(); //convert to loong string
} else {
}
}
}
if (property.name=="signal/signal") {
property.hint=PROPERTY_HINT_ENUM;
if (property.name == "signal/signal") {
property.hint = PROPERTY_HINT_ENUM;
List<MethodInfo> methods;
ClassDB::get_signal_list(_get_base_type(),&methods);
ClassDB::get_signal_list(_get_base_type(), &methods);
List<String> mstring;
for (List<MethodInfo>::Element *E=methods.front();E;E=E->next()) {
for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
if (E->get().name.begins_with("_"))
continue;
mstring.push_back(E->get().name.get_slice(":",0));
mstring.push_back(E->get().name.get_slice(":", 0));
}
mstring.sort();
String ml;
for (List<String>::Element *E=mstring.front();E;E=E->next()) {
for (List<String>::Element *E = mstring.front(); E; E = E->next()) {
if (ml!=String())
ml+=",";
ml+=E->get();
if (ml != String())
ml += ",";
ml += E->get();
}
property.hint_string=ml;
property.hint_string = ml;
}
}
void VisualScriptYieldSignal::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_base_type","base_type"),&VisualScriptYieldSignal::set_base_type);
ClassDB::bind_method(D_METHOD("get_base_type"),&VisualScriptYieldSignal::get_base_type);
ClassDB::bind_method(D_METHOD("set_base_type", "base_type"), &VisualScriptYieldSignal::set_base_type);
ClassDB::bind_method(D_METHOD("get_base_type"), &VisualScriptYieldSignal::get_base_type);
ClassDB::bind_method(D_METHOD("set_signal","signal"),&VisualScriptYieldSignal::set_signal);
ClassDB::bind_method(D_METHOD("get_signal"),&VisualScriptYieldSignal::get_signal);
ClassDB::bind_method(D_METHOD("set_call_mode","mode"),&VisualScriptYieldSignal::set_call_mode);
ClassDB::bind_method(D_METHOD("get_call_mode"),&VisualScriptYieldSignal::get_call_mode);
ClassDB::bind_method(D_METHOD("set_base_path","base_path"),&VisualScriptYieldSignal::set_base_path);
ClassDB::bind_method(D_METHOD("get_base_path"),&VisualScriptYieldSignal::get_base_path);
ClassDB::bind_method(D_METHOD("set_signal", "signal"), &VisualScriptYieldSignal::set_signal);
ClassDB::bind_method(D_METHOD("get_signal"), &VisualScriptYieldSignal::get_signal);
ClassDB::bind_method(D_METHOD("set_call_mode", "mode"), &VisualScriptYieldSignal::set_call_mode);
ClassDB::bind_method(D_METHOD("get_call_mode"), &VisualScriptYieldSignal::get_call_mode);
ClassDB::bind_method(D_METHOD("set_base_path", "base_path"), &VisualScriptYieldSignal::set_base_path);
ClassDB::bind_method(D_METHOD("get_base_path"), &VisualScriptYieldSignal::get_base_path);
String bt;
for(int i=0;i<Variant::VARIANT_MAX;i++) {
if (i>0)
bt+=",";
for (int i = 0; i < Variant::VARIANT_MAX; i++) {
if (i > 0)
bt += ",";
bt+=Variant::get_type_name(Variant::Type(i));
bt += Variant::get_type_name(Variant::Type(i));
}
ADD_PROPERTY(PropertyInfo(Variant::INT,"signal/call_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance"),"set_call_mode","get_call_mode");
ADD_PROPERTY(PropertyInfo(Variant::STRING,"signal/base_type",PROPERTY_HINT_TYPE_STRING,"Object"),"set_base_type","get_base_type");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH,"signal/node_path",PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE),"set_base_path","get_base_path");
ADD_PROPERTY(PropertyInfo(Variant::STRING,"signal/signal"),"set_signal","get_signal");
BIND_CONSTANT( CALL_MODE_SELF );
BIND_CONSTANT( CALL_MODE_NODE_PATH);
BIND_CONSTANT( CALL_MODE_INSTANCE);
ADD_PROPERTY(PropertyInfo(Variant::INT, "signal/call_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance"), "set_call_mode", "get_call_mode");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "signal/base_type", PROPERTY_HINT_TYPE_STRING, "Object"), "set_base_type", "get_base_type");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "signal/node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "signal/signal"), "set_signal", "get_signal");
BIND_CONSTANT(CALL_MODE_SELF);
BIND_CONSTANT(CALL_MODE_NODE_PATH);
BIND_CONSTANT(CALL_MODE_INSTANCE);
}
class VisualScriptNodeInstanceYieldSignal : public VisualScriptNodeInstance {
public:
VisualScriptYieldSignal::CallMode call_mode;
NodePath node_path;
int output_args;
@@ -543,97 +507,88 @@ public:
VisualScriptYieldSignal *node;
VisualScriptInstance *instance;
virtual int get_working_memory_size() const { return 1; }
//virtual bool is_output_port_unsequenced(int p_idx) const { return false; }
//virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; }
virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) {
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Variant::CallError &r_error, String &r_error_str) {
if (p_start_mode==START_MODE_RESUME_YIELD) {
if (p_start_mode == START_MODE_RESUME_YIELD) {
return 0; //resuming yield
} else {
//yield
Object * object;
Object *object;
switch(call_mode) {
switch (call_mode) {
case VisualScriptYieldSignal::CALL_MODE_SELF: {
object=instance->get_owner_ptr();
object = instance->get_owner_ptr();
} break;
case VisualScriptYieldSignal::CALL_MODE_NODE_PATH: {
Node* node = instance->get_owner_ptr()->cast_to<Node>();
Node *node = instance->get_owner_ptr()->cast_to<Node>();
if (!node) {
r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str="Base object is not a Node!";
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Base object is not a Node!";
return 0;
}
Node* another = node->get_node(node_path);
Node *another = node->get_node(node_path);
if (!node) {
r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str="Path does not lead Node!";
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!";
return 0;
}
object=another;
object = another;
} break;
case VisualScriptYieldSignal::CALL_MODE_INSTANCE: {
object = *p_inputs[0];
if (!object) {
r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str="Supplied instance input is null.";
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Supplied instance input is null.";
return 0;
}
} break;
}
Ref<VisualScriptFunctionState> state;
state.instance();
state->connect_to_signal(object,signal,Array());
state->connect_to_signal(object, signal, Array());
*p_working_mem=state;
*p_working_mem = state;
return STEP_YIELD_BIT;
}
}
};
VisualScriptNodeInstance* VisualScriptYieldSignal::instance(VisualScriptInstance* p_instance) {
VisualScriptNodeInstance *VisualScriptYieldSignal::instance(VisualScriptInstance *p_instance) {
VisualScriptNodeInstanceYieldSignal * instance = memnew(VisualScriptNodeInstanceYieldSignal );
instance->node=this;
instance->instance=p_instance;
instance->signal=signal;
instance->call_mode=call_mode;
instance->node_path=base_path;
VisualScriptNodeInstanceYieldSignal *instance = memnew(VisualScriptNodeInstanceYieldSignal);
instance->node = this;
instance->instance = p_instance;
instance->signal = signal;
instance->call_mode = call_mode;
instance->node_path = base_path;
instance->output_args = get_output_value_port_count();
return instance;
}
VisualScriptYieldSignal::VisualScriptYieldSignal() {
call_mode=CALL_MODE_SELF;
base_type="Object";
call_mode = CALL_MODE_SELF;
base_type = "Object";
}
template<VisualScriptYieldSignal::CallMode cmode>
static Ref<VisualScriptNode> create_yield_signal_node(const String& p_name) {
template <VisualScriptYieldSignal::CallMode cmode>
static Ref<VisualScriptNode> create_yield_signal_node(const String &p_name) {
Ref<VisualScriptYieldSignal> node;
node.instance();
@@ -643,12 +598,10 @@ static Ref<VisualScriptNode> create_yield_signal_node(const String& p_name) {
void register_visual_script_yield_nodes() {
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_frame",create_yield_node<VisualScriptYield::YIELD_FRAME>);
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_fixed_frame",create_yield_node<VisualScriptYield::YIELD_FIXED_FRAME>);
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_time",create_yield_node<VisualScriptYield::YIELD_WAIT>);
VisualScriptLanguage::singleton->add_register_func("functions/yield",create_yield_node<VisualScriptYield::YIELD_RETURN>);
VisualScriptLanguage::singleton->add_register_func("functions/yield_signal",create_node_generic<VisualScriptYieldSignal>);
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_frame", create_yield_node<VisualScriptYield::YIELD_FRAME>);
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_fixed_frame", create_yield_node<VisualScriptYield::YIELD_FIXED_FRAME>);
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_time", create_yield_node<VisualScriptYield::YIELD_WAIT>);
VisualScriptLanguage::singleton->add_register_func("functions/yield", create_yield_node<VisualScriptYield::YIELD_RETURN>);
VisualScriptLanguage::singleton->add_register_func("functions/yield_signal", create_node_generic<VisualScriptYieldSignal>);
}

View File

@@ -33,9 +33,8 @@
class VisualScriptYield : public VisualScriptNode {
GDCLASS(VisualScriptYield,VisualScriptNode)
GDCLASS(VisualScriptYield, VisualScriptNode)
public:
enum YieldMode {
YIELD_RETURN,
YIELD_FRAME,
@@ -43,30 +42,25 @@ public:
YIELD_WAIT
};
private:
private:
YieldMode yield_mode;
float wait_time;
protected:
virtual void _validate_property(PropertyInfo& property) const;
virtual void _validate_property(PropertyInfo &property) const;
static void _bind_methods();
public:
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;
@@ -80,15 +74,15 @@ public:
void set_wait_time(float p_time);
float get_wait_time();
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptYield();
};
VARIANT_ENUM_CAST( VisualScriptYield::YieldMode )
VARIANT_ENUM_CAST(VisualScriptYield::YieldMode)
class VisualScriptYieldSignal : public VisualScriptNode {
GDCLASS(VisualScriptYieldSignal,VisualScriptNode)
GDCLASS(VisualScriptYieldSignal, VisualScriptNode)
public:
enum CallMode {
CALL_MODE_SELF,
@@ -96,8 +90,8 @@ public:
CALL_MODE_INSTANCE,
};
private:
private:
CallMode call_mode;
StringName base_type;
NodePath base_path;
@@ -106,25 +100,20 @@ private:
Node *_get_base_node() const;
StringName _get_base_type() const;
protected:
virtual void _validate_property(PropertyInfo& property) const;
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;
@@ -132,24 +121,24 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "functions"; }
void set_base_type(const StringName& p_type);
void set_base_type(const StringName &p_type);
StringName get_base_type() const;
void set_signal(const StringName& p_type);
void set_signal(const StringName &p_type);
StringName get_signal() const;
void set_base_path(const NodePath& p_type);
void set_base_path(const NodePath &p_type);
NodePath get_base_path() const;
void set_call_mode(CallMode p_mode);
CallMode get_call_mode() const;
virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance);
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
VisualScriptYieldSignal();
};
VARIANT_ENUM_CAST(VisualScriptYieldSignal::CallMode );
VARIANT_ENUM_CAST(VisualScriptYieldSignal::CallMode);
void register_visual_script_yield_nodes();