feat: updated engine version to 4.4-rc1
This commit is contained in:
parent
ee00efde1f
commit
21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions
|
|
@ -97,25 +97,25 @@ void GDScriptLambdaCallable::call(const Variant **p_arguments, int p_argcount, V
|
|||
}
|
||||
|
||||
if (captures_amount > 0) {
|
||||
Vector<const Variant *> args;
|
||||
args.resize(p_argcount + captures_amount);
|
||||
const int total_argcount = p_argcount + captures_amount;
|
||||
const Variant **args = (const Variant **)alloca(sizeof(Variant *) * total_argcount);
|
||||
for (int i = 0; i < captures_amount; i++) {
|
||||
args.write[i] = &captures[i];
|
||||
args[i] = &captures[i];
|
||||
if (captures[i].get_type() == Variant::OBJECT) {
|
||||
bool was_freed = false;
|
||||
captures[i].get_validated_object_with_check(was_freed);
|
||||
if (was_freed) {
|
||||
ERR_PRINT(vformat(R"(Lambda capture at index %d was freed. Passed "null" instead.)", i));
|
||||
static Variant nil;
|
||||
args.write[i] = &nil;
|
||||
args[i] = &nil;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < p_argcount; i++) {
|
||||
args.write[i + captures_amount] = p_arguments[i];
|
||||
args[i + captures_amount] = p_arguments[i];
|
||||
}
|
||||
|
||||
r_return_value = function->call(nullptr, args.ptrw(), args.size(), r_call_error);
|
||||
r_return_value = function->call(nullptr, args, total_argcount, r_call_error);
|
||||
switch (r_call_error.error) {
|
||||
case Callable::CallError::CALL_ERROR_INVALID_ARGUMENT:
|
||||
r_call_error.argument -= captures_amount;
|
||||
|
|
@ -150,7 +150,7 @@ void GDScriptLambdaCallable::call(const Variant **p_arguments, int p_argcount, V
|
|||
|
||||
GDScriptLambdaCallable::GDScriptLambdaCallable(Ref<GDScript> p_script, GDScriptFunction *p_function, const Vector<Variant> &p_captures) :
|
||||
function(p_function) {
|
||||
ERR_FAIL_NULL(p_script.ptr());
|
||||
ERR_FAIL_COND(p_script.is_null());
|
||||
ERR_FAIL_NULL(p_function);
|
||||
script = p_script;
|
||||
captures = p_captures;
|
||||
|
|
@ -178,12 +178,12 @@ uint32_t GDScriptLambdaSelfCallable::hash() const {
|
|||
|
||||
String GDScriptLambdaSelfCallable::get_as_text() const {
|
||||
if (function == nullptr) {
|
||||
return "<invalid lambda>";
|
||||
return "<invalid self lambda>";
|
||||
}
|
||||
if (function->get_name() != StringName()) {
|
||||
return function->get_name().operator String() + "(lambda)";
|
||||
return function->get_name().operator String() + "(self lambda)";
|
||||
}
|
||||
return "(anonymous lambda)";
|
||||
return "(anonymous self lambda)";
|
||||
}
|
||||
|
||||
CallableCustom::CompareEqualFunc GDScriptLambdaSelfCallable::get_compare_equal_func() const {
|
||||
|
|
@ -229,25 +229,25 @@ void GDScriptLambdaSelfCallable::call(const Variant **p_arguments, int p_argcoun
|
|||
}
|
||||
|
||||
if (captures_amount > 0) {
|
||||
Vector<const Variant *> args;
|
||||
args.resize(p_argcount + captures_amount);
|
||||
const int total_argcount = p_argcount + captures_amount;
|
||||
const Variant **args = (const Variant **)alloca(sizeof(Variant *) * total_argcount);
|
||||
for (int i = 0; i < captures_amount; i++) {
|
||||
args.write[i] = &captures[i];
|
||||
args[i] = &captures[i];
|
||||
if (captures[i].get_type() == Variant::OBJECT) {
|
||||
bool was_freed = false;
|
||||
captures[i].get_validated_object_with_check(was_freed);
|
||||
if (was_freed) {
|
||||
ERR_PRINT(vformat(R"(Lambda capture at index %d was freed. Passed "null" instead.)", i));
|
||||
static Variant nil;
|
||||
args.write[i] = &nil;
|
||||
args[i] = &nil;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < p_argcount; i++) {
|
||||
args.write[i + captures_amount] = p_arguments[i];
|
||||
args[i + captures_amount] = p_arguments[i];
|
||||
}
|
||||
|
||||
r_return_value = function->call(static_cast<GDScriptInstance *>(object->get_script_instance()), args.ptrw(), args.size(), r_call_error);
|
||||
r_return_value = function->call(static_cast<GDScriptInstance *>(object->get_script_instance()), args, total_argcount, r_call_error);
|
||||
switch (r_call_error.error) {
|
||||
case Callable::CallError::CALL_ERROR_INVALID_ARGUMENT:
|
||||
r_call_error.argument -= captures_amount;
|
||||
|
|
@ -282,7 +282,7 @@ void GDScriptLambdaSelfCallable::call(const Variant **p_arguments, int p_argcoun
|
|||
|
||||
GDScriptLambdaSelfCallable::GDScriptLambdaSelfCallable(Ref<RefCounted> p_self, GDScriptFunction *p_function, const Vector<Variant> &p_captures) :
|
||||
function(p_function) {
|
||||
ERR_FAIL_NULL(p_self.ptr());
|
||||
ERR_FAIL_COND(p_self.is_null());
|
||||
ERR_FAIL_NULL(p_function);
|
||||
reference = p_self;
|
||||
object = p_self.ptr();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue