mirror of
https://github.com/godotengine/godot-visual-script.git
synced 2026-01-03 10:09:19 +03:00
Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
This commit is contained in:
@@ -47,7 +47,6 @@ static _VisualScriptEditor *vs_editor_singleton = NULL;
|
||||
#endif
|
||||
|
||||
void register_visual_script_types() {
|
||||
|
||||
visual_script_language = memnew(VisualScriptLanguage);
|
||||
//script_language_gd->init();
|
||||
ScriptServer::register_language(visual_script_language);
|
||||
@@ -125,7 +124,6 @@ void register_visual_script_types() {
|
||||
}
|
||||
|
||||
void unregister_visual_script_types() {
|
||||
|
||||
unregister_visual_script_nodes();
|
||||
|
||||
ScriptServer::unregister_language(visual_script_language);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -87,7 +87,6 @@ public:
|
||||
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance) = 0;
|
||||
|
||||
struct TypeGuess {
|
||||
|
||||
Variant::Type type;
|
||||
StringName gdclass;
|
||||
Ref<Script> script;
|
||||
@@ -164,16 +163,13 @@ public:
|
||||
};
|
||||
|
||||
class VisualScript : public Script {
|
||||
|
||||
GDCLASS(VisualScript, Script);
|
||||
|
||||
RES_BASE_EXTENSION("vs");
|
||||
|
||||
public:
|
||||
struct SequenceConnection {
|
||||
|
||||
union {
|
||||
|
||||
struct {
|
||||
uint64_t from_node : 24;
|
||||
uint64_t from_output : 16;
|
||||
@@ -183,15 +179,12 @@ public:
|
||||
};
|
||||
|
||||
bool operator<(const SequenceConnection &p_connection) const {
|
||||
|
||||
return id < p_connection.id;
|
||||
}
|
||||
};
|
||||
|
||||
struct DataConnection {
|
||||
|
||||
union {
|
||||
|
||||
struct {
|
||||
uint64_t from_node : 24;
|
||||
uint64_t from_port : 8;
|
||||
@@ -202,7 +195,6 @@ public:
|
||||
};
|
||||
|
||||
bool operator<(const DataConnection &p_connection) const {
|
||||
|
||||
return id < p_connection.id;
|
||||
}
|
||||
};
|
||||
@@ -413,7 +405,6 @@ public:
|
||||
String to_string(bool *r_valid);
|
||||
|
||||
bool set_variable(const StringName &p_variable, const Variant &p_value) {
|
||||
|
||||
Map<StringName, Variant>::Element *E = variables.find(p_variable);
|
||||
if (!E)
|
||||
return false;
|
||||
@@ -423,7 +414,6 @@ public:
|
||||
}
|
||||
|
||||
bool get_variable(const StringName &p_variable, Variant *r_variable) const {
|
||||
|
||||
const Map<StringName, Variant>::Element *E = variables.find(p_variable);
|
||||
if (!E)
|
||||
return false;
|
||||
@@ -449,7 +439,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptFunctionState : public Reference {
|
||||
|
||||
GDCLASS(VisualScriptFunctionState, Reference);
|
||||
friend class VisualScriptInstance;
|
||||
|
||||
@@ -480,11 +469,9 @@ public:
|
||||
typedef Ref<VisualScriptNode> (*VisualScriptNodeRegisterFunc)(const String &p_type);
|
||||
|
||||
class VisualScriptLanguage : public ScriptLanguage {
|
||||
|
||||
Map<String, VisualScriptNodeRegisterFunc> register_funcs;
|
||||
|
||||
struct CallLevel {
|
||||
|
||||
Variant *stack;
|
||||
Variant **work_mem;
|
||||
const StringName *function;
|
||||
@@ -513,7 +500,6 @@ public:
|
||||
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) {
|
||||
|
||||
if (Thread::get_main_id() != Thread::get_caller_id())
|
||||
return; //no support for other threads than main for now
|
||||
|
||||
@@ -536,7 +522,6 @@ public:
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ void exit_function() {
|
||||
|
||||
if (Thread::get_main_id() != Thread::get_caller_id())
|
||||
return; //no support for other threads than main for now
|
||||
|
||||
@@ -544,7 +529,6 @@ public:
|
||||
ScriptDebugger::get_singleton()->set_depth(ScriptDebugger::get_singleton()->get_depth() - 1);
|
||||
|
||||
if (_debug_call_stack_pos == 0) {
|
||||
|
||||
_debug_error = "Stack Underflow (Engine Bug)";
|
||||
ScriptDebugger::get_singleton()->debug(this);
|
||||
return;
|
||||
@@ -618,7 +602,6 @@ public:
|
||||
//aid for registering
|
||||
template <class T>
|
||||
static Ref<VisualScriptNode> create_node_generic(const String &p_name) {
|
||||
|
||||
Ref<T> node;
|
||||
node.instance();
|
||||
return node;
|
||||
|
||||
@@ -110,7 +110,6 @@ const char *VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX
|
||||
};
|
||||
|
||||
VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::find_function(const String &p_string) {
|
||||
|
||||
for (int i = 0; i < FUNC_MAX; i++) {
|
||||
if (p_string == func_name[i])
|
||||
return BuiltinFunc(i);
|
||||
@@ -120,20 +119,16 @@ VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::find_function(cons
|
||||
}
|
||||
|
||||
String VisualScriptBuiltinFunc::get_func_name(BuiltinFunc p_func) {
|
||||
|
||||
ERR_FAIL_INDEX_V(p_func, FUNC_MAX, String());
|
||||
return func_name[p_func];
|
||||
}
|
||||
|
||||
int VisualScriptBuiltinFunc::get_output_sequence_port_count() const {
|
||||
|
||||
return has_input_sequence_port() ? 1 : 0;
|
||||
}
|
||||
|
||||
bool VisualScriptBuiltinFunc::has_input_sequence_port() const {
|
||||
|
||||
switch (func) {
|
||||
|
||||
case MATH_RANDOMIZE:
|
||||
case TEXT_PRINT:
|
||||
case TEXT_PRINTERR:
|
||||
@@ -145,9 +140,7 @@ bool VisualScriptBuiltinFunc::has_input_sequence_port() const {
|
||||
}
|
||||
|
||||
int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) {
|
||||
|
||||
switch (p_func) {
|
||||
|
||||
case MATH_RANDOMIZE:
|
||||
case MATH_RAND:
|
||||
case MATH_RANDF:
|
||||
@@ -228,11 +221,9 @@ int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) {
|
||||
}
|
||||
|
||||
int VisualScriptBuiltinFunc::get_input_value_port_count() const {
|
||||
|
||||
return get_func_argument_count(func);
|
||||
}
|
||||
int VisualScriptBuiltinFunc::get_output_value_port_count() const {
|
||||
|
||||
switch (func) {
|
||||
case MATH_RANDOMIZE:
|
||||
case TEXT_PRINT:
|
||||
@@ -250,14 +241,11 @@ int VisualScriptBuiltinFunc::get_output_value_port_count() const {
|
||||
}
|
||||
|
||||
String VisualScriptBuiltinFunc::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
switch (func) {
|
||||
|
||||
case MATH_SIN:
|
||||
case MATH_COS:
|
||||
case MATH_TAN:
|
||||
@@ -363,7 +351,6 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
|
||||
case MATH_RANDOMIZE:
|
||||
case MATH_RAND:
|
||||
case MATH_RANDF: {
|
||||
|
||||
} break;
|
||||
case MATH_RANDOM: {
|
||||
if (p_idx == 0)
|
||||
@@ -453,7 +440,6 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
|
||||
return PropertyInfo(Variant::NIL, "value");
|
||||
} break;
|
||||
case STR_TO_VAR: {
|
||||
|
||||
return PropertyInfo(Variant::STRING, "string");
|
||||
} break;
|
||||
case VAR_TO_STR:
|
||||
@@ -465,7 +451,6 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
|
||||
|
||||
} break;
|
||||
case BYTES_TO_VAR: {
|
||||
|
||||
if (p_idx == 0)
|
||||
return PropertyInfo(Variant::POOL_BYTE_ARRAY, "bytes");
|
||||
else
|
||||
@@ -485,10 +470,8 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) const {
|
||||
|
||||
Variant::Type t = Variant::NIL;
|
||||
switch (func) {
|
||||
|
||||
case MATH_SIN:
|
||||
case MATH_COS:
|
||||
case MATH_TAN:
|
||||
@@ -545,10 +528,8 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
|
||||
|
||||
} break;
|
||||
case MATH_RANDOMIZE: {
|
||||
|
||||
} break;
|
||||
case MATH_RAND: {
|
||||
|
||||
t = Variant::INT;
|
||||
} break;
|
||||
case MATH_RANDF:
|
||||
@@ -556,10 +537,8 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
|
||||
t = Variant::REAL;
|
||||
} break;
|
||||
case MATH_SEED: {
|
||||
|
||||
} break;
|
||||
case MATH_RANDSEED: {
|
||||
|
||||
if (p_idx == 0)
|
||||
return PropertyInfo(Variant::INT, "rnd");
|
||||
else
|
||||
@@ -582,24 +561,20 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
|
||||
case LOGIC_MAX:
|
||||
case LOGIC_MIN:
|
||||
case LOGIC_CLAMP: {
|
||||
|
||||
} break;
|
||||
|
||||
case LOGIC_NEAREST_PO2: {
|
||||
t = Variant::NIL;
|
||||
} break;
|
||||
case OBJ_WEAKREF: {
|
||||
|
||||
t = Variant::OBJECT;
|
||||
|
||||
} break;
|
||||
case FUNC_FUNCREF: {
|
||||
|
||||
t = Variant::OBJECT;
|
||||
|
||||
} break;
|
||||
case TYPE_CONVERT: {
|
||||
|
||||
} break;
|
||||
case TEXT_ORD:
|
||||
case TYPE_OF: {
|
||||
@@ -607,30 +582,24 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
|
||||
|
||||
} break;
|
||||
case TYPE_EXISTS: {
|
||||
|
||||
t = Variant::BOOL;
|
||||
|
||||
} break;
|
||||
case TEXT_CHAR:
|
||||
case TEXT_STR: {
|
||||
|
||||
t = Variant::STRING;
|
||||
|
||||
} break;
|
||||
case TEXT_PRINT: {
|
||||
|
||||
} break;
|
||||
case TEXT_PRINTERR: {
|
||||
|
||||
} break;
|
||||
case TEXT_PRINTRAW: {
|
||||
|
||||
} break;
|
||||
case VAR_TO_STR: {
|
||||
t = Variant::STRING;
|
||||
} break;
|
||||
case STR_TO_VAR: {
|
||||
|
||||
} break;
|
||||
case VAR_TO_BYTES: {
|
||||
if (p_idx == 0)
|
||||
@@ -661,12 +630,10 @@ String VisualScriptBuiltinFunc::get_caption() const {
|
||||
*/
|
||||
|
||||
String VisualScriptBuiltinFunc::get_caption() const {
|
||||
|
||||
return func_name[func];
|
||||
}
|
||||
|
||||
void VisualScriptBuiltinFunc::set_func(BuiltinFunc p_which) {
|
||||
|
||||
ERR_FAIL_INDEX(p_which, FUNC_MAX);
|
||||
func = p_which;
|
||||
_change_notify();
|
||||
@@ -686,197 +653,159 @@ VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::get_func() {
|
||||
}
|
||||
|
||||
void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant *r_return, Variant::CallError &r_error, String &r_error_str) {
|
||||
|
||||
switch (p_func) {
|
||||
case VisualScriptBuiltinFunc::MATH_SIN: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::sin((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_COS: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::cos((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_TAN: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::tan((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_SINH: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::sinh((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_COSH: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::cosh((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_TANH: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::tanh((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ASIN: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::asin((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ACOS: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::acos((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ATAN: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::atan((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ATAN2: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::atan2((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_SQRT: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::sqrt((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_FMOD: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::fmod((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_FPOSMOD: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::fposmod((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_POSMOD: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::posmod((int64_t)*p_inputs[0], (int64_t)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_FLOOR: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::floor((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_CEIL: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::ceil((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ROUND: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::round((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ABS: {
|
||||
|
||||
if (p_inputs[0]->get_type() == Variant::INT) {
|
||||
|
||||
int64_t i = *p_inputs[0];
|
||||
*r_return = ABS(i);
|
||||
} else if (p_inputs[0]->get_type() == Variant::REAL) {
|
||||
|
||||
real_t r = *p_inputs[0];
|
||||
*r_return = Math::abs(r);
|
||||
} else {
|
||||
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::REAL;
|
||||
}
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_SIGN: {
|
||||
|
||||
if (p_inputs[0]->get_type() == Variant::INT) {
|
||||
|
||||
int64_t i = *p_inputs[0];
|
||||
*r_return = i < 0 ? -1 : (i > 0 ? +1 : 0);
|
||||
} else if (p_inputs[0]->get_type() == Variant::REAL) {
|
||||
|
||||
real_t r = *p_inputs[0];
|
||||
*r_return = r < 0.0 ? -1.0 : (r > 0.0 ? +1.0 : 0.0);
|
||||
} else {
|
||||
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::REAL;
|
||||
}
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_POW: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::pow((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_LOG: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::log((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_EXP: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::exp((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ISNAN: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::is_nan((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_ISINF: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::is_inf((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_EASE: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::ease((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_DECIMALS: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::step_decimals((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_STEPIFY: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::stepify((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_LERP: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
*r_return = Math::lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_LERP_ANGLE: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
*r_return = Math::lerp_angle((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_INVERSE_LERP: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
*r_return = Math::inverse_lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_RANGE_LERP: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
@@ -891,14 +820,12 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
*r_return = Math::smoothstep((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_MOVE_TOWARD: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
*r_return = Math::move_toward((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_DECTIME: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
@@ -915,20 +842,17 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
*r_return = Math::randf();
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_RANDOM: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
*r_return = Math::random((double)*p_inputs[0], (double)*p_inputs[1]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_SEED: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
uint64_t seed = *p_inputs[0];
|
||||
Math::seed(seed);
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_RANDSEED: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
uint64_t seed = *p_inputs[0];
|
||||
int ret = Math::rand_from_seed(&seed);
|
||||
@@ -939,22 +863,18 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_DEG2RAD: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::deg2rad((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_RAD2DEG: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::rad2deg((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_LINEAR2DB: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::linear2db((double)*p_inputs[0]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::MATH_DB2LINEAR: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
*r_return = Math::db2linear((double)*p_inputs[0]);
|
||||
} break;
|
||||
@@ -985,9 +905,7 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
*r_return = Math::wrapf((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::LOGIC_MAX: {
|
||||
|
||||
if (p_inputs[0]->get_type() == Variant::INT && p_inputs[1]->get_type() == Variant::INT) {
|
||||
|
||||
int64_t a = *p_inputs[0];
|
||||
int64_t b = *p_inputs[1];
|
||||
*r_return = MAX(a, b);
|
||||
@@ -1003,9 +921,7 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::LOGIC_MIN: {
|
||||
|
||||
if (p_inputs[0]->get_type() == Variant::INT && p_inputs[1]->get_type() == Variant::INT) {
|
||||
|
||||
int64_t a = *p_inputs[0];
|
||||
int64_t b = *p_inputs[1];
|
||||
*r_return = MIN(a, b);
|
||||
@@ -1020,9 +936,7 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
}
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::LOGIC_CLAMP: {
|
||||
|
||||
if (p_inputs[0]->get_type() == Variant::INT && p_inputs[1]->get_type() == Variant::INT && p_inputs[2]->get_type() == Variant::INT) {
|
||||
|
||||
int64_t a = *p_inputs[0];
|
||||
int64_t b = *p_inputs[1];
|
||||
int64_t c = *p_inputs[2];
|
||||
@@ -1040,15 +954,12 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
}
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::LOGIC_NEAREST_PO2: {
|
||||
|
||||
VALIDATE_ARG_NUM(0);
|
||||
int64_t num = *p_inputs[0];
|
||||
*r_return = next_power_of_2(num);
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::OBJ_WEAKREF: {
|
||||
|
||||
if (p_inputs[0]->get_type() != Variant::OBJECT) {
|
||||
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::OBJECT;
|
||||
@@ -1057,10 +968,8 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
}
|
||||
|
||||
if (p_inputs[0]->is_ref()) {
|
||||
|
||||
REF r = *p_inputs[0];
|
||||
if (!r.is_valid()) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1070,7 +979,6 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
} else {
|
||||
Object *obj = *p_inputs[0];
|
||||
if (!obj) {
|
||||
|
||||
return;
|
||||
}
|
||||
Ref<WeakRef> wref = memnew(WeakRef);
|
||||
@@ -1080,9 +988,7 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::FUNC_FUNCREF: {
|
||||
|
||||
if (p_inputs[0]->get_type() != Variant::OBJECT) {
|
||||
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::OBJECT;
|
||||
@@ -1090,7 +996,6 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
return;
|
||||
}
|
||||
if (p_inputs[1]->get_type() != Variant::STRING && p_inputs[1]->get_type() != Variant::NODE_PATH) {
|
||||
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 1;
|
||||
r_error.expected = Variant::STRING;
|
||||
@@ -1107,11 +1012,9 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TYPE_CONVERT: {
|
||||
|
||||
VALIDATE_ARG_NUM(1);
|
||||
int type = *p_inputs[1];
|
||||
if (type < 0 || type >= Variant::VARIANT_MAX) {
|
||||
|
||||
r_error_str = RTR("Invalid type argument to convert(), use TYPE_* constants.");
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
@@ -1119,29 +1022,24 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
return;
|
||||
|
||||
} else {
|
||||
|
||||
*r_return = Variant::construct(Variant::Type(type), p_inputs, 1, r_error);
|
||||
}
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TYPE_OF: {
|
||||
|
||||
*r_return = p_inputs[0]->get_type();
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TYPE_EXISTS: {
|
||||
|
||||
*r_return = ClassDB::class_exists(*p_inputs[0]);
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TEXT_CHAR: {
|
||||
|
||||
CharType result[2] = { *p_inputs[0], 0 };
|
||||
|
||||
*r_return = String(result);
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TEXT_ORD: {
|
||||
|
||||
if (p_inputs[0]->get_type() != Variant::STRING) {
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
@@ -1165,39 +1063,33 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TEXT_STR: {
|
||||
|
||||
String str = *p_inputs[0];
|
||||
|
||||
*r_return = str;
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TEXT_PRINT: {
|
||||
|
||||
String str = *p_inputs[0];
|
||||
print_line(str);
|
||||
|
||||
} break;
|
||||
|
||||
case VisualScriptBuiltinFunc::TEXT_PRINTERR: {
|
||||
|
||||
String str = *p_inputs[0];
|
||||
print_error(str);
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::TEXT_PRINTRAW: {
|
||||
|
||||
String str = *p_inputs[0];
|
||||
OS::get_singleton()->print("%s", str.utf8().get_data());
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::VAR_TO_STR: {
|
||||
|
||||
String vars;
|
||||
VariantWriter::write_to_string(*p_inputs[0], vars);
|
||||
*r_return = vars;
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::STR_TO_VAR: {
|
||||
|
||||
if (p_inputs[0]->get_type() != Variant::STRING) {
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
@@ -1223,7 +1115,6 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::VAR_TO_BYTES: {
|
||||
|
||||
if (p_inputs[1]->get_type() != Variant::BOOL) {
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 1;
|
||||
@@ -1250,7 +1141,6 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
*r_return = barr;
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::BYTES_TO_VAR: {
|
||||
|
||||
if (p_inputs[0]->get_type() != Variant::POOL_BYTE_ARRAY) {
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
@@ -1283,7 +1173,6 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
||||
|
||||
} break;
|
||||
case VisualScriptBuiltinFunc::COLORN: {
|
||||
|
||||
VALIDATE_ARG_NUM(1);
|
||||
|
||||
Color color = Color::named(*p_inputs[0]);
|
||||
@@ -1309,14 +1198,12 @@ public:
|
||||
//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) {
|
||||
|
||||
VisualScriptBuiltinFunc::exec_func(func, p_inputs, p_outputs[0], r_error, r_error_str);
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptBuiltinFunc::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceBuiltinFunc *instance = memnew(VisualScriptNodeInstanceBuiltinFunc);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -1325,14 +1212,12 @@ VisualScriptNodeInstance *VisualScriptBuiltinFunc::instance(VisualScriptInstance
|
||||
}
|
||||
|
||||
void VisualScriptBuiltinFunc::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_func", "which"), &VisualScriptBuiltinFunc::set_func);
|
||||
ClassDB::bind_method(D_METHOD("get_func"), &VisualScriptBuiltinFunc::get_func);
|
||||
|
||||
String cc;
|
||||
|
||||
for (int i = 0; i < FUNC_MAX; i++) {
|
||||
|
||||
if (i > 0)
|
||||
cc += ",";
|
||||
cc += func_name[i];
|
||||
@@ -1411,24 +1296,20 @@ void VisualScriptBuiltinFunc::_bind_methods() {
|
||||
}
|
||||
|
||||
VisualScriptBuiltinFunc::VisualScriptBuiltinFunc(VisualScriptBuiltinFunc::BuiltinFunc func) {
|
||||
|
||||
this->func = func;
|
||||
}
|
||||
|
||||
VisualScriptBuiltinFunc::VisualScriptBuiltinFunc() {
|
||||
|
||||
func = MATH_SIN;
|
||||
}
|
||||
|
||||
template <VisualScriptBuiltinFunc::BuiltinFunc func>
|
||||
static Ref<VisualScriptNode> create_builtin_func_node(const String &p_name) {
|
||||
|
||||
Ref<VisualScriptBuiltinFunc> node = memnew(VisualScriptBuiltinFunc(func));
|
||||
return node;
|
||||
}
|
||||
|
||||
void register_visual_script_builtin_func_node() {
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/built_in/sin", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SIN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/built_in/cos", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_COS>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/built_in/tan", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_TAN>);
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptBuiltinFunc : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptBuiltinFunc, VisualScriptNode);
|
||||
|
||||
public:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -153,7 +153,6 @@ class VisualScriptEditor : public ScriptEditorBase {
|
||||
String _validate_name(const String &p_name) const;
|
||||
|
||||
struct Clipboard {
|
||||
|
||||
Map<int, Ref<VisualScriptNode>> nodes;
|
||||
Map<int, Vector2> nodes_positions;
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include "visual_script_expression.h"
|
||||
|
||||
bool VisualScriptExpression::_set(const StringName &p_name, const Variant &p_value) {
|
||||
|
||||
if (String(p_name) == "expression") {
|
||||
expression = p_value;
|
||||
expression_dirty = true;
|
||||
@@ -52,7 +51,6 @@ bool VisualScriptExpression::_set(const StringName &p_name, const Variant &p_val
|
||||
}
|
||||
|
||||
if (String(p_name) == "input_count") {
|
||||
|
||||
int from = inputs.size();
|
||||
inputs.resize(int(p_value));
|
||||
for (int i = from; i < inputs.size(); i++) {
|
||||
@@ -70,17 +68,14 @@ bool VisualScriptExpression::_set(const StringName &p_name, const Variant &p_val
|
||||
}
|
||||
|
||||
if (String(p_name).begins_with("input_")) {
|
||||
|
||||
int idx = String(p_name).get_slicec('_', 1).get_slicec('/', 0).to_int();
|
||||
ERR_FAIL_INDEX_V(idx, inputs.size(), false);
|
||||
|
||||
String what = String(p_name).get_slice("/", 1);
|
||||
|
||||
if (what == "type") {
|
||||
|
||||
inputs.write[idx].type = Variant::Type(int(p_value));
|
||||
} else if (what == "name") {
|
||||
|
||||
inputs.write[idx].name = p_value;
|
||||
} else {
|
||||
return false;
|
||||
@@ -95,7 +90,6 @@ bool VisualScriptExpression::_set(const StringName &p_name, const Variant &p_val
|
||||
}
|
||||
|
||||
bool VisualScriptExpression::_get(const StringName &p_name, Variant &r_ret) const {
|
||||
|
||||
if (String(p_name) == "expression") {
|
||||
r_ret = expression;
|
||||
return true;
|
||||
@@ -117,17 +111,14 @@ bool VisualScriptExpression::_get(const StringName &p_name, Variant &r_ret) cons
|
||||
}
|
||||
|
||||
if (String(p_name).begins_with("input_")) {
|
||||
|
||||
int idx = String(p_name).get_slicec('_', 1).get_slicec('/', 0).to_int();
|
||||
ERR_FAIL_INDEX_V(idx, inputs.size(), false);
|
||||
|
||||
String what = String(p_name).get_slice("/", 1);
|
||||
|
||||
if (what == "type") {
|
||||
|
||||
r_ret = inputs[idx].type;
|
||||
} else if (what == "name") {
|
||||
|
||||
r_ret = inputs[idx].name;
|
||||
} else {
|
||||
return false;
|
||||
@@ -139,7 +130,6 @@ bool VisualScriptExpression::_get(const StringName &p_name, Variant &r_ret) cons
|
||||
return false;
|
||||
}
|
||||
void VisualScriptExpression::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||
|
||||
String argt = "Any";
|
||||
for (int i = 1; i < Variant::VARIANT_MAX; i++) {
|
||||
argt += "," + Variant::get_type_name(Variant::Type(i));
|
||||
@@ -151,55 +141,44 @@ void VisualScriptExpression::_get_property_list(List<PropertyInfo> *p_list) cons
|
||||
p_list->push_back(PropertyInfo(Variant::BOOL, "sequenced"));
|
||||
|
||||
for (int i = 0; i < inputs.size(); i++) {
|
||||
|
||||
p_list->push_back(PropertyInfo(Variant::INT, "input_" + itos(i) + "/type", PROPERTY_HINT_ENUM, argt));
|
||||
p_list->push_back(PropertyInfo(Variant::STRING, "input_" + itos(i) + "/name"));
|
||||
}
|
||||
}
|
||||
|
||||
int VisualScriptExpression::get_output_sequence_port_count() const {
|
||||
|
||||
return sequenced ? 1 : 0;
|
||||
}
|
||||
bool VisualScriptExpression::has_input_sequence_port() const {
|
||||
|
||||
return sequenced;
|
||||
}
|
||||
|
||||
String VisualScriptExpression::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
int VisualScriptExpression::get_input_value_port_count() const {
|
||||
|
||||
return inputs.size();
|
||||
}
|
||||
int VisualScriptExpression::get_output_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptExpression::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
return PropertyInfo(inputs[p_idx].type, inputs[p_idx].name);
|
||||
}
|
||||
PropertyInfo VisualScriptExpression::get_output_value_port_info(int p_idx) const {
|
||||
|
||||
return PropertyInfo(output_type, "result");
|
||||
}
|
||||
|
||||
String VisualScriptExpression::get_caption() const {
|
||||
|
||||
return "Expression";
|
||||
}
|
||||
String VisualScriptExpression::get_text() const {
|
||||
|
||||
return expression;
|
||||
}
|
||||
|
||||
Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
|
||||
while (true) {
|
||||
#define GET_CHAR() (str_ofs >= expression.length() ? 0 : expression[str_ofs++])
|
||||
|
||||
@@ -210,58 +189,47 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
}
|
||||
|
||||
switch (cchar) {
|
||||
|
||||
case 0: {
|
||||
r_token.type = TK_EOF;
|
||||
return OK;
|
||||
} break;
|
||||
case '{': {
|
||||
|
||||
r_token.type = TK_CURLY_BRACKET_OPEN;
|
||||
return OK;
|
||||
};
|
||||
case '}': {
|
||||
|
||||
r_token.type = TK_CURLY_BRACKET_CLOSE;
|
||||
return OK;
|
||||
};
|
||||
case '[': {
|
||||
|
||||
r_token.type = TK_BRACKET_OPEN;
|
||||
return OK;
|
||||
};
|
||||
case ']': {
|
||||
|
||||
r_token.type = TK_BRACKET_CLOSE;
|
||||
return OK;
|
||||
};
|
||||
case '(': {
|
||||
|
||||
r_token.type = TK_PARENTHESIS_OPEN;
|
||||
return OK;
|
||||
};
|
||||
case ')': {
|
||||
|
||||
r_token.type = TK_PARENTHESIS_CLOSE;
|
||||
return OK;
|
||||
};
|
||||
case ',': {
|
||||
|
||||
r_token.type = TK_COMMA;
|
||||
return OK;
|
||||
};
|
||||
case ':': {
|
||||
|
||||
r_token.type = TK_COLON;
|
||||
return OK;
|
||||
};
|
||||
case '.': {
|
||||
|
||||
r_token.type = TK_PERIOD;
|
||||
return OK;
|
||||
};
|
||||
case '=': {
|
||||
|
||||
cchar = GET_CHAR();
|
||||
if (cchar == '=') {
|
||||
r_token.type = TK_OP_EQUAL;
|
||||
@@ -273,7 +241,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
};
|
||||
case '!': {
|
||||
|
||||
if (expression[str_ofs] == '=') {
|
||||
r_token.type = TK_OP_NOT_EQUAL;
|
||||
str_ofs++;
|
||||
@@ -283,7 +250,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
};
|
||||
case '>': {
|
||||
|
||||
if (expression[str_ofs] == '=') {
|
||||
r_token.type = TK_OP_GREATER_EQUAL;
|
||||
str_ofs++;
|
||||
@@ -296,7 +262,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
};
|
||||
case '<': {
|
||||
|
||||
if (expression[str_ofs] == '=') {
|
||||
r_token.type = TK_OP_LESS_EQUAL;
|
||||
str_ofs++;
|
||||
@@ -329,7 +294,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
};
|
||||
case '&': {
|
||||
|
||||
if (expression[str_ofs] == '&') {
|
||||
r_token.type = TK_OP_AND;
|
||||
str_ofs++;
|
||||
@@ -339,7 +303,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
};
|
||||
case '|': {
|
||||
|
||||
if (expression[str_ofs] == '|') {
|
||||
r_token.type = TK_OP_OR;
|
||||
str_ofs++;
|
||||
@@ -349,22 +312,18 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
};
|
||||
case '^': {
|
||||
|
||||
r_token.type = TK_OP_BIT_XOR;
|
||||
|
||||
return OK;
|
||||
};
|
||||
case '~': {
|
||||
|
||||
r_token.type = TK_OP_BIT_INVERT;
|
||||
|
||||
return OK;
|
||||
};
|
||||
case '"': {
|
||||
|
||||
String str;
|
||||
while (true) {
|
||||
|
||||
CharType ch = GET_CHAR();
|
||||
|
||||
if (ch == 0) {
|
||||
@@ -385,7 +344,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
CharType res = 0;
|
||||
|
||||
switch (next) {
|
||||
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
@@ -413,7 +371,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) {
|
||||
|
||||
_set_error("Malformed hex constant in string");
|
||||
r_token.type = TK_ERROR;
|
||||
return ERR_PARSE_ERROR;
|
||||
@@ -460,7 +417,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
|
||||
} break;
|
||||
default: {
|
||||
|
||||
if (cchar <= 32) {
|
||||
break;
|
||||
}
|
||||
@@ -482,10 +438,8 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
bool is_float = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
switch (reading) {
|
||||
case READING_INT: {
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
//pass
|
||||
} else if (c == '.') {
|
||||
@@ -499,9 +453,7 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
|
||||
} break;
|
||||
case READING_DEC: {
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
|
||||
} else if (c == 'e') {
|
||||
reading = READING_EXP;
|
||||
|
||||
@@ -511,7 +463,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
|
||||
} break;
|
||||
case READING_EXP: {
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
exp_beg = true;
|
||||
|
||||
@@ -543,12 +494,10 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
return OK;
|
||||
|
||||
} else if ((cchar >= 'A' && cchar <= 'Z') || (cchar >= 'a' && cchar <= 'z') || cchar == '_') {
|
||||
|
||||
String id;
|
||||
bool first = true;
|
||||
|
||||
while ((cchar >= 'A' && cchar <= 'Z') || (cchar >= 'a' && cchar <= 'z') || cchar == '_' || (!first && cchar >= '0' && cchar <= '9')) {
|
||||
|
||||
id += String::chr(cchar);
|
||||
cchar = GET_CHAR();
|
||||
first = false;
|
||||
@@ -588,7 +537,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
||||
} else if (id == "self") {
|
||||
r_token.type = TK_SELF;
|
||||
} else {
|
||||
|
||||
for (int i = 0; i < Variant::VARIANT_MAX; i++) {
|
||||
if (id == Variant::get_type_name(Variant::Type(i))) {
|
||||
r_token.type = TK_BASIC_TYPE;
|
||||
@@ -663,7 +611,6 @@ const char *VisualScriptExpression::token_name[TK_MAX] = {
|
||||
};
|
||||
|
||||
VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
|
||||
Vector<Expression> expression;
|
||||
|
||||
while (true) {
|
||||
@@ -681,7 +628,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
DictionaryNode *dn = alloc_node<DictionaryNode>();
|
||||
|
||||
while (true) {
|
||||
|
||||
int cofs = str_ofs;
|
||||
_get_token(tk);
|
||||
if (tk.type == TK_CURLY_BRACKET_CLOSE) {
|
||||
@@ -725,7 +671,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
ArrayNode *an = alloc_node<ArrayNode>();
|
||||
|
||||
while (true) {
|
||||
|
||||
int cofs = str_ofs;
|
||||
_get_token(tk);
|
||||
if (tk.type == TK_BRACKET_CLOSE) {
|
||||
@@ -766,7 +711,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
|
||||
} break;
|
||||
case TK_IDENTIFIER: {
|
||||
|
||||
String what = tk.value;
|
||||
int index = -1;
|
||||
for (int i = 0; i < inputs.size(); i++) {
|
||||
@@ -786,7 +730,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
}
|
||||
} break;
|
||||
case TK_SELF: {
|
||||
|
||||
SelfNode *self = alloc_node<SelfNode>();
|
||||
expr = self;
|
||||
} break;
|
||||
@@ -809,7 +752,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
constructor->data_type = bt;
|
||||
|
||||
while (true) {
|
||||
|
||||
int cofs = str_ofs;
|
||||
_get_token(tk);
|
||||
if (tk.type == TK_PARENTHESIS_CLOSE) {
|
||||
@@ -850,7 +792,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
bifunc->func = VisualScriptBuiltinFunc::BuiltinFunc(int(tk.value));
|
||||
|
||||
while (true) {
|
||||
|
||||
int cofs = str_ofs;
|
||||
_get_token(tk);
|
||||
if (tk.type == TK_PARENTHESIS_CLOSE) {
|
||||
@@ -884,7 +825,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
|
||||
} break;
|
||||
case TK_OP_SUB: {
|
||||
|
||||
Expression e;
|
||||
e.is_op = true;
|
||||
e.op = Variant::OP_NEGATE;
|
||||
@@ -892,7 +832,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
continue;
|
||||
} break;
|
||||
case TK_OP_NOT: {
|
||||
|
||||
Expression e;
|
||||
e.is_op = true;
|
||||
e.op = Variant::OP_NOT;
|
||||
@@ -956,7 +895,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
func_call->base = expr;
|
||||
|
||||
while (true) {
|
||||
|
||||
int cofs3 = str_ofs;
|
||||
_get_token(tk);
|
||||
if (tk.type == TK_PARENTHESIS_CLOSE) {
|
||||
@@ -1105,15 +1043,12 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
/* Reduce the set set of expressions and place them in an operator tree, respecting precedence */
|
||||
|
||||
while (expression.size() > 1) {
|
||||
|
||||
int next_op = -1;
|
||||
int min_priority = 0xFFFFF;
|
||||
bool is_unary = false;
|
||||
|
||||
for (int i = 0; i < expression.size(); i++) {
|
||||
|
||||
if (!expression[i].is_op) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1122,7 +1057,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
bool unary = false;
|
||||
|
||||
switch (expression[i].op) {
|
||||
|
||||
case Variant::OP_BIT_NEGATE:
|
||||
priority = 0;
|
||||
unary = true;
|
||||
@@ -1218,17 +1152,14 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
}
|
||||
|
||||
if (next_op == -1) {
|
||||
|
||||
_set_error("Yet another parser bug....");
|
||||
ERR_FAIL_V(NULL);
|
||||
}
|
||||
|
||||
// OK! create operator..
|
||||
if (is_unary) {
|
||||
|
||||
int expr_pos = next_op;
|
||||
while (expression[expr_pos].is_op) {
|
||||
|
||||
expr_pos++;
|
||||
if (expr_pos == expression.size()) {
|
||||
//can happen..
|
||||
@@ -1239,7 +1170,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
|
||||
//consecutively do unary operators
|
||||
for (int i = expr_pos - 1; i >= next_op; i--) {
|
||||
|
||||
OperatorNode *op = alloc_node<OperatorNode>();
|
||||
op->op = expression[i].op;
|
||||
op->nodes[0] = expression[i + 1].node;
|
||||
@@ -1250,7 +1180,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if (next_op < 1 || next_op >= (expression.size() - 1)) {
|
||||
_set_error("Parser bug...");
|
||||
ERR_FAIL_V(NULL);
|
||||
@@ -1260,7 +1189,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
op->op = expression[next_op].op;
|
||||
|
||||
if (expression[next_op - 1].is_op) {
|
||||
|
||||
_set_error("Parser bug...");
|
||||
ERR_FAIL_V(NULL);
|
||||
}
|
||||
@@ -1289,7 +1217,6 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
}
|
||||
|
||||
bool VisualScriptExpression::_compile_expression() {
|
||||
|
||||
if (!expression_dirty)
|
||||
return error_set;
|
||||
|
||||
@@ -1326,25 +1253,20 @@ public:
|
||||
//virtual int get_working_memory_size() const { return 0; }
|
||||
//execute by parsing the tree directly
|
||||
virtual bool _execute(const Variant **p_inputs, VisualScriptExpression::ENode *p_node, Variant &r_ret, String &r_error_str, Variant::CallError &ce) {
|
||||
|
||||
switch (p_node->type) {
|
||||
case VisualScriptExpression::ENode::TYPE_INPUT: {
|
||||
|
||||
const VisualScriptExpression::InputNode *in = static_cast<const VisualScriptExpression::InputNode *>(p_node);
|
||||
r_ret = *p_inputs[in->index];
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_CONSTANT: {
|
||||
|
||||
const VisualScriptExpression::ConstantNode *c = static_cast<const VisualScriptExpression::ConstantNode *>(p_node);
|
||||
r_ret = c->value;
|
||||
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_SELF: {
|
||||
|
||||
r_ret = instance->get_owner_ptr();
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_OPERATOR: {
|
||||
|
||||
const VisualScriptExpression::OperatorNode *op = static_cast<const VisualScriptExpression::OperatorNode *>(p_node);
|
||||
|
||||
Variant a;
|
||||
@@ -1369,7 +1291,6 @@ public:
|
||||
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_INDEX: {
|
||||
|
||||
const VisualScriptExpression::IndexNode *index = static_cast<const VisualScriptExpression::IndexNode *>(p_node);
|
||||
|
||||
Variant base;
|
||||
@@ -1392,7 +1313,6 @@ public:
|
||||
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_NAMED_INDEX: {
|
||||
|
||||
const VisualScriptExpression::NamedIndexNode *index = static_cast<const VisualScriptExpression::NamedIndexNode *>(p_node);
|
||||
|
||||
Variant base;
|
||||
@@ -1414,7 +1334,6 @@ public:
|
||||
Array arr;
|
||||
arr.resize(array->array.size());
|
||||
for (int i = 0; i < array->array.size(); i++) {
|
||||
|
||||
Variant value;
|
||||
bool ret = _execute(p_inputs, array->array[i], value, r_error_str, ce);
|
||||
if (ret)
|
||||
@@ -1430,7 +1349,6 @@ public:
|
||||
|
||||
Dictionary d;
|
||||
for (int i = 0; i < dictionary->dict.size(); i += 2) {
|
||||
|
||||
Variant key;
|
||||
bool ret = _execute(p_inputs, dictionary->dict[i + 0], key, r_error_str, ce);
|
||||
if (ret)
|
||||
@@ -1447,7 +1365,6 @@ public:
|
||||
r_ret = d;
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_CONSTRUCTOR: {
|
||||
|
||||
const VisualScriptExpression::ConstructorNode *constructor = static_cast<const VisualScriptExpression::ConstructorNode *>(p_node);
|
||||
|
||||
Vector<Variant> arr;
|
||||
@@ -1456,7 +1373,6 @@ public:
|
||||
argp.resize(constructor->arguments.size());
|
||||
|
||||
for (int i = 0; i < constructor->arguments.size(); i++) {
|
||||
|
||||
Variant value;
|
||||
bool ret = _execute(p_inputs, constructor->arguments[i], value, r_error_str, ce);
|
||||
if (ret)
|
||||
@@ -1474,7 +1390,6 @@ public:
|
||||
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_BUILTIN_FUNC: {
|
||||
|
||||
const VisualScriptExpression::BuiltinFuncNode *bifunc = static_cast<const VisualScriptExpression::BuiltinFuncNode *>(p_node);
|
||||
|
||||
Vector<Variant> arr;
|
||||
@@ -1483,7 +1398,6 @@ public:
|
||||
argp.resize(bifunc->arguments.size());
|
||||
|
||||
for (int i = 0; i < bifunc->arguments.size(); i++) {
|
||||
|
||||
Variant value;
|
||||
bool ret = _execute(p_inputs, bifunc->arguments[i], value, r_error_str, ce);
|
||||
if (ret)
|
||||
@@ -1501,7 +1415,6 @@ public:
|
||||
|
||||
} break;
|
||||
case VisualScriptExpression::ENode::TYPE_CALL: {
|
||||
|
||||
const VisualScriptExpression::CallNode *call = static_cast<const VisualScriptExpression::CallNode *>(p_node);
|
||||
|
||||
Variant base;
|
||||
@@ -1515,7 +1428,6 @@ public:
|
||||
argp.resize(call->arguments.size());
|
||||
|
||||
for (int i = 0; i < call->arguments.size(); i++) {
|
||||
|
||||
Variant value;
|
||||
bool ret2 = _execute(p_inputs, call->arguments[i], value, r_error_str, ce);
|
||||
if (ret2)
|
||||
@@ -1537,7 +1449,6 @@ public:
|
||||
}
|
||||
|
||||
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 (!expression->root || expression->error_set) {
|
||||
r_error_str = expression->error_str;
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
|
||||
@@ -1551,7 +1462,6 @@ public:
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
if (!error && expression->output_type != Variant::NIL && !Variant::can_convert_strict(p_outputs[0]->get_type(), expression->output_type)) {
|
||||
|
||||
r_error_str += "Can't convert expression result from " + Variant::get_type_name(p_outputs[0]->get_type()) + " to " + Variant::get_type_name(expression->output_type) + ".";
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
|
||||
}
|
||||
@@ -1562,7 +1472,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptExpression::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
_compile_expression();
|
||||
VisualScriptNodeInstanceExpression *instance = memnew(VisualScriptNodeInstanceExpression);
|
||||
instance->instance = p_instance;
|
||||
@@ -1580,13 +1489,11 @@ VisualScriptExpression::VisualScriptExpression() {
|
||||
}
|
||||
|
||||
VisualScriptExpression::~VisualScriptExpression() {
|
||||
|
||||
if (nodes) {
|
||||
memdelete(nodes);
|
||||
}
|
||||
}
|
||||
|
||||
void register_visual_script_expression_node() {
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/expression", create_node_generic<VisualScriptExpression>);
|
||||
}
|
||||
|
||||
@@ -35,12 +35,10 @@
|
||||
#include "visual_script_builtin_funcs.h"
|
||||
|
||||
class VisualScriptExpression : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptExpression, VisualScriptNode);
|
||||
friend class VisualScriptNodeInstanceExpression;
|
||||
|
||||
struct Input {
|
||||
|
||||
Variant::Type type;
|
||||
String name;
|
||||
|
||||
@@ -101,7 +99,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
|
||||
static const char *token_name[TK_MAX];
|
||||
struct Token {
|
||||
|
||||
TokenType type;
|
||||
Variant value;
|
||||
};
|
||||
@@ -119,7 +116,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
bool error_set;
|
||||
|
||||
struct ENode {
|
||||
|
||||
enum Type {
|
||||
TYPE_INPUT,
|
||||
TYPE_CONSTANT,
|
||||
@@ -147,7 +143,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
};
|
||||
|
||||
struct Expression {
|
||||
|
||||
bool is_op;
|
||||
union {
|
||||
Variant::Operator op;
|
||||
@@ -158,7 +153,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
ENode *_parse_expression();
|
||||
|
||||
struct InputNode : public ENode {
|
||||
|
||||
int index;
|
||||
InputNode() {
|
||||
type = TYPE_INPUT;
|
||||
@@ -166,7 +160,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
};
|
||||
|
||||
struct ConstantNode : public ENode {
|
||||
|
||||
Variant value;
|
||||
ConstantNode() {
|
||||
type = TYPE_CONSTANT;
|
||||
@@ -174,7 +167,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
};
|
||||
|
||||
struct OperatorNode : public ENode {
|
||||
|
||||
Variant::Operator op;
|
||||
|
||||
ENode *nodes[2];
|
||||
@@ -185,7 +177,6 @@ class VisualScriptExpression : public VisualScriptNode {
|
||||
};
|
||||
|
||||
struct SelfNode : public ENode {
|
||||
|
||||
SelfNode() {
|
||||
type = TYPE_SELF;
|
||||
}
|
||||
|
||||
@@ -39,31 +39,25 @@
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptReturn::get_output_sequence_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool VisualScriptReturn::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptReturn::get_input_value_port_count() const {
|
||||
|
||||
return with_value ? 1 : 0;
|
||||
}
|
||||
int VisualScriptReturn::get_output_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptReturn::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptReturn::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name = "result";
|
||||
pinfo.type = type;
|
||||
@@ -74,17 +68,14 @@ PropertyInfo VisualScriptReturn::get_output_value_port_info(int p_idx) const {
|
||||
}
|
||||
|
||||
String VisualScriptReturn::get_caption() const {
|
||||
|
||||
return "Return";
|
||||
}
|
||||
|
||||
String VisualScriptReturn::get_text() const {
|
||||
|
||||
return get_name();
|
||||
}
|
||||
|
||||
void VisualScriptReturn::set_return_type(Variant::Type p_type) {
|
||||
|
||||
if (type == p_type)
|
||||
return;
|
||||
type = p_type;
|
||||
@@ -92,7 +83,6 @@ void VisualScriptReturn::set_return_type(Variant::Type p_type) {
|
||||
}
|
||||
|
||||
Variant::Type VisualScriptReturn::get_return_type() const {
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
@@ -105,12 +95,10 @@ void VisualScriptReturn::set_enable_return_value(bool p_enable) {
|
||||
}
|
||||
|
||||
bool VisualScriptReturn::is_return_value_enabled() const {
|
||||
|
||||
return with_value;
|
||||
}
|
||||
|
||||
void VisualScriptReturn::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_return_type", "type"), &VisualScriptReturn::set_return_type);
|
||||
ClassDB::bind_method(D_METHOD("get_return_type"), &VisualScriptReturn::get_return_type);
|
||||
ClassDB::bind_method(D_METHOD("set_enable_return_value", "enable"), &VisualScriptReturn::set_enable_return_value);
|
||||
@@ -136,7 +124,6 @@ public:
|
||||
//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) {
|
||||
|
||||
if (with_value) {
|
||||
*p_working_mem = *p_inputs[0];
|
||||
return STEP_EXIT_FUNCTION_BIT;
|
||||
@@ -148,7 +135,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptReturn::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceReturn *instance = memnew(VisualScriptNodeInstanceReturn);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -157,14 +143,12 @@ VisualScriptNodeInstance *VisualScriptReturn::instance(VisualScriptInstance *p_i
|
||||
}
|
||||
|
||||
VisualScriptReturn::VisualScriptReturn() {
|
||||
|
||||
with_value = false;
|
||||
type = Variant::NIL;
|
||||
}
|
||||
|
||||
template <bool with_value>
|
||||
static Ref<VisualScriptNode> create_return_node(const String &p_name) {
|
||||
|
||||
Ref<VisualScriptReturn> node;
|
||||
node.instance();
|
||||
node->set_enable_return_value(with_value);
|
||||
@@ -176,26 +160,21 @@ static Ref<VisualScriptNode> create_return_node(const String &p_name) {
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptCondition::get_output_sequence_port_count() const {
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
bool VisualScriptCondition::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptCondition::get_input_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptCondition::get_output_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptCondition::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port == 0)
|
||||
return "true";
|
||||
else if (p_port == 1)
|
||||
@@ -205,7 +184,6 @@ String VisualScriptCondition::get_output_sequence_port_text(int p_port) const {
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptCondition::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name = "cond";
|
||||
pinfo.type = Variant::BOOL;
|
||||
@@ -216,12 +194,10 @@ PropertyInfo VisualScriptCondition::get_output_value_port_info(int p_idx) const
|
||||
}
|
||||
|
||||
String VisualScriptCondition::get_caption() const {
|
||||
|
||||
return "Condition";
|
||||
}
|
||||
|
||||
String VisualScriptCondition::get_text() const {
|
||||
|
||||
return "if (cond) is: ";
|
||||
}
|
||||
|
||||
@@ -238,7 +214,6 @@ public:
|
||||
//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) {
|
||||
|
||||
if (p_start_mode == START_MODE_CONTINUE_SEQUENCE)
|
||||
return 2;
|
||||
else if (p_inputs[0]->operator bool())
|
||||
@@ -249,7 +224,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptCondition::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceCondition *instance = memnew(VisualScriptNodeInstanceCondition);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -264,26 +238,21 @@ VisualScriptCondition::VisualScriptCondition() {
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptWhile::get_output_sequence_port_count() const {
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
bool VisualScriptWhile::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptWhile::get_input_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptWhile::get_output_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptWhile::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port == 0)
|
||||
return "repeat";
|
||||
else
|
||||
@@ -291,7 +260,6 @@ String VisualScriptWhile::get_output_sequence_port_text(int p_port) const {
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptWhile::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name = "cond";
|
||||
pinfo.type = Variant::BOOL;
|
||||
@@ -302,12 +270,10 @@ PropertyInfo VisualScriptWhile::get_output_value_port_info(int p_idx) const {
|
||||
}
|
||||
|
||||
String VisualScriptWhile::get_caption() const {
|
||||
|
||||
return "While";
|
||||
}
|
||||
|
||||
String VisualScriptWhile::get_text() const {
|
||||
|
||||
return "while (cond): ";
|
||||
}
|
||||
|
||||
@@ -324,7 +290,6 @@ public:
|
||||
//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) {
|
||||
|
||||
bool keep_going = p_inputs[0]->operator bool();
|
||||
|
||||
if (keep_going)
|
||||
@@ -335,7 +300,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptWhile::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceWhile *instance = memnew(VisualScriptNodeInstanceWhile);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -349,26 +313,21 @@ VisualScriptWhile::VisualScriptWhile() {
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptIterator::get_output_sequence_port_count() const {
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
bool VisualScriptIterator::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptIterator::get_input_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptIterator::get_output_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
String VisualScriptIterator::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port == 0)
|
||||
return "each";
|
||||
else
|
||||
@@ -376,7 +335,6 @@ String VisualScriptIterator::get_output_sequence_port_text(int p_port) const {
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptIterator::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name = "input";
|
||||
pinfo.type = Variant::NIL;
|
||||
@@ -389,12 +347,10 @@ PropertyInfo VisualScriptIterator::get_output_value_port_info(int p_idx) const {
|
||||
return pinfo;
|
||||
}
|
||||
String VisualScriptIterator::get_caption() const {
|
||||
|
||||
return "Iterator";
|
||||
}
|
||||
|
||||
String VisualScriptIterator::get_text() const {
|
||||
|
||||
return "for (elem) in (input): ";
|
||||
}
|
||||
|
||||
@@ -411,7 +367,6 @@ public:
|
||||
//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) {
|
||||
|
||||
if (p_start_mode == START_MODE_BEGIN_SEQUENCE) {
|
||||
p_working_mem[0] = *p_inputs[0];
|
||||
bool valid;
|
||||
@@ -462,7 +417,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptIterator::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceIterator *instance = memnew(VisualScriptNodeInstanceIterator);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -477,26 +431,21 @@ VisualScriptIterator::VisualScriptIterator() {
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptSequence::get_output_sequence_port_count() const {
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
bool VisualScriptSequence::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptSequence::get_input_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
int VisualScriptSequence::get_output_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
String VisualScriptSequence::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return itos(p_port + 1);
|
||||
}
|
||||
|
||||
@@ -507,17 +456,14 @@ PropertyInfo VisualScriptSequence::get_output_value_port_info(int p_idx) const {
|
||||
return PropertyInfo(Variant::INT, "current");
|
||||
}
|
||||
String VisualScriptSequence::get_caption() const {
|
||||
|
||||
return "Sequence";
|
||||
}
|
||||
|
||||
String VisualScriptSequence::get_text() const {
|
||||
|
||||
return "in order: ";
|
||||
}
|
||||
|
||||
void VisualScriptSequence::set_steps(int p_steps) {
|
||||
|
||||
ERR_FAIL_COND(p_steps < 1);
|
||||
if (steps == p_steps)
|
||||
return;
|
||||
@@ -527,12 +473,10 @@ void VisualScriptSequence::set_steps(int p_steps) {
|
||||
}
|
||||
|
||||
int VisualScriptSequence::get_steps() const {
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
void VisualScriptSequence::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_steps", "steps"), &VisualScriptSequence::set_steps);
|
||||
ClassDB::bind_method(D_METHOD("get_steps"), &VisualScriptSequence::get_steps);
|
||||
|
||||
@@ -550,9 +494,7 @@ public:
|
||||
//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) {
|
||||
|
||||
if (p_start_mode == START_MODE_BEGIN_SEQUENCE) {
|
||||
|
||||
p_working_mem[0] = 0;
|
||||
}
|
||||
|
||||
@@ -570,7 +512,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptSequence::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceSequence *instance = memnew(VisualScriptNodeInstanceSequence);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -578,7 +519,6 @@ VisualScriptNodeInstance *VisualScriptSequence::instance(VisualScriptInstance *p
|
||||
return instance;
|
||||
}
|
||||
VisualScriptSequence::VisualScriptSequence() {
|
||||
|
||||
steps = 1;
|
||||
}
|
||||
|
||||
@@ -587,26 +527,21 @@ VisualScriptSequence::VisualScriptSequence() {
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptSwitch::get_output_sequence_port_count() const {
|
||||
|
||||
return case_values.size() + 1;
|
||||
}
|
||||
|
||||
bool VisualScriptSwitch::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptSwitch::get_input_value_port_count() const {
|
||||
|
||||
return case_values.size() + 1;
|
||||
}
|
||||
int VisualScriptSwitch::get_output_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptSwitch::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port == case_values.size())
|
||||
return "done";
|
||||
|
||||
@@ -614,7 +549,6 @@ String VisualScriptSwitch::get_output_sequence_port_text(int p_port) const {
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptSwitch::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
if (p_idx < case_values.size()) {
|
||||
return PropertyInfo(case_values[p_idx].type, " =");
|
||||
} else
|
||||
@@ -622,17 +556,14 @@ PropertyInfo VisualScriptSwitch::get_input_value_port_info(int p_idx) const {
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptSwitch::get_output_value_port_info(int p_idx) const {
|
||||
|
||||
return PropertyInfo();
|
||||
}
|
||||
|
||||
String VisualScriptSwitch::get_caption() const {
|
||||
|
||||
return "Switch";
|
||||
}
|
||||
|
||||
String VisualScriptSwitch::get_text() const {
|
||||
|
||||
return "'input' is:";
|
||||
}
|
||||
|
||||
@@ -646,13 +577,11 @@ public:
|
||||
//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) {
|
||||
|
||||
if (p_start_mode == START_MODE_CONTINUE_SEQUENCE) {
|
||||
return case_count; //exit
|
||||
}
|
||||
|
||||
for (int i = 0; i < case_count; i++) {
|
||||
|
||||
if (*p_inputs[i] == *p_inputs[case_count]) {
|
||||
return i | STEP_FLAG_PUSH_STACK_BIT;
|
||||
}
|
||||
@@ -663,7 +592,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptSwitch::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceSwitch *instance = memnew(VisualScriptNodeInstanceSwitch);
|
||||
instance->instance = p_instance;
|
||||
instance->case_count = case_values.size();
|
||||
@@ -671,7 +599,6 @@ VisualScriptNodeInstance *VisualScriptSwitch::instance(VisualScriptInstance *p_i
|
||||
}
|
||||
|
||||
bool VisualScriptSwitch::_set(const StringName &p_name, const Variant &p_value) {
|
||||
|
||||
if (String(p_name) == "case_count") {
|
||||
case_values.resize(p_value);
|
||||
_change_notify();
|
||||
@@ -680,7 +607,6 @@ bool VisualScriptSwitch::_set(const StringName &p_name, const Variant &p_value)
|
||||
}
|
||||
|
||||
if (String(p_name).begins_with("case/")) {
|
||||
|
||||
int idx = String(p_name).get_slice("/", 1).to_int();
|
||||
ERR_FAIL_INDEX_V(idx, case_values.size(), false);
|
||||
|
||||
@@ -695,14 +621,12 @@ bool VisualScriptSwitch::_set(const StringName &p_name, const Variant &p_value)
|
||||
}
|
||||
|
||||
bool VisualScriptSwitch::_get(const StringName &p_name, Variant &r_ret) const {
|
||||
|
||||
if (String(p_name) == "case_count") {
|
||||
r_ret = case_values.size();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (String(p_name).begins_with("case/")) {
|
||||
|
||||
int idx = String(p_name).get_slice("/", 1).to_int();
|
||||
ERR_FAIL_INDEX_V(idx, case_values.size(), false);
|
||||
|
||||
@@ -713,7 +637,6 @@ bool VisualScriptSwitch::_get(const StringName &p_name, Variant &r_ret) const {
|
||||
return false;
|
||||
}
|
||||
void VisualScriptSwitch::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||
|
||||
p_list->push_back(PropertyInfo(Variant::INT, "case_count", PROPERTY_HINT_RANGE, "0,128"));
|
||||
|
||||
String argt = "Any";
|
||||
@@ -737,46 +660,37 @@ VisualScriptSwitch::VisualScriptSwitch() {
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptTypeCast::get_output_sequence_port_count() const {
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
bool VisualScriptTypeCast::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptTypeCast::get_input_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptTypeCast::get_output_value_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
String VisualScriptTypeCast::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return p_port == 0 ? "yes" : "no";
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptTypeCast::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
return PropertyInfo(Variant::OBJECT, "instance");
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptTypeCast::get_output_value_port_info(int p_idx) const {
|
||||
|
||||
return PropertyInfo(Variant::OBJECT, "", PROPERTY_HINT_TYPE_STRING, get_base_type());
|
||||
}
|
||||
|
||||
String VisualScriptTypeCast::get_caption() const {
|
||||
|
||||
return "Type Cast";
|
||||
}
|
||||
|
||||
String VisualScriptTypeCast::get_text() const {
|
||||
|
||||
if (script != String())
|
||||
return "Is " + script.get_file() + "?";
|
||||
else
|
||||
@@ -784,7 +698,6 @@ String VisualScriptTypeCast::get_text() const {
|
||||
}
|
||||
|
||||
void VisualScriptTypeCast::set_base_type(const StringName &p_type) {
|
||||
|
||||
if (base_type == p_type)
|
||||
return;
|
||||
|
||||
@@ -794,12 +707,10 @@ void VisualScriptTypeCast::set_base_type(const StringName &p_type) {
|
||||
}
|
||||
|
||||
StringName VisualScriptTypeCast::get_base_type() const {
|
||||
|
||||
return base_type;
|
||||
}
|
||||
|
||||
void VisualScriptTypeCast::set_base_script(const String &p_path) {
|
||||
|
||||
if (script == p_path)
|
||||
return;
|
||||
|
||||
@@ -808,12 +719,10 @@ void VisualScriptTypeCast::set_base_script(const String &p_path) {
|
||||
ports_changed_notify();
|
||||
}
|
||||
String VisualScriptTypeCast::get_base_script() const {
|
||||
|
||||
return script;
|
||||
}
|
||||
|
||||
VisualScriptTypeCast::TypeGuess VisualScriptTypeCast::guess_output_type(TypeGuess *p_inputs, int p_output) const {
|
||||
|
||||
TypeGuess tg;
|
||||
tg.type = Variant::OBJECT;
|
||||
if (script != String()) {
|
||||
@@ -837,7 +746,6 @@ public:
|
||||
//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) {
|
||||
|
||||
Object *obj = *p_inputs[0];
|
||||
|
||||
*p_outputs[0] = Variant();
|
||||
@@ -849,7 +757,6 @@ public:
|
||||
}
|
||||
|
||||
if (script != String()) {
|
||||
|
||||
Ref<Script> obj_script = obj->get_script();
|
||||
if (!obj_script.is_valid()) {
|
||||
return 1; //well, definitely not the script because object we got has no script.
|
||||
@@ -867,7 +774,6 @@ public:
|
||||
}
|
||||
|
||||
while (obj_script.is_valid()) {
|
||||
|
||||
if (cast_script == obj_script) {
|
||||
*p_outputs[0] = *p_inputs[0]; //copy
|
||||
return 0; // it is the script, yey
|
||||
@@ -888,7 +794,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptTypeCast::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceTypeCast *instance = memnew(VisualScriptNodeInstanceTypeCast);
|
||||
instance->instance = p_instance;
|
||||
instance->base_type = base_type;
|
||||
@@ -897,7 +802,6 @@ VisualScriptNodeInstance *VisualScriptTypeCast::instance(VisualScriptInstance *p
|
||||
}
|
||||
|
||||
void VisualScriptTypeCast::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_base_type", "type"), &VisualScriptTypeCast::set_base_type);
|
||||
ClassDB::bind_method(D_METHOD("get_base_type"), &VisualScriptTypeCast::get_base_type);
|
||||
|
||||
@@ -921,12 +825,10 @@ void VisualScriptTypeCast::_bind_methods() {
|
||||
}
|
||||
|
||||
VisualScriptTypeCast::VisualScriptTypeCast() {
|
||||
|
||||
base_type = "Object";
|
||||
}
|
||||
|
||||
void register_visual_script_flow_control_nodes() {
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/return", create_return_node<false>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/return_with_value", create_return_node<true>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/condition", create_node_generic<VisualScriptCondition>);
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptReturn : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptReturn, VisualScriptNode);
|
||||
|
||||
Variant::Type type;
|
||||
@@ -71,7 +70,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptCondition : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptCondition, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -99,7 +97,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptWhile : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptWhile, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -127,7 +124,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptIterator : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptIterator, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -155,7 +151,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptSequence : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSequence, VisualScriptNode);
|
||||
|
||||
int steps;
|
||||
@@ -188,7 +183,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptSwitch : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSwitch, VisualScriptNode);
|
||||
|
||||
struct Case {
|
||||
@@ -230,7 +224,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptTypeCast : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptTypeCast, VisualScriptNode);
|
||||
|
||||
StringName base_type;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,7 +34,6 @@
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptFunctionCall : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptFunctionCall, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -137,7 +136,6 @@ VARIANT_ENUM_CAST(VisualScriptFunctionCall::CallMode);
|
||||
VARIANT_ENUM_CAST(VisualScriptFunctionCall::RPCCallMode);
|
||||
|
||||
class VisualScriptPropertySet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptPropertySet, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -243,7 +241,6 @@ VARIANT_ENUM_CAST(VisualScriptPropertySet::CallMode);
|
||||
VARIANT_ENUM_CAST(VisualScriptPropertySet::AssignOp);
|
||||
|
||||
class VisualScriptPropertyGet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptPropertyGet, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -325,7 +322,6 @@ public:
|
||||
VARIANT_ENUM_CAST(VisualScriptPropertyGet::CallMode);
|
||||
|
||||
class VisualScriptEmitSignal : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptEmitSignal, VisualScriptNode);
|
||||
|
||||
private:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,7 +34,6 @@
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptFunction : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptFunction, VisualScriptNode);
|
||||
|
||||
struct Argument {
|
||||
@@ -104,7 +103,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptLists : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptLists, VisualScriptNode)
|
||||
|
||||
struct Port {
|
||||
@@ -176,7 +174,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptComposeArray : public VisualScriptLists {
|
||||
|
||||
GDCLASS(VisualScriptComposeArray, VisualScriptLists)
|
||||
|
||||
public:
|
||||
@@ -201,7 +198,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptOperator : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptOperator, VisualScriptNode);
|
||||
|
||||
Variant::Type typed;
|
||||
@@ -237,7 +233,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptSelect : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSelect, VisualScriptNode);
|
||||
|
||||
Variant::Type typed;
|
||||
@@ -270,7 +265,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptVariableGet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptVariableGet, VisualScriptNode);
|
||||
|
||||
StringName variable;
|
||||
@@ -303,7 +297,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptVariableSet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptVariableSet, VisualScriptNode);
|
||||
|
||||
StringName variable;
|
||||
@@ -336,7 +329,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptConstant : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptConstant, VisualScriptNode);
|
||||
|
||||
Variant::Type type;
|
||||
@@ -373,7 +365,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptPreload : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptPreload, VisualScriptNode);
|
||||
|
||||
Ref<Resource> preload;
|
||||
@@ -405,7 +396,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptIndexGet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptIndexGet, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -429,7 +419,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptIndexSet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptIndexSet, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -453,7 +442,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptGlobalConstant : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptGlobalConstant, VisualScriptNode);
|
||||
|
||||
int index;
|
||||
@@ -484,7 +472,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptClassConstant : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptClassConstant, VisualScriptNode);
|
||||
|
||||
StringName base_type;
|
||||
@@ -521,7 +508,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptBasicTypeConstant : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptBasicTypeConstant, VisualScriptNode);
|
||||
|
||||
Variant::Type type;
|
||||
@@ -559,7 +545,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptMathConstant : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptMathConstant, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -609,7 +594,6 @@ public:
|
||||
VARIANT_ENUM_CAST(VisualScriptMathConstant::MathConstant)
|
||||
|
||||
class VisualScriptEngineSingleton : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptEngineSingleton, VisualScriptNode);
|
||||
|
||||
String singleton;
|
||||
@@ -645,7 +629,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptSceneNode : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSceneNode, VisualScriptNode);
|
||||
|
||||
NodePath path;
|
||||
@@ -680,7 +663,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptSceneTree : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSceneTree, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -710,7 +692,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptResourcePath : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptResourcePath, VisualScriptNode);
|
||||
|
||||
String path;
|
||||
@@ -742,7 +723,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptSelf : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSelf, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -771,7 +751,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptCustomNode : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptCustomNode, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -819,7 +798,6 @@ public:
|
||||
VARIANT_ENUM_CAST(VisualScriptCustomNode::StartMode);
|
||||
|
||||
class VisualScriptSubCall : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptSubCall, VisualScriptNode);
|
||||
|
||||
protected:
|
||||
@@ -847,7 +825,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptComment : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptComment, VisualScriptNode);
|
||||
|
||||
String title;
|
||||
@@ -888,7 +865,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptConstructor : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptConstructor, VisualScriptNode);
|
||||
|
||||
Variant::Type type;
|
||||
@@ -924,7 +900,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptLocalVar : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptLocalVar, VisualScriptNode);
|
||||
|
||||
StringName name;
|
||||
@@ -960,7 +935,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptLocalVarSet : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptLocalVarSet, VisualScriptNode);
|
||||
|
||||
StringName name;
|
||||
@@ -997,7 +971,6 @@ public:
|
||||
};
|
||||
|
||||
class VisualScriptInputAction : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptInputAction, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -1045,7 +1018,6 @@ public:
|
||||
VARIANT_ENUM_CAST(VisualScriptInputAction::Mode)
|
||||
|
||||
class VisualScriptDeconstruct : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptDeconstruct, VisualScriptNode);
|
||||
|
||||
struct Element {
|
||||
|
||||
@@ -46,17 +46,14 @@ void VisualScriptPropertySelector::_text_changed(const String &p_newtext) {
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::_sbox_input(const Ref<InputEvent> &p_ie) {
|
||||
|
||||
Ref<InputEventKey> k = p_ie;
|
||||
|
||||
if (k.is_valid()) {
|
||||
|
||||
switch (k->get_scancode()) {
|
||||
case KEY_UP:
|
||||
case KEY_DOWN:
|
||||
case KEY_PAGEUP:
|
||||
case KEY_PAGEDOWN: {
|
||||
|
||||
search_options->call("_gui_input", k);
|
||||
search_box->accept_event();
|
||||
|
||||
@@ -197,7 +194,6 @@ void VisualScriptPropertySelector::_update_search() {
|
||||
v = Variant::construct(type, NULL, 0, ce);
|
||||
v.get_method_list(&methods);
|
||||
} else {
|
||||
|
||||
Object *obj = ObjectDB::get_instance(script);
|
||||
if (Object::cast_to<Script>(obj)) {
|
||||
Object::cast_to<Script>(obj)->get_script_method_list(&methods);
|
||||
@@ -207,7 +203,6 @@ void VisualScriptPropertySelector::_update_search() {
|
||||
}
|
||||
}
|
||||
for (List<MethodInfo>::Element *M = methods.front(); M; M = M->next()) {
|
||||
|
||||
String name = M->get().name.get_slice(":", 0);
|
||||
if (name.begins_with("_") && !(M->get().flags & METHOD_FLAG_VIRTUAL))
|
||||
continue;
|
||||
@@ -223,7 +218,6 @@ void VisualScriptPropertySelector::_update_search() {
|
||||
if (mi.arguments.size() > 0) {
|
||||
desc_arguments = "(";
|
||||
for (int i = 0; i < mi.arguments.size(); i++) {
|
||||
|
||||
if (i > 0) {
|
||||
desc_arguments += ", ";
|
||||
}
|
||||
@@ -409,7 +403,6 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::_confirmed() {
|
||||
|
||||
TreeItem *ti = search_options->get_selected();
|
||||
if (!ti)
|
||||
return;
|
||||
@@ -418,7 +411,6 @@ void VisualScriptPropertySelector::_confirmed() {
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::_item_selected() {
|
||||
|
||||
help_bit->set_text("");
|
||||
|
||||
TreeItem *item = search_options->get_selected();
|
||||
@@ -440,7 +432,6 @@ void VisualScriptPropertySelector::_item_selected() {
|
||||
String at_class = class_type;
|
||||
|
||||
while (at_class != String()) {
|
||||
|
||||
Map<String, DocData::ClassDoc>::Element *E = dd->class_list.find(at_class);
|
||||
if (E) {
|
||||
for (int i = 0; i < E->get().properties.size(); i++) {
|
||||
@@ -455,7 +446,6 @@ void VisualScriptPropertySelector::_item_selected() {
|
||||
at_class = class_type;
|
||||
|
||||
while (at_class != String()) {
|
||||
|
||||
Map<String, DocData::ClassDoc>::Element *C = dd->class_list.find(at_class);
|
||||
if (C) {
|
||||
for (int i = 0; i < C->get().methods.size(); i++) {
|
||||
@@ -517,15 +507,12 @@ void VisualScriptPropertySelector::_item_selected() {
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::_notification(int p_what) {
|
||||
|
||||
if (p_what == NOTIFICATION_ENTER_TREE) {
|
||||
|
||||
connect("confirmed", this, "_confirmed");
|
||||
}
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_method_from_base_type(const String &p_base, const String &p_current, const bool p_virtuals_only, const bool p_connecting, bool clear_text) {
|
||||
|
||||
base_type = p_base;
|
||||
selected = p_current;
|
||||
type = Variant::NIL;
|
||||
@@ -550,7 +537,6 @@ void VisualScriptPropertySelector::set_type_filter(const Vector<Variant::Type> &
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_base_type(const String &p_base, const String &p_current, bool p_virtuals_only, bool p_seq_connect, const bool p_connecting, bool clear_text) {
|
||||
|
||||
base_type = p_base;
|
||||
selected = p_current;
|
||||
type = Variant::NIL;
|
||||
@@ -693,7 +679,6 @@ void VisualScriptPropertySelector::show_window(float p_screen_ratio) {
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_text_changed"), &VisualScriptPropertySelector::_text_changed);
|
||||
ClassDB::bind_method(D_METHOD("_confirmed"), &VisualScriptPropertySelector::_confirmed);
|
||||
ClassDB::bind_method(D_METHOD("_sbox_input"), &VisualScriptPropertySelector::_sbox_input);
|
||||
@@ -703,7 +688,6 @@ void VisualScriptPropertySelector::_bind_methods() {
|
||||
}
|
||||
|
||||
VisualScriptPropertySelector::VisualScriptPropertySelector() {
|
||||
|
||||
VBoxContainer *vbc = memnew(VBoxContainer);
|
||||
add_child(vbc);
|
||||
//set_child_rect(vbc);
|
||||
|
||||
@@ -40,46 +40,37 @@
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptYield::get_output_sequence_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool VisualScriptYield::has_input_sequence_port() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptYield::get_input_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
int VisualScriptYield::get_output_value_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptYield::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptYield::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
return PropertyInfo();
|
||||
}
|
||||
|
||||
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";
|
||||
}
|
||||
|
||||
String VisualScriptYield::get_text() const {
|
||||
|
||||
switch (yield_mode) {
|
||||
case YIELD_RETURN:
|
||||
return "";
|
||||
@@ -108,7 +99,6 @@ public:
|
||||
//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) {
|
||||
|
||||
if (p_start_mode == START_MODE_RESUME_YIELD) {
|
||||
return 0; //resuming yield
|
||||
} else {
|
||||
@@ -126,7 +116,6 @@ public:
|
||||
|
||||
int ret = STEP_YIELD_BIT;
|
||||
switch (mode) {
|
||||
|
||||
case VisualScriptYield::YIELD_RETURN:
|
||||
ret = STEP_EXIT_FUNCTION_BIT;
|
||||
break; //return the yield
|
||||
@@ -149,7 +138,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptYield::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceYield *instance = memnew(VisualScriptNodeInstanceYield);
|
||||
//instance->instance=p_instance;
|
||||
instance->mode = yield_mode;
|
||||
@@ -158,7 +146,6 @@ VisualScriptNodeInstance *VisualScriptYield::instance(VisualScriptInstance *p_in
|
||||
}
|
||||
|
||||
void VisualScriptYield::set_yield_mode(YieldMode p_mode) {
|
||||
|
||||
if (yield_mode == p_mode)
|
||||
return;
|
||||
yield_mode = p_mode;
|
||||
@@ -167,12 +154,10 @@ void VisualScriptYield::set_yield_mode(YieldMode p_mode) {
|
||||
}
|
||||
|
||||
VisualScriptYield::YieldMode VisualScriptYield::get_yield_mode() {
|
||||
|
||||
return yield_mode;
|
||||
}
|
||||
|
||||
void VisualScriptYield::set_wait_time(float p_time) {
|
||||
|
||||
if (wait_time == p_time)
|
||||
return;
|
||||
wait_time = p_time;
|
||||
@@ -180,12 +165,10 @@ void VisualScriptYield::set_wait_time(float p_time) {
|
||||
}
|
||||
|
||||
float VisualScriptYield::get_wait_time() {
|
||||
|
||||
return wait_time;
|
||||
}
|
||||
|
||||
void VisualScriptYield::_validate_property(PropertyInfo &property) const {
|
||||
|
||||
if (property.name == "wait_time") {
|
||||
if (yield_mode != YIELD_WAIT) {
|
||||
property.usage = 0;
|
||||
@@ -194,7 +177,6 @@ void VisualScriptYield::_validate_property(PropertyInfo &property) const {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -210,14 +192,12 @@ void VisualScriptYield::_bind_methods() {
|
||||
}
|
||||
|
||||
VisualScriptYield::VisualScriptYield() {
|
||||
|
||||
yield_mode = YIELD_FRAME;
|
||||
wait_time = 1;
|
||||
}
|
||||
|
||||
template <VisualScriptYield::YieldMode MODE>
|
||||
static Ref<VisualScriptNode> create_yield_node(const String &p_name) {
|
||||
|
||||
Ref<VisualScriptYield> node;
|
||||
node.instance();
|
||||
node->set_yield_mode(MODE);
|
||||
@@ -229,18 +209,15 @@ static Ref<VisualScriptNode> create_yield_node(const String &p_name) {
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
int VisualScriptYieldSignal::get_output_sequence_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
if (p_edited_scene != p_current_node && p_current_node->get_owner() != p_edited_scene)
|
||||
return NULL;
|
||||
|
||||
@@ -260,7 +237,6 @@ static Node *_find_script_node(Node *p_edited_scene, Node *p_current_node, const
|
||||
|
||||
#endif
|
||||
Node *VisualScriptYieldSignal::_get_base_node() const {
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
Ref<Script> script = get_visual_script();
|
||||
if (!script.is_valid())
|
||||
@@ -295,7 +271,6 @@ Node *VisualScriptYieldSignal::_get_base_node() const {
|
||||
}
|
||||
|
||||
StringName VisualScriptYieldSignal::_get_base_type() const {
|
||||
|
||||
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()) {
|
||||
@@ -308,14 +283,12 @@ StringName VisualScriptYieldSignal::_get_base_type() const {
|
||||
}
|
||||
|
||||
int VisualScriptYieldSignal::get_input_value_port_count() const {
|
||||
|
||||
if (call_mode == CALL_MODE_INSTANCE)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
int VisualScriptYieldSignal::get_output_value_port_count() const {
|
||||
|
||||
MethodInfo sr;
|
||||
|
||||
if (!ClassDB::get_signal(_get_base_type(), signal, &sr))
|
||||
@@ -325,12 +298,10 @@ int VisualScriptYieldSignal::get_output_value_port_count() const {
|
||||
}
|
||||
|
||||
String VisualScriptYieldSignal::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptYieldSignal::get_input_value_port_info(int p_idx) const {
|
||||
|
||||
if (call_mode == CALL_MODE_INSTANCE)
|
||||
return PropertyInfo(Variant::OBJECT, "instance");
|
||||
else
|
||||
@@ -338,7 +309,6 @@ PropertyInfo VisualScriptYieldSignal::get_input_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))
|
||||
@@ -348,7 +318,6 @@ PropertyInfo VisualScriptYieldSignal::get_output_value_port_info(int p_idx) cons
|
||||
}
|
||||
|
||||
String VisualScriptYieldSignal::get_caption() const {
|
||||
|
||||
static const char *cname[3] = {
|
||||
"WaitSignal",
|
||||
"WaitNodeSignal",
|
||||
@@ -359,7 +328,6 @@ String VisualScriptYieldSignal::get_caption() const {
|
||||
}
|
||||
|
||||
String VisualScriptYieldSignal::get_text() const {
|
||||
|
||||
if (call_mode == CALL_MODE_SELF)
|
||||
return " " + String(signal) + "()";
|
||||
else
|
||||
@@ -367,7 +335,6 @@ String VisualScriptYieldSignal::get_text() const {
|
||||
}
|
||||
|
||||
void VisualScriptYieldSignal::set_base_type(const StringName &p_type) {
|
||||
|
||||
if (base_type == p_type)
|
||||
return;
|
||||
|
||||
@@ -378,12 +345,10 @@ void VisualScriptYieldSignal::set_base_type(const StringName &p_type) {
|
||||
}
|
||||
|
||||
StringName VisualScriptYieldSignal::get_base_type() const {
|
||||
|
||||
return base_type;
|
||||
}
|
||||
|
||||
void VisualScriptYieldSignal::set_signal(const StringName &p_type) {
|
||||
|
||||
if (signal == p_type)
|
||||
return;
|
||||
|
||||
@@ -393,12 +358,10 @@ void VisualScriptYieldSignal::set_signal(const StringName &p_type) {
|
||||
ports_changed_notify();
|
||||
}
|
||||
StringName VisualScriptYieldSignal::get_signal() const {
|
||||
|
||||
return signal;
|
||||
}
|
||||
|
||||
void VisualScriptYieldSignal::set_base_path(const NodePath &p_type) {
|
||||
|
||||
if (base_path == p_type)
|
||||
return;
|
||||
|
||||
@@ -409,12 +372,10 @@ void VisualScriptYieldSignal::set_base_path(const NodePath &p_type) {
|
||||
}
|
||||
|
||||
NodePath VisualScriptYieldSignal::get_base_path() const {
|
||||
|
||||
return base_path;
|
||||
}
|
||||
|
||||
void VisualScriptYieldSignal::set_call_mode(CallMode p_mode) {
|
||||
|
||||
if (call_mode == p_mode)
|
||||
return;
|
||||
|
||||
@@ -425,12 +386,10 @@ void VisualScriptYieldSignal::set_call_mode(CallMode p_mode) {
|
||||
}
|
||||
|
||||
VisualScriptYieldSignal::CallMode VisualScriptYieldSignal::get_call_mode() const {
|
||||
|
||||
return call_mode;
|
||||
}
|
||||
|
||||
void VisualScriptYieldSignal::_validate_property(PropertyInfo &property) const {
|
||||
|
||||
if (property.name == "base_type") {
|
||||
if (call_mode != CALL_MODE_INSTANCE) {
|
||||
property.usage = PROPERTY_USAGE_NOEDITOR;
|
||||
@@ -441,7 +400,6 @@ void VisualScriptYieldSignal::_validate_property(PropertyInfo &property) const {
|
||||
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
|
||||
@@ -467,7 +425,6 @@ void VisualScriptYieldSignal::_validate_property(PropertyInfo &property) const {
|
||||
|
||||
String ml;
|
||||
for (List<String>::Element *E = mstring.front(); E; E = E->next()) {
|
||||
|
||||
if (ml != String())
|
||||
ml += ",";
|
||||
ml += E->get();
|
||||
@@ -478,7 +435,6 @@ void VisualScriptYieldSignal::_validate_property(PropertyInfo &property) const {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -524,7 +480,6 @@ public:
|
||||
//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) {
|
||||
|
||||
if (p_start_mode == START_MODE_RESUME_YIELD) {
|
||||
return 0; //resuming yield
|
||||
} else {
|
||||
@@ -533,14 +488,11 @@ public:
|
||||
Object *object = NULL;
|
||||
|
||||
switch (call_mode) {
|
||||
|
||||
case VisualScriptYieldSignal::CALL_MODE_SELF: {
|
||||
|
||||
object = instance->get_owner_ptr();
|
||||
|
||||
} break;
|
||||
case VisualScriptYieldSignal::CALL_MODE_NODE_PATH: {
|
||||
|
||||
Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
|
||||
if (!node) {
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
|
||||
@@ -559,7 +511,6 @@ public:
|
||||
|
||||
} break;
|
||||
case VisualScriptYieldSignal::CALL_MODE_INSTANCE: {
|
||||
|
||||
object = *p_inputs[0];
|
||||
if (!object) {
|
||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
|
||||
@@ -583,7 +534,6 @@ public:
|
||||
};
|
||||
|
||||
VisualScriptNodeInstance *VisualScriptYieldSignal::instance(VisualScriptInstance *p_instance) {
|
||||
|
||||
VisualScriptNodeInstanceYieldSignal *instance = memnew(VisualScriptNodeInstanceYieldSignal);
|
||||
instance->node = this;
|
||||
instance->instance = p_instance;
|
||||
@@ -594,14 +544,12 @@ VisualScriptNodeInstance *VisualScriptYieldSignal::instance(VisualScriptInstance
|
||||
return instance;
|
||||
}
|
||||
VisualScriptYieldSignal::VisualScriptYieldSignal() {
|
||||
|
||||
call_mode = CALL_MODE_SELF;
|
||||
base_type = "Object";
|
||||
}
|
||||
|
||||
template <VisualScriptYieldSignal::CallMode cmode>
|
||||
static Ref<VisualScriptNode> create_yield_signal_node(const String &p_name) {
|
||||
|
||||
Ref<VisualScriptYieldSignal> node;
|
||||
node.instance();
|
||||
node->set_call_mode(cmode);
|
||||
@@ -609,7 +557,6 @@ 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_physics_frame", create_yield_node<VisualScriptYield::YIELD_PHYSICS_FRAME>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_time", create_yield_node<VisualScriptYield::YIELD_WAIT>);
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptYield : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptYield, VisualScriptNode);
|
||||
|
||||
public:
|
||||
@@ -84,7 +83,6 @@ public:
|
||||
VARIANT_ENUM_CAST(VisualScriptYield::YieldMode)
|
||||
|
||||
class VisualScriptYieldSignal : public VisualScriptNode {
|
||||
|
||||
GDCLASS(VisualScriptYieldSignal, VisualScriptNode);
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user