diff options
319 files changed, 35635 insertions, 26727 deletions
diff --git a/core/extension/gdnative_interface.cpp b/core/extension/gdnative_interface.cpp index 385117eed1..d9ec42dc9d 100644 --- a/core/extension/gdnative_interface.cpp +++ b/core/extension/gdnative_interface.cpp @@ -80,7 +80,7 @@ static void gdnative_variant_call(GDNativeVariantPtr p_self, const GDNativeStrin const Variant **args = (const Variant **)p_args; Variant ret; Callable::CallError error; - self->call(*method, args, p_argcount, ret, error); + self->callp(*method, args, p_argcount, ret, error); memnew_placement(r_return, Variant(ret)); if (r_error) { @@ -152,7 +152,7 @@ static void gdnative_variant_set_indexed(GDNativeVariantPtr p_self, GDNativeInt bool valid; bool oob; - self->set_indexed(p_index, value, valid, oob); + self->set_indexed(p_index, *value, valid, oob); *r_valid = valid; *r_oob = oob; } diff --git a/core/math/expression.cpp b/core/math/expression.cpp index 0ddac9744e..9dd1257474 100644 --- a/core/math/expression.cpp +++ b/core/math/expression.cpp @@ -1440,7 +1440,7 @@ bool Expression::_execute(const Array &p_inputs, Object *p_instance, Expression: } Callable::CallError ce; - base.call(call->method, (const Variant **)argp.ptr(), argp.size(), r_ret, ce); + base.callp(call->method, (const Variant **)argp.ptr(), argp.size(), r_ret, ce); if (ce.error != Callable::CallError::CALL_OK) { r_error_str = vformat(RTR("On call to '%s':"), String(call->method)); diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h index 8c0b87cf4a..44340b97ae 100644 --- a/core/math/math_funcs.h +++ b/core/math/math_funcs.h @@ -322,7 +322,7 @@ public: // double only, as these functions are mainly used by the editor and not performance-critical, static double ease(double p_x, double p_c); static int step_decimals(double p_step); - static int range_step_decimals(double p_step); + static int range_step_decimals(double p_step); // For editor use only. static double snapped(double p_value, double p_step); static uint32_t larger_prime(uint32_t p_val); diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index c29316c089..4a71597f84 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -1197,7 +1197,7 @@ bool ClassDB::set_property(Object *p_object, const StringName &p_property, const if (psg->_setptr) { psg->_setptr->call(p_object, arg, 2, ce); } else { - p_object->call(psg->setter, arg, 2, ce); + p_object->callp(psg->setter, arg, 2, ce); } } else { @@ -1205,7 +1205,7 @@ bool ClassDB::set_property(Object *p_object, const StringName &p_property, const if (psg->_setptr) { psg->_setptr->call(p_object, arg, 1, ce); } else { - p_object->call(psg->setter, arg, 1, ce); + p_object->callp(psg->setter, arg, 1, ce); } } @@ -1238,14 +1238,14 @@ bool ClassDB::get_property(Object *p_object, const StringName &p_property, Varia Variant index = psg->index; const Variant *arg[1] = { &index }; Callable::CallError ce; - r_value = p_object->call(psg->getter, arg, 1, ce); + r_value = p_object->callp(psg->getter, arg, 1, ce); } else { Callable::CallError ce; if (psg->_getptr) { r_value = psg->_getptr->call(p_object, nullptr, 0, ce); } else { - r_value = p_object->call(psg->getter, nullptr, 0, ce); + r_value = p_object->callp(psg->getter, nullptr, 0, ce); } } return true; diff --git a/core/object/make_virtuals.py b/core/object/make_virtuals.py index 5de1b49026..552f2fa2bf 100644 --- a/core/object/make_virtuals.py +++ b/core/object/make_virtuals.py @@ -8,7 +8,7 @@ _FORCE_INLINE_ bool _gdvirtual_##m_name##_call($CALLARGS) $CONST { \\ if (script_instance) {\\ Callable::CallError ce; \\ $CALLSIARGS\\ - $CALLSIBEGINscript_instance->call(_gdvirtual_##m_name##_sn, $CALLSIARGPASS, ce);\\ + $CALLSIBEGINscript_instance->callp(_gdvirtual_##m_name##_sn, $CALLSIARGPASS, ce);\\ if (ce.error == Callable::CallError::CALL_OK) {\\ $CALLSIRET\\ return true;\\ diff --git a/core/object/message_queue.cpp b/core/object/message_queue.cpp index 3c828eabd9..79c36ac81f 100644 --- a/core/object/message_queue.cpp +++ b/core/object/message_queue.cpp @@ -32,6 +32,7 @@ #include "core/config/project_settings.h" #include "core/core_string_names.h" +#include "core/object/class_db.h" #include "core/object/script_language.h" MessageQueue *MessageQueue::singleton = nullptr; @@ -40,23 +41,8 @@ MessageQueue *MessageQueue::get_singleton() { return singleton; } -Error MessageQueue::push_call(ObjectID p_id, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error) { - return push_callable(Callable(p_id, p_method), p_args, p_argcount, p_show_error); -} - -Error MessageQueue::push_call(ObjectID p_id, const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - - int argc = 0; - - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - return push_call(p_id, p_method, argptr, argc, false); +Error MessageQueue::push_callp(ObjectID p_id, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error) { + return push_callablep(Callable(p_id, p_method), p_args, p_argcount, p_show_error); } Error MessageQueue::push_set(ObjectID p_id, const StringName &p_prop, const Variant &p_value) { @@ -113,8 +99,8 @@ Error MessageQueue::push_notification(ObjectID p_id, int p_notification) { return OK; } -Error MessageQueue::push_call(Object *p_object, const StringName &p_method, VARIANT_ARG_DECLARE) { - return push_call(p_object->get_instance_id(), p_method, VARIANT_ARG_PASS); +Error MessageQueue::push_callp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error) { + return push_callp(p_object->get_instance_id(), p_method, p_args, p_argcount, p_show_error); } Error MessageQueue::push_notification(Object *p_object, int p_notification) { @@ -125,7 +111,7 @@ Error MessageQueue::push_set(Object *p_object, const StringName &p_prop, const V return push_set(p_object->get_instance_id(), p_prop, p_value); } -Error MessageQueue::push_callable(const Callable &p_callable, const Variant **p_args, int p_argcount, bool p_show_error) { +Error MessageQueue::push_callablep(const Callable &p_callable, const Variant **p_args, int p_argcount, bool p_show_error) { _THREAD_SAFE_METHOD_ int room_needed = sizeof(Message) + sizeof(Variant) * p_argcount; @@ -155,21 +141,6 @@ Error MessageQueue::push_callable(const Callable &p_callable, const Variant **p_ return OK; } -Error MessageQueue::push_callable(const Callable &p_callable, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - - int argc = 0; - - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - return push_callable(p_callable, argptr, argc); -} - void MessageQueue::statistics() { Map<StringName, int> set_count; Map<int, int> notify_count; diff --git a/core/object/message_queue.h b/core/object/message_queue.h index a4449cf473..eaab01d0aa 100644 --- a/core/object/message_queue.h +++ b/core/object/message_queue.h @@ -31,8 +31,11 @@ #ifndef MESSAGE_QUEUE_H #define MESSAGE_QUEUE_H -#include "core/object/class_db.h" +#include "core/object/object_id.h" #include "core/os/thread_safe.h" +#include "core/variant/variant.h" + +class Object; class MessageQueue { _THREAD_SAFE_CLASS_ @@ -73,14 +76,42 @@ class MessageQueue { public: static MessageQueue *get_singleton(); - Error push_call(ObjectID p_id, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error = false); - Error push_call(ObjectID p_id, const StringName &p_method, VARIANT_ARG_LIST); + Error push_callp(ObjectID p_id, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error = false); + template <typename... VarArgs> + Error push_call(ObjectID p_id, const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + return push_callp(p_id, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + Error push_notification(ObjectID p_id, int p_notification); Error push_set(ObjectID p_id, const StringName &p_prop, const Variant &p_value); - Error push_callable(const Callable &p_callable, const Variant **p_args, int p_argcount, bool p_show_error = false); - Error push_callable(const Callable &p_callable, VARIANT_ARG_LIST); + Error push_callablep(const Callable &p_callable, const Variant **p_args, int p_argcount, bool p_show_error = false); + + template <typename... VarArgs> + Error push_callable(const Callable &p_callable, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + return push_callablep(p_callable, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + + Error push_callp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error = false); + template <typename... VarArgs> + Error push_call(Object *p_object, const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + return push_callp(p_object, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } - Error push_call(Object *p_object, const StringName &p_method, VARIANT_ARG_LIST); Error push_notification(Object *p_object, int p_notification); Error push_set(Object *p_object, const StringName &p_prop, const Variant &p_value); diff --git a/core/object/object.cpp b/core/object/object.cpp index a8a49bd22e..387c765d73 100644 --- a/core/object/object.cpp +++ b/core/object/object.cpp @@ -679,7 +679,7 @@ Variant Object::_call_bind(const Variant **p_args, int p_argcount, Callable::Cal StringName method = *p_args[0]; - return call(method, &p_args[1], p_argcount - 1, r_error); + return callp(method, &p_args[1], p_argcount - 1, r_error); } Variant Object::_call_deferred_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) { @@ -700,7 +700,7 @@ Variant Object::_call_deferred_bind(const Variant **p_args, int p_argcount, Call StringName method = *p_args[0]; - MessageQueue::get_singleton()->push_call(get_instance_id(), method, &p_args[1], p_argcount - 1, true); + MessageQueue::get_singleton()->push_callp(get_instance_id(), method, &p_args[1], p_argcount - 1, true); return Variant(); } @@ -750,31 +750,14 @@ Variant Object::callv(const StringName &p_method, const Array &p_args) { } Callable::CallError ce; - Variant ret = call(p_method, argptrs, p_args.size(), ce); + Variant ret = callp(p_method, argptrs, p_args.size(), ce); if (ce.error != Callable::CallError::CALL_OK) { ERR_FAIL_V_MSG(Variant(), "Error calling method from 'callv': " + Variant::get_call_error_text(this, p_method, argptrs, p_args.size(), ce) + "."); } return ret; } -Variant Object::call(const StringName &p_name, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - - int argc = 0; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - Callable::CallError error; - - Variant ret = call(p_name, argptr, argc, error); - return ret; -} - -Variant Object::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant Object::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { r_error.error = Callable::CallError::CALL_OK; if (p_method == CoreStringNames::get_singleton()->_free) { @@ -808,7 +791,7 @@ Variant Object::call(const StringName &p_method, const Variant **p_args, int p_a OBJ_DEBUG_LOCK if (script_instance) { - ret = script_instance->call(p_method, p_args, p_argcount, r_error); + ret = script_instance->callp(p_method, p_args, p_argcount, r_error); //force jumptable switch (r_error.error) { case Callable::CallError::CALL_OK: @@ -1027,12 +1010,12 @@ Variant Object::_emit_signal(const Variant **p_args, int p_argcount, Callable::C args = &p_args[1]; } - emit_signal(signal, args, argc); + emit_signalp(signal, args, argc); return Variant(); } -Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int p_argcount) { +Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int p_argcount) { if (_block_signals) { return ERR_CANT_ACQUIRE_RESOURCE; //no emit, signals blocked } @@ -1091,7 +1074,7 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int } if (c.flags & CONNECT_DEFERRED) { - MessageQueue::get_singleton()->push_callable(c.callable, args, argc, true); + MessageQueue::get_singleton()->push_callablep(c.callable, args, argc, true); } else { Callable::CallError ce; _emitting = true; @@ -1139,21 +1122,6 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int return err; } -Error Object::emit_signal(const StringName &p_name, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - - int argc = 0; - - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - return emit_signal(p_name, argptr, argc); -} - void Object::_add_user_signal(const String &p_name, const Array &p_args) { // this version of add_user_signal is meant to be used from scripts or external apis // without access to ADD_SIGNAL in bind_methods @@ -1648,10 +1616,6 @@ void Object::_bind_methods() { BIND_ENUM_CONSTANT(CONNECT_REFERENCE_COUNTED); } -void Object::call_deferred(const StringName &p_method, VARIANT_ARG_DECLARE) { - MessageQueue::get_singleton()->push_call(this, p_method, VARIANT_ARG_PASS); -} - void Object::set_deferred(const StringName &p_property, const Variant &p_value) { MessageQueue::get_singleton()->push_set(this, p_property, p_value); } diff --git a/core/object/object.h b/core/object/object.h index b5be1cf0e7..8a8b6b5487 100644 --- a/core/object/object.h +++ b/core/object/object.h @@ -32,6 +32,7 @@ #define OBJECT_H #include "core/extension/gdnative_interface.h" +#include "core/object/message_queue.h" #include "core/object/object_id.h" #include "core/os/rw_lock.h" #include "core/os/spin_lock.h" @@ -44,14 +45,6 @@ #include "core/variant/callable_bind.h" #include "core/variant/variant.h" -#define VARIANT_ARG_LIST const Variant &p_arg1 = Variant(), const Variant &p_arg2 = Variant(), const Variant &p_arg3 = Variant(), const Variant &p_arg4 = Variant(), const Variant &p_arg5 = Variant(), const Variant &p_arg6 = Variant(), const Variant &p_arg7 = Variant(), const Variant &p_arg8 = Variant() -#define VARIANT_ARG_PASS p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6, p_arg7, p_arg8 -#define VARIANT_ARG_DECLARE const Variant &p_arg1, const Variant &p_arg2, const Variant &p_arg3, const Variant &p_arg4, const Variant &p_arg5, const Variant &p_arg6, const Variant &p_arg7, const Variant &p_arg8 -#define VARIANT_ARG_MAX 8 -#define VARIANT_ARGPTRS const Variant *argptr[8] = { &p_arg1, &p_arg2, &p_arg3, &p_arg4, &p_arg5, &p_arg6, &p_arg7, &p_arg8 }; -#define VARIANT_ARGPTRS_PASS *argptr[0], *argptr[1], *argptr[2], *argptr[3], *argptr[4], *argptr[5], *argptr[6]], *argptr[7] -#define VARIANT_ARGS_FROM_ARRAY(m_arr) m_arr[0], m_arr[1], m_arr[2], m_arr[3], m_arr[4], m_arr[5], m_arr[6], m_arr[7] - enum PropertyHint { PROPERTY_HINT_NONE, ///< no hint provided. PROPERTY_HINT_RANGE, ///< hint_text = "min,max[,step][,or_greater][,or_lesser][,noslider][,radians][,degrees][,exp][,suffix:<keyword>] range. @@ -734,8 +727,18 @@ public: bool has_method(const StringName &p_method) const; void get_method_list(List<MethodInfo> *p_list) const; Variant callv(const StringName &p_method, const Array &p_args); - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); - Variant call(const StringName &p_name, VARIANT_ARG_LIST); // C++ helper + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); + + template <typename... VarArgs> + Variant call(const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + Callable::CallError cerr; + return callp(p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args), cerr); + } void notification(int p_notification, bool p_reversed = false); virtual String to_string(); @@ -769,8 +772,18 @@ public: void set_script_and_instance(const Variant &p_script, ScriptInstance *p_instance); void add_user_signal(const MethodInfo &p_signal); - Error emit_signal(const StringName &p_name, VARIANT_ARG_LIST); - Error emit_signal(const StringName &p_name, const Variant **p_args, int p_argcount); + + template <typename... VarArgs> + Error emit_signal(const StringName &p_name, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + return emit_signalp(p_name, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + + Error emit_signalp(const StringName &p_name, const Variant **p_args, int p_argcount); bool has_signal(const StringName &p_name) const; void get_signal_list(List<MethodInfo> *p_signals) const; void get_signal_connection_list(const StringName &p_signal, List<Connection> *p_connections) const; @@ -782,7 +795,11 @@ public: void disconnect(const StringName &p_signal, const Callable &p_callable); bool is_connected(const StringName &p_signal, const Callable &p_callable) const; - void call_deferred(const StringName &p_method, VARIANT_ARG_LIST); + template <typename... VarArgs> + void call_deferred(const StringName &p_name, VarArgs... p_args) { + MessageQueue::get_singleton()->push_call(this, p_name, p_args...); + } + void set_deferred(const StringName &p_property, const Variant &p_value); void set_block_signals(bool p_block); diff --git a/core/object/script_language.cpp b/core/object/script_language.cpp index b14296b815..11440c37fe 100644 --- a/core/object/script_language.cpp +++ b/core/object/script_language.cpp @@ -310,20 +310,6 @@ void ScriptInstance::get_property_state(List<Pair<StringName, Variant>> &state) } } -Variant ScriptInstance::call(const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - int argc = 0; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - Callable::CallError error; - return call(p_method, argptr, argc, error); -} - void ScriptInstance::property_set_fallback(const StringName &, const Variant &, bool *r_valid) { if (r_valid) { *r_valid = false; diff --git a/core/object/script_language.h b/core/object/script_language.h index 4b18d9a5e8..2122f785b6 100644 --- a/core/object/script_language.h +++ b/core/object/script_language.h @@ -176,8 +176,20 @@ public: virtual void get_method_list(List<MethodInfo> *p_list) const = 0; virtual bool has_method(const StringName &p_method) const = 0; - virtual Variant call(const StringName &p_method, VARIANT_ARG_LIST); - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) = 0; + + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) = 0; + + template <typename... VarArgs> + Variant call(const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + Callable::CallError cerr; + return callp(p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args), cerr); + } + virtual void notification(int p_notification) = 0; virtual String to_string(bool *r_valid) { if (r_valid) { @@ -419,8 +431,8 @@ public: virtual void get_method_list(List<MethodInfo> *p_list) const; virtual bool has_method(const StringName &p_method) const; - virtual Variant call(const StringName &p_method, VARIANT_ARG_LIST) { return Variant(); } - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { + + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; return Variant(); } diff --git a/core/object/undo_redo.cpp b/core/object/undo_redo.cpp index b78328fb42..f7a12a7528 100644 --- a/core/object/undo_redo.cpp +++ b/core/object/undo_redo.cpp @@ -126,8 +126,7 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) { force_keep_in_merge_ends = false; } -void UndoRedo::add_do_method(Object *p_object, const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS +void UndoRedo::add_do_methodp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount) { ERR_FAIL_COND(p_object == nullptr); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); @@ -140,14 +139,13 @@ void UndoRedo::add_do_method(Object *p_object, const StringName &p_method, VARIA do_op.type = Operation::TYPE_METHOD; do_op.name = p_method; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - do_op.args[i] = *argptr[i]; + for (int i = 0; i < p_argcount; i++) { + do_op.args.push_back(*p_args[i]); } actions.write[current_action + 1].do_ops.push_back(do_op); } -void UndoRedo::add_undo_method(Object *p_object, const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS +void UndoRedo::add_undo_methodp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount) { ERR_FAIL_COND(p_object == nullptr); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); @@ -167,8 +165,8 @@ void UndoRedo::add_undo_method(Object *p_object, const StringName &p_method, VAR undo_op.force_keep_in_merge_ends = force_keep_in_merge_ends; undo_op.name = p_method; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - undo_op.args[i] = *argptr[i]; + for (int i = 0; i < p_argcount; i++) { + undo_op.args.push_back(*p_args[i]); } actions.write[current_action + 1].undo_ops.push_back(undo_op); } @@ -185,7 +183,7 @@ void UndoRedo::add_do_property(Object *p_object, const StringName &p_property, c do_op.type = Operation::TYPE_PROPERTY; do_op.name = p_property; - do_op.args[0] = p_value; + do_op.args.push_back(p_value); actions.write[current_action + 1].do_ops.push_back(do_op); } @@ -208,7 +206,7 @@ void UndoRedo::add_undo_property(Object *p_object, const StringName &p_property, undo_op.type = Operation::TYPE_PROPERTY; undo_op.force_keep_in_merge_ends = force_keep_in_merge_ends; undo_op.name = p_property; - undo_op.args[0] = p_value; + undo_op.args.push_back(p_value); actions.write[current_action + 1].undo_ops.push_back(undo_op); } @@ -315,20 +313,15 @@ void UndoRedo::_process_operation_list(List<Operation>::Element *E) { switch (op.type) { case Operation::TYPE_METHOD: { Vector<const Variant *> argptrs; - argptrs.resize(VARIANT_ARG_MAX); + argptrs.resize(op.args.size()); int argc = 0; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (op.args[i].get_type() == Variant::NIL) { - break; - } + for (int i = 0; i < op.args.size(); i++) { argptrs.write[i] = &op.args[i]; - argc++; } - argptrs.resize(argc); Callable::CallError ce; - obj->call(op.name, (const Variant **)argptrs.ptr(), argc, ce); + obj->callp(op.name, (const Variant **)argptrs.ptr(), argc, ce); if (ce.error != Callable::CallError::CALL_OK) { ERR_PRINT("Error calling method from signal '" + String(op.name) + "': " + Variant::get_call_error_text(obj, op.name, (const Variant **)argptrs.ptr(), argc, ce)); } @@ -341,7 +334,7 @@ void UndoRedo::_process_operation_list(List<Operation>::Element *E) { #endif if (method_callback) { - method_callback(method_callbck_ud, obj, op.name, VARIANT_ARGS_FROM_ARRAY(op.args)); + method_callback(method_callbck_ud, obj, op.name, (const Variant **)argptrs.ptr(), argc); } } break; case Operation::TYPE_PROPERTY: { @@ -477,14 +470,7 @@ Variant UndoRedo::_add_do_method(const Variant **p_args, int p_argcount, Callabl Object *object = *p_args[0]; StringName method = *p_args[1]; - Variant v[VARIANT_ARG_MAX]; - - for (int i = 0; i < MIN(VARIANT_ARG_MAX, p_argcount - 2); ++i) { - v[i] = *p_args[i + 2]; - } - - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - add_do_method(object, method, v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); + add_do_methodp(object, method, p_args + 2, p_argcount - 2); return Variant(); } @@ -514,14 +500,7 @@ Variant UndoRedo::_add_undo_method(const Variant **p_args, int p_argcount, Calla Object *object = *p_args[0]; StringName method = *p_args[1]; - Variant v[VARIANT_ARG_MAX]; - - for (int i = 0; i < MIN(VARIANT_ARG_MAX, p_argcount - 2); ++i) { - v[i] = *p_args[i + 2]; - } - - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - add_undo_method(object, method, v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); + add_undo_methodp(object, method, p_args + 2, p_argcount - 2); return Variant(); } diff --git a/core/object/undo_redo.h b/core/object/undo_redo.h index 5eede74e2d..8871a549f8 100644 --- a/core/object/undo_redo.h +++ b/core/object/undo_redo.h @@ -49,7 +49,7 @@ public: Variant _add_do_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error); Variant _add_undo_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error); - typedef void (*MethodNotifyCallback)(void *p_ud, Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE); + typedef void (*MethodNotifyCallback)(void *p_ud, Object *p_base, const StringName &p_name, const Variant **p_args, int p_argcount); typedef void (*PropertyNotifyCallback)(void *p_ud, Object *p_base, const StringName &p_property, const Variant &p_value); private: @@ -65,7 +65,7 @@ private: Ref<RefCounted> ref; ObjectID object; StringName name; - Variant args[VARIANT_ARG_MAX]; + Vector<Variant> args; void delete_reference(); }; @@ -106,8 +106,30 @@ protected: public: void create_action(const String &p_name = "", MergeMode p_mode = MERGE_DISABLE); - void add_do_method(Object *p_object, const StringName &p_method, VARIANT_ARG_LIST); - void add_undo_method(Object *p_object, const StringName &p_method, VARIANT_ARG_LIST); + void add_do_methodp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount); + void add_undo_methodp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount); + + template <typename... VarArgs> + void add_do_method(Object *p_object, const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + + add_do_methodp(p_object, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + template <typename... VarArgs> + void add_undo_method(Object *p_object, const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + + add_undo_methodp(p_object, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + void add_do_property(Object *p_object, const StringName &p_property, const Variant &p_value); void add_undo_property(Object *p_object, const StringName &p_property, const Variant &p_value); void add_do_reference(Object *p_object); diff --git a/core/variant/binder_common.h b/core/variant/binder_common.h index b6fdb4d902..f31191e8a3 100644 --- a/core/variant/binder_common.h +++ b/core/variant/binder_common.h @@ -182,7 +182,7 @@ struct VariantCasterAndValidate { static _FORCE_INLINE_ T cast(const Variant **p_args, uint32_t p_arg_idx, Callable::CallError &r_error) { Variant::Type argtype = GetTypeInfo<T>::VARIANT_TYPE; if (!Variant::can_convert_strict(p_args[p_arg_idx]->get_type(), argtype) || - !VariantObjectClassChecker<T>::check(p_args[p_arg_idx])) { + !VariantObjectClassChecker<T>::check(*p_args[p_arg_idx])) { r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; r_error.expected = argtype; @@ -197,7 +197,7 @@ struct VariantCasterAndValidate<T &> { static _FORCE_INLINE_ T cast(const Variant **p_args, uint32_t p_arg_idx, Callable::CallError &r_error) { Variant::Type argtype = GetTypeInfo<T>::VARIANT_TYPE; if (!Variant::can_convert_strict(p_args[p_arg_idx]->get_type(), argtype) || - !VariantObjectClassChecker<T>::check(p_args[p_arg_idx])) { + !VariantObjectClassChecker<T>::check(*p_args[p_arg_idx])) { r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; r_error.expected = argtype; @@ -212,7 +212,7 @@ struct VariantCasterAndValidate<const T &> { static _FORCE_INLINE_ T cast(const Variant **p_args, uint32_t p_arg_idx, Callable::CallError &r_error) { Variant::Type argtype = GetTypeInfo<T>::VARIANT_TYPE; if (!Variant::can_convert_strict(p_args[p_arg_idx]->get_type(), argtype) || - !VariantObjectClassChecker<T>::check(p_args[p_arg_idx])) { + !VariantObjectClassChecker<T>::check(*p_args[p_arg_idx])) { r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; r_error.expected = argtype; diff --git a/core/variant/callable.cpp b/core/variant/callable.cpp index 27792ce111..48ed48d120 100644 --- a/core/variant/callable.cpp +++ b/core/variant/callable.cpp @@ -37,7 +37,7 @@ #include "core/object/script_language.h" void Callable::call_deferred(const Variant **p_arguments, int p_argcount) const { - MessageQueue::get_singleton()->push_callable(*this, p_arguments, p_argcount); + MessageQueue::get_singleton()->push_callablep(*this, p_arguments, p_argcount); } void Callable::call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, CallError &r_call_error) const { @@ -59,7 +59,7 @@ void Callable::call(const Variant **p_arguments, int p_argcount, Variant &r_retu return; } #endif - r_return_value = obj->call(method, p_arguments, p_argcount, r_call_error); + r_return_value = obj->callp(method, p_arguments, p_argcount, r_call_error); } } @@ -379,7 +379,7 @@ Error Signal::emit(const Variant **p_arguments, int p_argcount) const { return ERR_INVALID_DATA; } - return obj->emit_signal(name, p_arguments, p_argcount); + return obj->emit_signalp(name, p_arguments, p_argcount); } Error Signal::connect(const Callable &p_callable, uint32_t p_flags) { diff --git a/core/variant/variant.cpp b/core/variant/variant.cpp index 3d11ed6303..b3e909b489 100644 --- a/core/variant/variant.cpp +++ b/core/variant/variant.cpp @@ -1972,7 +1972,7 @@ Variant::operator ::RID() const { } #endif Callable::CallError ce; - Variant ret = _get_obj().obj->call(CoreStringNames::get_singleton()->get_rid, nullptr, 0, ce); + Variant ret = _get_obj().obj->callp(CoreStringNames::get_singleton()->get_rid, nullptr, 0, ce); if (ce.error == Callable::CallError::CALL_OK && ret.get_type() == Variant::RID) { return ret; } @@ -3309,21 +3309,7 @@ bool Variant::is_shared() const { return false; } -Variant Variant::call(const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - int argc = 0; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - Callable::CallError error; - - Variant ret; - call(p_method, argptr, argc, ret, error); - +void Variant::_variant_call_error(const String &p_method, Callable::CallError &error) { switch (error.error) { case Callable::CallError::CALL_ERROR_INVALID_ARGUMENT: { String err = "Invalid type for argument #" + itos(error.argument) + ", expected '" + Variant::get_type_name(Variant::Type(error.expected)) + "'."; @@ -3341,8 +3327,6 @@ Variant Variant::call(const StringName &p_method, VARIANT_ARG_DECLARE) { default: { } } - - return ret; } void Variant::construct_from_string(const String &p_string, Variant &r_value, ObjectConstruct p_obj_construct, void *p_construct_ud) { diff --git a/core/variant/variant.h b/core/variant/variant.h index 836a67d942..ca18249f36 100644 --- a/core/variant/variant.h +++ b/core/variant/variant.h @@ -282,6 +282,14 @@ private: static void _register_variant_utility_functions(); static void _unregister_variant_utility_functions(); + void _variant_call_error(const String &p_method, Callable::CallError &error); + + // Avoid accidental conversion. If you reached this point, it's because you most likely forgot to dereference + // a Variant pointer (so add * like this: *variant_pointer). + + Variant(const Variant *) {} + Variant(const Variant **) {} + public: _FORCE_INLINE_ Type get_type() const { return type; @@ -527,8 +535,23 @@ public: static int get_builtin_method_count(Variant::Type p_type); static uint32_t get_builtin_method_hash(Variant::Type p_type, const StringName &p_method); - void call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error); - Variant call(const StringName &p_method, const Variant &p_arg1 = Variant(), const Variant &p_arg2 = Variant(), const Variant &p_arg3 = Variant(), const Variant &p_arg4 = Variant(), const Variant &p_arg5 = Variant(), const Variant &p_arg6 = Variant(), const Variant &p_arg7 = Variant(), const Variant &p_arg8 = Variant()); + void callp(const StringName &p_method, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error); + + template <typename... VarArgs> + Variant call(const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + Callable::CallError cerr; + Variant ret; + callp(p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args), ret, cerr); + if (cerr.error != Callable::CallError::CALL_OK) { + _variant_call_error(p_method, cerr); + } + return ret; + } static void call_static(Variant::Type p_type, const StringName &p_method, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error); diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp index a5e89eec80..bc29be77fc 100644 --- a/core/variant/variant_call.cpp +++ b/core/variant/variant_call.cpp @@ -1003,7 +1003,7 @@ static void register_builtin_method(const Vector<String> &p_argnames, const Vect builtin_method_names[T::get_base_type()].push_back(name); } -void Variant::call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) { +void Variant::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) { if (type == Variant::OBJECT) { //call object Object *obj = _get_obj().obj; @@ -1018,7 +1018,7 @@ void Variant::call(const StringName &p_method, const Variant **p_args, int p_arg } #endif - r_ret = _get_obj().obj->call(p_method, p_args, p_argcount, r_error); + r_ret = _get_obj().obj->callp(p_method, p_args, p_argcount, r_error); //else if (type==Variant::METHOD) { } else { diff --git a/core/variant/variant_setget.cpp b/core/variant/variant_setget.cpp index fa8d26a72b..e604ff9567 100644 --- a/core/variant/variant_setget.cpp +++ b/core/variant/variant_setget.cpp @@ -1277,7 +1277,7 @@ bool Variant::iter_init(Variant &r_iter, bool &valid) const { ref.push_back(r_iter); Variant vref = ref; const Variant *refp[] = { &vref }; - Variant ret = _get_obj().obj->call(CoreStringNames::get_singleton()->_iter_init, refp, 1, ce); + Variant ret = _get_obj().obj->callp(CoreStringNames::get_singleton()->_iter_init, refp, 1, ce); if (ref.size() != 1 || ce.error != Callable::CallError::CALL_OK) { valid = false; @@ -1504,7 +1504,7 @@ bool Variant::iter_next(Variant &r_iter, bool &valid) const { ref.push_back(r_iter); Variant vref = ref; const Variant *refp[] = { &vref }; - Variant ret = _get_obj().obj->call(CoreStringNames::get_singleton()->_iter_next, refp, 1, ce); + Variant ret = _get_obj().obj->callp(CoreStringNames::get_singleton()->_iter_next, refp, 1, ce); if (ref.size() != 1 || ce.error != Callable::CallError::CALL_OK) { valid = false; @@ -1686,7 +1686,7 @@ Variant Variant::iter_get(const Variant &r_iter, bool &r_valid) const { Callable::CallError ce; ce.error = Callable::CallError::CALL_OK; const Variant *refp[] = { &r_iter }; - Variant ret = _get_obj().obj->call(CoreStringNames::get_singleton()->_iter_get, refp, 1, ce); + Variant ret = _get_obj().obj->callp(CoreStringNames::get_singleton()->_iter_get, refp, 1, ce); if (ce.error != Callable::CallError::CALL_OK) { r_valid = false; diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp index e83c71098d..05fb577e2c 100644 --- a/core/variant/variant_utility.cpp +++ b/core/variant/variant_utility.cpp @@ -219,10 +219,6 @@ struct VariantUtilityFunctions { return Math::step_decimals(step); } - static inline int range_step_decimals(float step) { - return Math::range_step_decimals(step); - } - static inline double snapped(double value, double step) { return Math::snapped(value, step); } @@ -1204,7 +1200,6 @@ void Variant::_register_variant_utility_functions() { FUNCBINDR(ease, sarray("x", "curve"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(step_decimals, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(range_step_decimals, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(snapped, sarray("x", "step"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(lerp, sarray("from", "to", "weight"), Variant::UTILITY_FUNC_TYPE_MATH); diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 3cfc6f3bd2..1228cd771c 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -791,12 +791,6 @@ [/codeblock] </description> </method> - <method name="range_step_decimals"> - <return type="int" /> - <argument index="0" name="x" type="float" /> - <description> - </description> - </method> <method name="rid_allocate_id"> <return type="int" /> <description> diff --git a/doc/classes/AspectRatioContainer.xml b/doc/classes/AspectRatioContainer.xml index 41e06e6e98..742a7276d4 100644 --- a/doc/classes/AspectRatioContainer.xml +++ b/doc/classes/AspectRatioContainer.xml @@ -34,7 +34,7 @@ </constant> <constant name="STRETCH_COVER" value="3" enum="StretchMode"> The width and height of child controls is automatically adjusted to make their bounding rectangle cover the entire area of the container while keeping the aspect ratio. - When the bounding rectangle of child controls exceed the container's size and [member Control.rect_clip_content] is enabled, this allows to show only the container's area restricted by its own bounding rectangle. + When the bounding rectangle of child controls exceed the container's size and [member Control.clip_contents] is enabled, this allows to show only the container's area restricted by its own bounding rectangle. </constant> <constant name="ALIGNMENT_BEGIN" value="0" enum="AlignmentMode"> Aligns child controls with the beginning (left or top) of the container. diff --git a/doc/classes/AudioStreamGenerator.xml b/doc/classes/AudioStreamGenerator.xml index 78a1ed7c51..c8f081215d 100644 --- a/doc/classes/AudioStreamGenerator.xml +++ b/doc/classes/AudioStreamGenerator.xml @@ -6,7 +6,7 @@ <description> This audio stream does not play back sounds, but expects a script to generate audio data for it instead. See also [AudioStreamGeneratorPlayback]. See also [AudioEffectSpectrumAnalyzer] for performing real-time audio spectrum analysis. - [b]Note:[/b] Due to performance constraints, this class is best used from C# or from a compiled language via GDNative. If you still want to use this class from GDScript, consider using a lower [member mix_rate] such as 11,025 Hz or 22,050 Hz. + [b]Note:[/b] Due to performance constraints, this class is best used from C# or from a compiled language via GDExtension. If you still want to use this class from GDScript, consider using a lower [member mix_rate] such as 11,025 Hz or 22,050 Hz. </description> <tutorials> <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link> diff --git a/doc/classes/AudioStreamGeneratorPlayback.xml b/doc/classes/AudioStreamGeneratorPlayback.xml index 1cd82026a0..06c285bff7 100644 --- a/doc/classes/AudioStreamGeneratorPlayback.xml +++ b/doc/classes/AudioStreamGeneratorPlayback.xml @@ -39,14 +39,14 @@ <return type="bool" /> <argument index="0" name="frames" type="PackedVector2Array" /> <description> - Pushes several audio data frames to the buffer. This is usually more efficient than [method push_frame] in C# and compiled languages via GDNative, but [method push_buffer] may be [i]less[/i] efficient in GDScript. + Pushes several audio data frames to the buffer. This is usually more efficient than [method push_frame] in C# and compiled languages via GDExtension, but [method push_buffer] may be [i]less[/i] efficient in GDScript. </description> </method> <method name="push_frame"> <return type="bool" /> <argument index="0" name="frame" type="Vector2" /> <description> - Pushes a single audio data frame to the buffer. This is usually less efficient than [method push_buffer] in C# and compiled languages via GDNative, but [method push_frame] may be [i]more[/i] efficient in GDScript. + Pushes a single audio data frame to the buffer. This is usually less efficient than [method push_buffer] in C# and compiled languages via GDExtension, but [method push_frame] may be [i]more[/i] efficient in GDScript. </description> </method> </methods> diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml index e2f1fdfae1..f5e752578e 100644 --- a/doc/classes/ColorPickerButton.xml +++ b/doc/classes/ColorPickerButton.xml @@ -6,7 +6,7 @@ <description> Encapsulates a [ColorPicker] making it accessible by pressing a button. Pressing the button will toggle the [ColorPicker] visibility. See also [BaseButton] which contains common properties and methods associated with this node. - [b]Note:[/b] By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set [member Control.rect_min_size] to a big enough value to give the button enough space. + [b]Note:[/b] By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set [member Control.minimum_size] to a big enough value to give the button enough space. </description> <tutorials> <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/133</link> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index cecc8f658d..97fd584ed1 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -100,7 +100,7 @@ <method name="_get_minimum_size" qualifiers="virtual const"> <return type="Vector2" /> <description> - Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to [member rect_min_size] for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately). + Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to [member minimum_size] for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately). If not overridden, defaults to [constant Vector2.ZERO]. [b]Note:[/b] This method will not be called when the script is attached to a [Control] node that already overrides its minimum size (e.g. [Label], [Button], [PanelContainer] etc.). It can only be used with most basic GUI nodes, like [Control], [Container], [Panel] etc. </description> @@ -137,7 +137,7 @@ * control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE]; * control is obstructed by another [Control] on top of it, which doesn't have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE]; * control's parent has [member mouse_filter] set to [constant MOUSE_FILTER_STOP] or has accepted the event; - * it happens outside the parent's rectangle and the parent has either [member rect_clip_content] enabled. + * it happens outside the parent's rectangle and the parent has either [member clip_contents] enabled. [b]Note:[/b] Event position is relative to the control origin. </description> </method> @@ -157,7 +157,7 @@ Virtual method to be implemented by the user. Returns a [Control] node that should be used as a tooltip instead of the default one. The [code]for_text[/code] includes the contents of the [member hint_tooltip] property. The returned node must be of type [Control] or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance). When [code]null[/code] or a non-Control node is returned, the default tooltip will be used instead. The returned node will be added as child to a [PopupPanel], so you should only provide the contents of that panel. That [PopupPanel] can be themed using [method Theme.set_stylebox] for the type [code]"TooltipPanel"[/code] (see [member hint_tooltip] for an example). - [b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its [member rect_min_size] to some non-zero value. + [b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its [member minimum_size] to some non-zero value. [b]Note:[/b] The node (and any relevant children) should be [member CanvasItem.visible] when returned, otherwise, the viewport that instantiates it will not be able to calculate its minimum size reliably. Example of usage with a custom-constructed node: [codeblocks] @@ -351,13 +351,13 @@ <method name="get_begin" qualifiers="const"> <return type="Vector2" /> <description> - Returns [member offset_left] and [member offset_top]. See also [member rect_position]. + Returns [member offset_left] and [member offset_top]. See also [member position]. </description> </method> <method name="get_combined_minimum_size" qualifiers="const"> <return type="Vector2" /> <description> - Returns combined minimum size from [member rect_min_size] and [method get_minimum_size]. + Returns combined minimum size from [member minimum_size] and [method get_minimum_size]. </description> </method> <method name="get_cursor_shape" qualifiers="const"> @@ -383,13 +383,13 @@ <method name="get_global_rect" qualifiers="const"> <return type="Rect2" /> <description> - Returns the position and size of the control relative to the top-left corner of the screen. See [member rect_position] and [member rect_size]. + Returns the position and size of the control relative to the top-left corner of the screen. See [member position] and [member size]. </description> </method> <method name="get_minimum_size" qualifiers="const"> <return type="Vector2" /> <description> - Returns the minimum size for this control. See [member rect_min_size]. + Returns the minimum size for this control. See [member minimum_size]. </description> </method> <method name="get_offset" qualifiers="const"> @@ -414,7 +414,7 @@ <method name="get_rect" qualifiers="const"> <return type="Rect2" /> <description> - Returns the position and size of the control relative to the top-left corner of the parent Control. See [member rect_position] and [member rect_size]. + Returns the position and size of the control relative to the top-left corner of the parent Control. See [member position] and [member size]. </description> </method> <method name="get_theme_color" qualifiers="const"> @@ -759,7 +759,7 @@ <return type="void" /> <argument index="0" name="position" type="Vector2" /> <description> - Sets [member offset_left] and [member offset_top] at the same time. Equivalent of changing [member rect_position]. + Sets [member offset_left] and [member offset_top] at the same time. Equivalent of changing [member position]. </description> </method> <method name="set_drag_forwarding"> @@ -840,7 +840,7 @@ # Use a control that is not in the tree var cpb = ColorPickerButton.new() cpb.color = color - cpb.rect_size = Vector2(50, 50) + cpb.size = Vector2(50, 50) set_drag_preview(cpb) return color [/gdscript] @@ -881,7 +881,7 @@ <argument index="0" name="position" type="Vector2" /> <argument index="1" name="keep_offsets" type="bool" default="false" /> <description> - Sets the [member rect_global_position] to given [code]position[/code]. + Sets the [member global_position] to given [code]position[/code]. If [code]keep_offsets[/code] is [code]true[/code], control's anchors will be updated instead of offsets. </description> </method> @@ -909,7 +909,7 @@ <argument index="0" name="position" type="Vector2" /> <argument index="1" name="keep_offsets" type="bool" default="false" /> <description> - Sets the [member rect_position] to given [code]position[/code]. + Sets the [member position] to given [code]position[/code]. If [code]keep_offsets[/code] is [code]true[/code], control's anchors will be updated instead of offsets. </description> </method> @@ -918,21 +918,21 @@ <argument index="0" name="size" type="Vector2" /> <argument index="1" name="keep_offsets" type="bool" default="false" /> <description> - Sets the size (see [member rect_size]). + Sets the size (see [member size]). If [code]keep_offsets[/code] is [code]true[/code], control's anchors will be updated instead of offsets. </description> </method> <method name="update_minimum_size"> <return type="void" /> <description> - Invalidates the size cache in this node and in parent nodes up to top level. Intended to be used with [method get_minimum_size] when the return value is changed. Setting [member rect_min_size] directly calls this method automatically. + Invalidates the size cache in this node and in parent nodes up to top level. Intended to be used with [method get_minimum_size] when the return value is changed. Setting [member minimum_size] directly calls this method automatically. </description> </method> <method name="warp_mouse"> <return type="void" /> <argument index="0" name="to_position" type="Vector2" /> <description> - Moves the mouse cursor to [code]to_position[/code], relative to [member rect_position] of this [Control]. + Moves the mouse cursor to [code]to_position[/code], relative to [member position] of this [Control]. </description> </method> </methods> @@ -953,6 +953,9 @@ Toggles if any text should automatically change to its translated version depending on the current locale. Note that this will not affect any internal nodes (e.g. the popup of a [MenuButton]). Also decides if the node's strings should be parsed for POT generation. </member> + <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" default="false"> + Enables whether rendering of [CanvasItem] based children should be clipped to this control's rectangle. If [code]true[/code], parts of a child which would be visibly outside of this control's rectangle will not be rendered and won't receive input. + </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode" default="0"> The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard signals. </member> @@ -976,6 +979,9 @@ Tells Godot which node it should give keyboard focus to if the user presses [kbd]Shift + Tab[/kbd] on a keyboard by default. You can change the key by editing the [code]ui_focus_prev[/code] input action. If this property is not set, Godot will select a "best guess" based on surrounding nodes in the scene tree. </member> + <member name="global_position" type="Vector2" setter="_set_global_position" getter="get_global_position"> + The node's global position, relative to the world (usually to the top-left corner of the window). + </member> <member name="grow_horizontal" type="int" setter="set_h_grow_direction" getter="get_h_grow_direction" enum="Control.GrowDirection" default="1"> Controls the direction on the horizontal axis in which the control should grow if its horizontal minimum size is changed to be greater than its current size, as the control always has to be at least the minimum size. </member> @@ -1007,6 +1013,9 @@ <member name="layout_direction" type="int" setter="set_layout_direction" getter="get_layout_direction" enum="Control.LayoutDirection" default="0"> Controls layout direction and text writing direction. Right-to-left layouts are necessary for certain languages (e.g. Arabic and Hebrew). </member> + <member name="minimum_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2(0, 0)"> + The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes. + </member> <member name="mouse_default_cursor_shape" type="int" setter="set_default_cursor_shape" getter="get_default_cursor_shape" enum="Control.CursorShape" default="0"> The default cursor shape for this control. Useful for Godot plugins and applications or games that use the system's mouse cursors. [b]Note:[/b] On Linux, shapes may vary depending on the cursor theme of the system. @@ -1030,30 +1039,21 @@ Distance between the node's top edge and its parent control, based on [member anchor_top]. Offsets are often controlled by one or multiple parent [Container] nodes, so you should not modify them manually if your node is a direct child of a [Container]. Offsets update automatically when you move or resize the node. </member> - <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" default="false"> - Enables whether rendering of [CanvasItem] based children should be clipped to this control's rectangle. If [code]true[/code], parts of a child which would be visibly outside of this control's rectangle will not be rendered and won't receive input. - </member> - <member name="rect_global_position" type="Vector2" setter="_set_global_position" getter="get_global_position"> - The node's global position, relative to the world (usually to the top-left corner of the window). - </member> - <member name="rect_min_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2(0, 0)"> - The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes. - </member> - <member name="rect_pivot_offset" type="Vector2" setter="set_pivot_offset" getter="get_pivot_offset" default="Vector2(0, 0)"> - By default, the node's pivot is its top-left corner. When you change its [member rect_scale], it will scale around this pivot. Set this property to [member rect_size] / 2 to center the pivot in the node's rectangle. + <member name="pivot_offset" type="Vector2" setter="set_pivot_offset" getter="get_pivot_offset" default="Vector2(0, 0)"> + By default, the node's pivot is its top-left corner. When you change its [member rotation] or [member scale], it will rotate or scale around this pivot. Set this property to [member size] / 2 to pivot around the Control's center. </member> - <member name="rect_position" type="Vector2" setter="_set_position" getter="get_position" default="Vector2(0, 0)"> - The node's position, relative to its parent. It corresponds to the rectangle's top-left corner. The property is not affected by [member rect_pivot_offset]. + <member name="position" type="Vector2" setter="_set_position" getter="get_position" default="Vector2(0, 0)"> + The node's position, relative to its parent. It corresponds to the rectangle's top-left corner. The property is not affected by [member pivot_offset]. </member> - <member name="rect_rotation" type="float" setter="set_rotation" getter="get_rotation" default="0.0"> - The node's rotation around its pivot, in radians. See [member rect_pivot_offset] to change the pivot's position. + <member name="rotation" type="float" setter="set_rotation" getter="get_rotation" default="0.0"> + The node's rotation around its pivot, in radians. See [member pivot_offset] to change the pivot's position. </member> - <member name="rect_scale" type="Vector2" setter="set_scale" getter="get_scale" default="Vector2(1, 1)"> - The node's scale, relative to its [member rect_size]. Change this property to scale the node around its [member rect_pivot_offset]. The Control's [member hint_tooltip] will also scale according to this value. + <member name="scale" type="Vector2" setter="set_scale" getter="get_scale" default="Vector2(1, 1)"> + The node's scale, relative to its [member size]. Change this property to scale the node around its [member pivot_offset]. The Control's [member hint_tooltip] will also scale according to this value. [b]Note:[/b] This property is mainly intended to be used for animation purposes. Text inside the Control will look pixelated or blurry when the Control is scaled. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the [url=$DOCS_URL/tutorials/viewports/multiple_resolutions.html]documentation[/url] instead of scaling Controls individually. - [b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]await get_tree().process_frame[/code] then set its [member rect_scale] property. + [b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]await get_tree().process_frame[/code] then set its [member scale] property. </member> - <member name="rect_size" type="Vector2" setter="_set_size" getter="get_size" default="Vector2(0, 0)"> + <member name="size" type="Vector2" setter="_set_size" getter="get_size" default="Vector2(0, 0)"> The size of the node's bounding rectangle, in pixels. [Container] nodes update this property automatically. </member> <member name="size_flags_horizontal" type="int" setter="set_h_size_flags" getter="get_h_size_flags" default="1"> @@ -1110,7 +1110,7 @@ If you want to check whether the mouse truly left the area, ignoring any top nodes, you can use code like this: [codeblock] func _on_mouse_exited(): - if not Rect2(Vector2(), rect_size).has_point(get_local_mouse_position()): + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): # Not hovering over area. [/codeblock] </description> @@ -1141,7 +1141,7 @@ The node can grab focus on mouse click or using the arrows and the Tab keys on the keyboard. Use with [member focus_mode]. </constant> <constant name="NOTIFICATION_RESIZED" value="40"> - Sent when the node changes size. Use [member rect_size] to get the new size. + Sent when the node changes size. Use [member size] to get the new size. </constant> <constant name="NOTIFICATION_MOUSE_ENTER" value="41"> Sent when the mouse pointer enters the node. diff --git a/doc/classes/EditorVCSInterface.xml b/doc/classes/EditorVCSInterface.xml index b78b027fa8..0215d81a4e 100644 --- a/doc/classes/EditorVCSInterface.xml +++ b/doc/classes/EditorVCSInterface.xml @@ -4,7 +4,7 @@ Version Control System (VCS) interface which reads and writes to the local VCS in use. </brief_description> <description> - Used by the editor to display VCS extracted information in the editor. The implementation of this API is included in VCS addons, which are essentially GDNative plugins that need to be put into the project folder. These VCS addons are scripts which are attached (on demand) to the object instance of [code]EditorVCSInterface[/code]. All the functions listed below, instead of performing the task themselves, they call the internally defined functions in the VCS addons to provide a plug-n-play experience. + Used by the editor to display VCS extracted information in the editor. The implementation of this API is included in VCS addons, which are essentially GDExtension plugins that need to be put into the project folder. These VCS addons are scripts which are attached (on demand) to the object instance of [code]EditorVCSInterface[/code]. All the functions listed below, instead of performing the task themselves, they call the internally defined functions in the VCS addons to provide a plug-n-play experience. </description> <tutorials> </tutorials> diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index 5525e7f1f3..19f2915087 100644 --- a/doc/classes/GraphEdit.xml +++ b/doc/classes/GraphEdit.xml @@ -198,6 +198,7 @@ </method> </methods> <members> + <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="connection_lines_antialiased" type="bool" setter="set_connection_lines_antialiased" getter="is_connection_lines_antialiased" default="true"> If [code]true[/code], the lines between nodes will use antialiasing. </member> @@ -217,7 +218,6 @@ <member name="panning_scheme" type="int" setter="set_panning_scheme" getter="get_panning_scheme" enum="GraphEdit.PanningScheme" default="0"> Defines the control scheme for panning with mouse wheel. </member> - <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="right_disconnects" type="bool" setter="set_right_disconnects" getter="is_right_disconnects_enabled" default="false"> If [code]true[/code], enables disconnection of existing connections in the GraphEdit by dragging the right end. </member> diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index 8b564c01c9..48fa009300 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -366,6 +366,7 @@ <member name="auto_height" type="bool" setter="set_auto_height" getter="has_auto_height" default="false"> If [code]true[/code], the control will automatically resize the height to fit its content. </member> + <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="fixed_column_width" type="int" setter="set_fixed_column_width" getter="get_fixed_column_width" default="0"> The width all columns will be adjusted to. A value of zero disables the adjustment, each item will have a width equal to the width of its content and the columns will have an uneven width. @@ -393,7 +394,6 @@ Maximum lines of text allowed in each item. Space will be reserved even when there is not enough lines of text to display. [b]Note:[/b] This property takes effect only when [member icon_mode] is [constant ICON_MODE_TOP]. To make the text wrap, [member fixed_column_width] should be greater than zero. </member> - <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="same_column_width" type="bool" setter="set_same_column_width" getter="is_same_column_width" default="false"> Whether all columns will have the same width. If [code]true[/code], the width is equal to the largest column width of all columns. diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml index f480071d32..d5e134fc60 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -412,6 +412,7 @@ <member name="bbcode_enabled" type="bool" setter="set_use_bbcode" getter="is_using_bbcode" default="false"> If [code]true[/code], the label uses BBCode formatting. </member> + <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="custom_effects" type="Array" setter="set_effects" getter="get_effects" default="[]"> The currently installed custom effects. This is an array of [RichTextEffect]s. To add a custom effect, it's more convenient to use [method install_effect]. @@ -436,7 +437,6 @@ The range of characters to display, as a [float] between 0.0 and 1.0. When assigned an out of range value, it's the same as assigning 1.0. [b]Note:[/b] Setting this property updates [member visible_characters] based on current [method get_total_character_count]. </member> - <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="scroll_active" type="bool" setter="set_scroll_active" getter="is_scroll_active" default="true"> If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/code] does not block scrolling completely. See [method scroll_to_line]. </member> diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml index ea1d972d14..95255ed79f 100644 --- a/doc/classes/ScrollContainer.xml +++ b/doc/classes/ScrollContainer.xml @@ -5,7 +5,7 @@ </brief_description> <description> A ScrollContainer node meant to contain a [Control] child. - ScrollContainers will automatically create a scrollbar child ([HScrollBar], [VScrollBar], or both) when needed and will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the [member Control.rect_min_size] of the Control relative to the ScrollContainer. + ScrollContainers will automatically create a scrollbar child ([HScrollBar], [VScrollBar], or both) when needed and will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the [member Control.minimum_size] of the Control relative to the ScrollContainer. Works great with a [Panel] control. You can set [code]EXPAND[/code] on the children's size flags, so they will upscale to the ScrollContainer's size if it's larger (scroll is invisible for the chosen dimension). </description> <tutorials> @@ -40,13 +40,13 @@ </method> </methods> <members> + <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="follow_focus" type="bool" setter="set_follow_focus" getter="is_following_focus" default="false"> If [code]true[/code], the ScrollContainer will automatically scroll to focused children (including indirect children) to make sure they are fully visible. </member> <member name="horizontal_scroll_mode" type="int" setter="set_horizontal_scroll_mode" getter="get_horizontal_scroll_mode" enum="ScrollContainer.ScrollMode" default="1"> Controls whether horizontal scrollbar can be used and when it should be visible. See [enum ScrollMode] for options. </member> - <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="scroll_deadzone" type="int" setter="set_deadzone" getter="get_deadzone" default="0"> </member> <member name="scroll_horizontal" type="int" setter="set_h_scroll" getter="get_h_scroll" default="0"> diff --git a/doc/classes/SubViewportContainer.xml b/doc/classes/SubViewportContainer.xml index c8babb8f43..77aa7e3ff4 100644 --- a/doc/classes/SubViewportContainer.xml +++ b/doc/classes/SubViewportContainer.xml @@ -5,7 +5,7 @@ </brief_description> <description> A [Container] node that holds a [SubViewport]. It uses the [SubViewport]'s size as minimum size, unless [member stretch] is enabled. - [b]Note:[/b] Changing a SubViewportContainer's [member Control.rect_scale] will cause its contents to appear distorted. To change its visual size without causing distortion, adjust the node's margins instead (if it's not already in a container). + [b]Note:[/b] Changing a SubViewportContainer's [member Control.scale] will cause its contents to appear distorted. To change its visual size without causing distortion, adjust the node's margins instead (if it's not already in a container). [b]Note:[/b] The SubViewportContainer forwards mouse-enter and mouse-exit notifications to its sub-viewports. </description> <tutorials> diff --git a/doc/classes/TabBar.xml b/doc/classes/TabBar.xml index 6ddcc2044d..698de783c0 100644 --- a/doc/classes/TabBar.xml +++ b/doc/classes/TabBar.xml @@ -211,6 +211,9 @@ <member name="drag_to_rearrange_enabled" type="bool" setter="set_drag_to_rearrange_enabled" getter="get_drag_to_rearrange_enabled" default="false"> If [code]true[/code], tabs can be rearranged with mouse drag. </member> + <member name="max_tab_width" type="int" setter="set_max_tab_width" getter="get_max_tab_width" default="0"> + Sets the maximum width which all tabs should be limited to. Unlimited if set to [code]0[/code]. + </member> <member name="scroll_to_selected" type="bool" setter="set_scroll_to_selected" getter="get_scroll_to_selected" default="true"> If [code]true[/code], the tab offset will be changed to keep the the currently selected tab visible. </member> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index 25e6f553ca..b8c39bee49 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -323,6 +323,7 @@ <member name="allow_rmb_select" type="bool" setter="set_allow_rmb_select" getter="get_allow_rmb_select" default="false"> If [code]true[/code], a right mouse button click can select items. </member> + <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="column_titles_visible" type="bool" setter="set_column_titles_visible" getter="are_column_titles_visible" default="false"> If [code]true[/code], column titles are visible. </member> @@ -340,7 +341,6 @@ <member name="hide_root" type="bool" setter="set_hide_root" getter="is_root_hidden" default="false"> If [code]true[/code], the tree's root is hidden. </member> - <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" /> <member name="scroll_horizontal_enabled" type="bool" setter="set_h_scroll_enabled" getter="is_h_scroll_enabled" default="true"> If [code]true[/code], enables horizontal scrolling. </member> diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml index f2104d77ab..0d6fcd0ef5 100644 --- a/doc/classes/Variant.xml +++ b/doc/classes/Variant.xml @@ -25,7 +25,6 @@ - GDScript automatically wrap values in them. It keeps all data in plain Variants by default and then optionally enforces custom static typing rules on variable types. - VisualScript tracks properties inside Variants as well, but it also uses static typing. The GUI interface enforces that properties have a particular type that doesn't change over time. - C# is statically typed, but uses the Mono [code]object[/code] type in place of Godot's Variant class when it needs to represent a dynamic value. [code]object[/code] is the Mono runtime's equivalent of the same concept. - - The statically-typed language NativeScript C++ does not define a built-in Variant-like class. Godot's GDNative bindings provide their own godot::Variant class for users; Any point at which the C++ code starts interacting with the Godot runtime is a place where you might have to start wrapping data inside Variant objects. The global [method @GlobalScope.typeof] function returns the enumerated value of the Variant type stored in the current variable (see [enum Variant.Type]). [codeblocks] [gdscript] diff --git a/doc/classes/VideoStreamPlayer.xml b/doc/classes/VideoStreamPlayer.xml index 033e1ecd29..092a754a39 100644 --- a/doc/classes/VideoStreamPlayer.xml +++ b/doc/classes/VideoStreamPlayer.xml @@ -5,7 +5,7 @@ </brief_description> <description> Control node for playing video streams using [VideoStream] resources. - Supported video formats are [url=https://www.theora.org/]Ogg Theora[/url] ([code].ogv[/code], [VideoStreamTheora]) and any format exposed via a GDNative plugin using [VideoStreamGDNative]. + Supported video formats are [url=https://www.theora.org/]Ogg Theora[/url] ([code].ogv[/code], [VideoStreamTheora]) and any format exposed via a GDExtension plugin. [b]Note:[/b] Due to a bug, VideoStreamPlayer does not support localization remapping yet. [b]Warning:[/b] On HTML5, video playback [i]will[/i] perform poorly due to missing architecture-specific assembly optimizations. </description> @@ -69,7 +69,7 @@ </member> <member name="stream_position" type="float" setter="set_stream_position" getter="get_stream_position"> The current position of the stream, in seconds. - [b]Note:[/b] Changing this value won't have any effect as seeking is not implemented yet, except in video formats implemented by a GDNative add-on. + [b]Note:[/b] Changing this value won't have any effect as seeking is not implemented yet, except in video formats implemented by a GDExtension add-on. </member> <member name="volume" type="float" setter="set_volume" getter="get_volume"> Audio volume as a linear value. diff --git a/doc/classes/XRInterface.xml b/doc/classes/XRInterface.xml index 623e4f5fbc..0f4159cbbf 100644 --- a/doc/classes/XRInterface.xml +++ b/doc/classes/XRInterface.xml @@ -4,7 +4,7 @@ Base class for an XR interface implementation. </brief_description> <description> - This class needs to be implemented to make an AR or VR platform available to Godot and these should be implemented as C++ modules or GDNative modules (note that for GDNative the subclass XRScriptInterface should be used). Part of the interface is exposed to GDScript so you can detect, enable and configure an AR or VR platform. + This class needs to be implemented to make an AR or VR platform available to Godot and these should be implemented as C++ modules or GDExtension modules. Part of the interface is exposed to GDScript so you can detect, enable and configure an AR or VR platform. Interfaces should be written in such a way that simply enabling them will give us a working setup. You can query the available interfaces through [XRServer]. </description> <tutorials> diff --git a/doc/translations/ar.po b/doc/translations/ar.po index dc685b6e2b..eb473b9275 100644 --- a/doc/translations/ar.po +++ b/doc/translations/ar.po @@ -15,12 +15,14 @@ # يزن ØÙ…زه <yznhamzeh@gmail.com>, 2021. # HASSAN GAMER - ØØ³Ù† جيمر <gamerhassan55@gmail.com>, 2022. # Spirit <i8bou3@gmail.com>, 2022. +# Mr.k <mineshtine28546271@gmail.com>, 2022. +# Hamza Kalash <mogo.gogo170@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-01-10 13:18+0000\n" -"Last-Translator: Spirit <i8bou3@gmail.com>\n" +"PO-Revision-Date: 2022-02-28 13:54+0000\n" +"Last-Translator: Mr.k <mineshtine28546271@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/ar/>\n" "Language: ar\n" @@ -29,7 +31,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.10.1\n" +"X-Generator: Weblate 4.11.1-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -41,11 +43,11 @@ msgstr "Ø´Ø±ÙˆØØ§Øª" #: doc/tools/make_rst.py msgid "Properties" -msgstr "خاصيات" +msgstr "خصائص" #: doc/tools/make_rst.py msgid "Methods" -msgstr "طرق" +msgstr "دوال" #: doc/tools/make_rst.py msgid "Theme Properties" @@ -77,15 +79,16 @@ msgstr "أوصا٠خاصية الثمات" #: doc/tools/make_rst.py msgid "Inherits:" -msgstr "" +msgstr "يرث:" #: doc/tools/make_rst.py +#, fuzzy msgid "Inherited By:" -msgstr "" +msgstr "موروث من Ù‚ÙØ¨ÙŽÙ„:" #: doc/tools/make_rst.py msgid "(overrides %s)" -msgstr "" +msgstr "(يتجاوز s%)" #: doc/tools/make_rst.py msgid "Default" @@ -101,7 +104,7 @@ msgstr "قيمة" #: doc/tools/make_rst.py msgid "Getter" -msgstr "" +msgstr "جالب" #: doc/tools/make_rst.py msgid "" @@ -136,8 +139,9 @@ msgid "" msgstr "" #: modules/gdscript/doc_classes/@GDScript.xml +#, fuzzy msgid "Built-in GDScript functions." -msgstr "دوال GDScript المدمجة" +msgstr "دوال GDScript المدمجة." #: modules/gdscript/doc_classes/@GDScript.xml msgid "" @@ -173,6 +177,7 @@ msgstr "" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml +#, fuzzy msgid "" "Returns a color according to the standardized [code]name[/code] with " "[code]alpha[/code] ranging from 0 to 1.\n" @@ -181,14 +186,14 @@ msgid "" "[/codeblock]\n" "Supported color names are the same as the constants defined in [Color]." msgstr "" -"لعرض لون يتواÙÙ‚ مع [code]name[/ code] Ùˆ [code]alpha[/ code] ØªØªØ±Ø§ÙˆØ Ø¨ÙŠÙ† 0 " -"Ùˆ1.\n" +"لعرض لون يتواÙÙ‚ مع [code]name[/code] Ùˆ [code]alpha[/code]ØªØªØ±Ø§ÙˆØ Ø¨ÙŠÙ† 0 Ùˆ1.\n" "[codeblock]\n" "(red = ColorN(\"red\", 1\n" -"[codeblock/]\n" +"[/codeblock]\n" "أسماء الألوان المدعومة هي Ù†ÙØ³ الثوابت Ø§Ù„Ù…Ø¹Ø±Ù‘ÙØ© ÙÙŠ [Color]." #: modules/gdscript/doc_classes/@GDScript.xml +#, fuzzy msgid "" "Returns the absolute value of parameter [code]s[/code] (i.e. positive " "value).\n" @@ -196,11 +201,10 @@ msgid "" "a = abs(-1) # a is 1\n" "[/codeblock]" msgstr "" -"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/ code] (القيمة المطلقة أي القيمة " +"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/code] (القيمة المطلقة أي القيمة " "الموجبة).\n" "[codeblock]\n" -"#القيمة المطلقة لـ(1-) هي 1ØŒ وبالتالي ÙØ¥Ù† قيمة a ستكون 1\n" -"(a = abs(-1\n" +"(a = abs(-1 #القيمة المطلقة لـ(1-) هي 1ØŒ وبالتالي ÙØ¥Ù† قيمة a ستكون 1\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml @@ -215,15 +219,16 @@ msgid "" "c = acos(0.866025)\n" "[/codeblock]" msgstr "" -"ØªÙØ±Ø¬Ø¹ معكوس دالة الكوساين لـ [code]s[/ code] بالراديان. ØªÙØ³ØªØ®Ø¯Ù… Ù„Ù„ØØµÙˆÙ„ على " -"زاوية الكوساين [code]s[/code].\n" +"تقوم هذه الدالة بارجاع arc cos للقيمة [code]s[/code] بالراديانز. يمكنك " +"استعمالها Ù„Ù„ØØµÙˆÙ„ علي قيمة الزاوية cos([code]s[/code]). قيمة [code]s[/code] " +"لابد ان تكون Ù…ØØµÙˆØ±Ø© بين [code]-1.00[/code] Ùˆ [code]1.00[/code]. او ستقوم " +"الدالة بارجاع [constant NAN] \n" "[codeblock]\n" -"# c تساوي 0.523599 أو 30 درجة إذا تم تØÙˆÙŠÙ„ها باستخدام (rad2deg(s\n" -"(c = acos(0.866025\n" +"# c هي 0.523599 أو 30 درجة إذا ØÙولتْ بأستخدام rad2deg(s)\n" +"c = acos(0.866025)\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "" "Returns the arc sine of [code]s[/code] in radians. Use to get the angle of " "sine [code]s[/code]. [code]s[/code] must be between [code]-1.0[/code] and " @@ -234,11 +239,13 @@ msgid "" "s = asin(0.5)\n" "[/codeblock]" msgstr "" -"ØªÙØ±Ø¬Ø¹ معكوس دالة الكوساين لـ [code]s[/ code] بالراديان. ØªÙØ³ØªØ®Ø¯Ù… Ù„Ù„ØØµÙˆÙ„ على " -"زاوية الكوساين [code]s[/code].\n" +"ØªÙØ±Ø¬Ø¹ معكوس دالة الكوساين لـ [code]s[/code] بالراديان. ØªÙØ³ØªØ®Ø¯Ù… Ù„Ù„ØØµÙˆÙ„ على " +"زاوية الكوساين [code]s[/code]. يجب أن تكون قيمة [code]s[/code] بين " +"[code]-1.0[/code] Ùˆ [code]1.0[/code] (شاملةً اياها), وغيير ذلك, [الدالة asin] " +"سو٠ترجع [قيمة الثابت NAN].\n" "[codeblock]\n" -"# c تساوي 0.523599 أو 30 درجة إذا تم تØÙˆÙŠÙ„ها باستخدام (rad2deg(s\n" -"(c = acos(0.866025\n" +"# s تساوي 0.523599 أو 30 درجة إذا تم تØÙˆÙŠÙ„ها باستخدام (rad2deg(s\n" +"(s = acos(0.5\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml @@ -292,6 +299,7 @@ msgid "" msgstr "" #: modules/gdscript/doc_classes/@GDScript.xml +#, fuzzy msgid "" "Decodes a byte array back to a value. When [code]allow_objects[/code] is " "[code]true[/code] decoding objects is allowed.\n" @@ -300,8 +308,8 @@ msgid "" "avoid potential security threats (remote code execution)." msgstr "" "يقوم بÙÙƒ تشÙير مصÙÙˆÙØ© بايت وإعادتها إلى قيمة. عندما يكون [code] " -"allow_objects [/ code] هو [code] صØÙŠØ [/ code] ØŒ Ø§Ø³Ù…Ø Ø¨ÙÙƒ تشÙير الكائنات.\n" -"[b] ØªØØ°ÙŠØ±: [/ b] يتم تنÙيذه إذا كان الكائن الذي تم إلغاء تسلسله ÙŠØØªÙˆÙŠ Ø¹Ù„Ù‰ " +"allow_objects [/code] هو [code] صØÙŠØ [/code] ØŒ Ø§Ø³Ù…Ø Ø¨ÙÙƒ تشÙير الكائنات.\n" +"[b] ØªØØ°ÙŠØ±: [/b] يتم تنÙيذه إذا كان الكائن الذي تم إلغاء تسلسله ÙŠØØªÙˆÙŠ Ø¹Ù„Ù‰ " "تعليمات برمجية. إذا جاء الكائن المتسلسل من مصدر غير موثوق به ØŒ Ùلا تستخدم " "هذا الخيار لمنع مخاطر أمنية Ù…ØØªÙ…لة (تنÙيذ التعليمات البرمجية عن Ø¨ÙØ¹Ø¯)." @@ -372,7 +380,7 @@ msgid "" "a = cos(PI) # a is -1.0\n" "[/codeblock]" msgstr "" -"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/ code] (القيمة المطلقة أي القيمة " +"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/code] (القيمة المطلقة أي القيمة " "الموجبة).\n" "[codeblock]\n" "#القيمة المطلقة لـ(1-) هي 1ØŒ وبالتالي ÙØ¥Ù† قيمة a ستكون 1\n" @@ -387,11 +395,10 @@ msgid "" "print(cosh(1)) # Prints 1.543081\n" "[/codeblock]" msgstr "" -"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/ code] (القيمة المطلقة أي القيمة " +"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/code] (القيمة المطلقة أي القيمة " "الموجبة).\n" "[codeblock]\n" -"#القيمة المطلقة لـ(1-) هي 1ØŒ وبالتالي ÙØ¥Ù† قيمة a ستكون 1\n" -"(a = abs(-1\n" +"#القيمة المطلقة لـ(1-) هي 1ØŒ وبالتالي ÙØ¥Ù† قيمة a ستكون 1 (a = abs(-1\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml @@ -881,11 +888,10 @@ msgid "" "pow(2, 5) # Returns 32.0\n" "[/codeblock]" msgstr "" -"ØªÙØ±Ø¬Ø¹ معكوس دالة الكوساين لـ [code]s[/ code] بالراديان. ØªÙØ³ØªØ®Ø¯Ù… Ù„Ù„ØØµÙˆÙ„ على " +"ØªÙØ±Ø¬Ø¹ معكوس دالة الكوساين لـ [code]s[/code] بالراديان. ØªÙØ³ØªØ®Ø¯Ù… Ù„Ù„ØØµÙˆÙ„ على " "زاوية الكوساين [code]s[/code].\n" "[codeblock]\n" "# c تساوي 0.523599 أو 30 درجة إذا تم تØÙˆÙŠÙ„ها باستخدام (rad2deg(s\n" -"(c = acos(0.866025\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml @@ -1253,7 +1259,7 @@ msgid "" "b = tanh(a) # b is 0.6\n" "[/codeblock]" msgstr "" -"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/ code] (القيمة المطلقة أي القيمة " +"لعرض القيمة المطلقة Ù„Ù„Ù…ÙØ¹Ø§Ù…Ù„ [code]s[/code] (القيمة المطلقة أي القيمة " "الموجبة).\n" "[codeblock]\n" "#القيمة المطلقة لـ(1-) هي 1ØŒ وبالتالي ÙØ¥Ù† قيمة a ستكون 1\n" @@ -3414,6 +3420,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4925,8 +4940,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "ÙŠÙØ±Ø¬Ø¹ قيمة ظل الزاوية للمَعلم." #: doc/classes/AnimationNode.xml msgid "" @@ -4950,7 +4966,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4959,7 +4975,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -5030,7 +5046,7 @@ msgstr "" #: doc/classes/AnimationNodeTimeScale.xml #: doc/classes/AnimationNodeTransition.xml msgid "AnimationTree" -msgstr "" +msgstr "شجرة Ø§Ù„ØªØØ±ÙŠÙƒ" #: doc/classes/AnimationNodeAdd3.xml doc/classes/AnimationNodeAnimation.xml #: doc/classes/AnimationNodeBlend2.xml @@ -9571,26 +9587,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9748,6 +9748,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12211,11 +12221,10 @@ msgid "Returns an array of [CameraFeed]s." msgstr "" #: doc/classes/CameraServer.xml -#, fuzzy msgid "" "Returns the [CameraFeed] corresponding to the camera with the given " "[code]index[/code]." -msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم." +msgstr "ÙŠÙØ±Ø¬Ø¹ [CameraFeed] المطابقة للكاميرا مع المؤشر [code]index[/code]." #: doc/classes/CameraServer.xml msgid "Returns the number of [CameraFeed]s registered." @@ -12829,6 +12838,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15665,8 +15686,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16423,6 +16445,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23102,7 +23143,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25206,8 +25262,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25477,7 +25534,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32018,7 +32080,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32398,8 +32465,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34240,6 +34311,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34253,6 +34333,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34295,6 +34387,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34346,6 +34448,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36668,6 +36782,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36838,6 +36971,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36938,6 +37086,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37188,6 +37344,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38175,8 +38337,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38969,7 +39131,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -40080,9 +40254,10 @@ msgid "" "Do not use this option if the serialized object comes from untrusted sources " "to avoid potential security threats such as remote code execution." msgstr "" -"يقوم بÙÙƒ تشÙير مصÙÙˆÙØ© بايت وإعادتها إلى قيمة. عندما يكون [code] " -"allow_objects [/ code] هو [code] صØÙŠØ [/ code] ØŒ Ø§Ø³Ù…Ø Ø¨ÙÙƒ تشÙير الكائنات.\n" -"[b] ØªØØ°ÙŠØ±: [/ b] يتم تنÙيذه إذا كان الكائن الذي تم إلغاء تسلسله ÙŠØØªÙˆÙŠ Ø¹Ù„Ù‰ " +"يقوم بÙÙƒ تشÙير مصÙÙˆÙØ© بايت وإعادتها إلى قيمة.\n" +"عندما يكون [code] allow_objects [/code] هو [code] صØÙŠØ[/code]. Ø§Ø³Ù…Ø Ø¨ÙÙƒ " +"تشÙير الكائنات.\n" +"[b] ØªØØ°ÙŠØ±: [/b] يتم تنÙيذه إذا كان الكائن الذي تم إلغاء تسلسله ÙŠØØªÙˆÙŠ Ø¹Ù„Ù‰ " "تعليمات برمجية. إذا جاء الكائن المتسلسل من مصدر غير موثوق به ØŒ Ùلا تستخدم " "هذا الخيار لمنع مخاطر أمنية Ù…ØØªÙ…لة (تنÙيذ التعليمات البرمجية عن Ø¨ÙØ¹Ø¯)." @@ -46834,6 +47009,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46844,8 +47030,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47358,14 +47546,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47494,8 +47687,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51433,6 +51626,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52686,6 +52886,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54521,7 +54733,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54535,7 +54747,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55210,7 +55422,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55473,7 +55690,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55496,11 +55722,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55549,14 +55788,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55726,8 +55967,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57221,6 +57470,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "ÙŠÙØ±Ø¬Ø¹ جيب التمام \"cosine \" لقيمة المَعلم." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "ÙŠÙØ±Ø¬Ø¹ القيمة المعاكسة للمَعلم." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "ÙŠÙØ±Ø¬Ø¹ باقي قسمة كل من Ø§Ù„Ù…ÙØªØ¬Ù‡ÙŠÙ† (الشعاعين)." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58259,6 +58518,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58399,6 +58664,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "ÙŠÙØ±Ø¬Ø¹ باقي قسمة كل من Ø§Ù„Ù…ÙØªØ¬Ù‡ÙŠÙ† (الشعاعين)." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58447,6 +58724,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58542,6 +58825,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60718,7 +61015,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60760,10 +61057,9 @@ msgid "" msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/ca.po b/doc/translations/ca.po index 2dbbe58fae..6c448598c1 100644 --- a/doc/translations/ca.po +++ b/doc/translations/ca.po @@ -3442,6 +3442,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4952,7 +4961,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4977,7 +4986,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4986,7 +4995,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9597,26 +9606,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9774,6 +9767,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12849,6 +12852,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15685,8 +15700,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16437,6 +16453,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23111,7 +23146,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25213,8 +25263,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25484,7 +25535,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32019,7 +32075,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32399,8 +32460,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34240,6 +34305,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34253,6 +34327,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34295,6 +34381,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34346,6 +34442,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36643,6 +36751,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36813,6 +36940,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36913,6 +37055,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37163,6 +37313,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38150,8 +38306,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38941,7 +39097,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46783,6 +46951,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46793,8 +46972,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47307,14 +47488,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47443,8 +47629,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51381,6 +51567,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52634,6 +52827,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54469,7 +54674,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54483,7 +54688,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55156,7 +55361,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55419,7 +55629,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55442,11 +55661,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55495,14 +55727,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55672,8 +55906,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57162,6 +57404,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58199,6 +58449,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58339,6 +58595,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58387,6 +58654,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58482,6 +58755,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60655,7 +60942,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60696,9 +60983,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/classes.pot b/doc/translations/classes.pot index 84d943d138..aab649c5ed 100644 --- a/doc/translations/classes.pot +++ b/doc/translations/classes.pot @@ -3322,6 +3322,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4832,7 +4841,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4857,7 +4866,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4866,7 +4875,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9477,26 +9486,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9654,6 +9647,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12729,6 +12732,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15565,8 +15580,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16317,6 +16333,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22988,7 +23023,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25090,8 +25140,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25361,7 +25412,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31896,7 +31952,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32276,8 +32337,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34117,6 +34182,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34130,6 +34204,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34172,6 +34258,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34223,6 +34319,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36520,6 +36628,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36690,6 +36817,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36790,6 +36932,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37040,6 +37190,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38027,8 +38183,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38818,7 +38974,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46660,6 +46828,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46670,8 +46849,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47184,14 +47365,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47320,8 +47506,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51258,6 +51444,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52511,6 +52704,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54346,7 +54551,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54360,7 +54565,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55033,7 +55238,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55296,7 +55506,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55319,11 +55538,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55372,14 +55604,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55549,8 +55783,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57039,6 +57281,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58076,6 +58326,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58216,6 +58472,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58264,6 +58531,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58359,6 +58632,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60532,7 +60819,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60573,9 +60860,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/cs.po b/doc/translations/cs.po index f6f8046382..b1ce4b9d20 100644 --- a/doc/translations/cs.po +++ b/doc/translations/cs.po @@ -4,7 +4,7 @@ # This file is distributed under the same license as the Godot source code. # # Ondrej Pavelka <ondrej.pavelka@outlook.com>, 2020. -# ZbynÄ›k <zbynek.fiala@gmail.com>, 2020, 2021. +# ZbynÄ›k <zbynek.fiala@gmail.com>, 2020, 2021, 2022. # Daniel KřÞ <Daniel.kriz@protonmail.com>, 2020. # VojtÄ›ch Å amla <auzkok@seznam.cz>, 2020, 2021. # Pierre Stempin <pierre.stempin@gmail.com>, 2020. @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2021-11-20 22:06+0000\n" +"PO-Revision-Date: 2022-03-08 06:54+0000\n" "Last-Translator: ZbynÄ›k <zbynek.fiala@gmail.com>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot-" "class-reference/cs/>\n" @@ -26,7 +26,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.9.1\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -3823,6 +3823,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5334,8 +5343,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Vrátà tangens parametru." #: doc/classes/AnimationNode.xml msgid "" @@ -5359,7 +5369,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5368,7 +5378,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9986,26 +9996,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10163,6 +10157,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13250,6 +13254,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16092,8 +16108,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16874,6 +16891,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23560,7 +23596,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25664,8 +25715,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25935,7 +25987,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32482,7 +32539,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32862,8 +32924,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34705,6 +34771,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34718,6 +34793,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34760,6 +34847,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34811,6 +34908,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36700,7 +36809,7 @@ msgstr "" #: doc/classes/Node.xml msgid "Nodes and Scenes" -msgstr "" +msgstr "Uzly a scény" #: doc/classes/Node.xml msgid "All Demos" @@ -37137,6 +37246,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37307,6 +37435,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37407,6 +37550,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37657,6 +37808,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38647,8 +38804,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39442,7 +39599,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47317,6 +47486,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47327,8 +47507,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47841,14 +48023,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47977,8 +48164,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51924,6 +52111,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53178,6 +53372,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -55014,7 +55220,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55028,7 +55234,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55709,7 +55915,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55972,7 +56183,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55995,11 +56215,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56048,14 +56281,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56225,8 +56460,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57722,6 +57965,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Vrátà tangens parametru." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Vrátà opaÄnou hodnotu parametru." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Vrátà zbytek po dÄ›lenà dvou vektorů." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58774,6 +59027,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58916,6 +59175,18 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Vracà [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula." + +#: doc/classes/Theme.xml #, fuzzy msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " @@ -58971,6 +59242,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Vracà [code]true[/code] pokud si jsou [code]a[/code] a [code]b[/code] " +"pÅ™iblÞnÄ› rovny." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -59067,6 +59347,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61246,7 +61540,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61290,10 +61584,9 @@ msgstr "" "pÅ™iblÞnÄ› rovny." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Vracà [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/de.po b/doc/translations/de.po index 0e62657c08..052dac7d28 100644 --- a/doc/translations/de.po +++ b/doc/translations/de.po @@ -41,12 +41,14 @@ # Rémi Verschelde <remi@godotengine.org>, 2021. # Antonio Noack <corperateraider@gmail.com>, 2022. # ‎ <artism90@googlemail.com>, 2022. +# Coxcopi70f00b67b61542fe <hn_vogel@gmx.net>, 2022. +# Leon Marz <main@lmarz.org>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-02-16 09:01+0000\n" -"Last-Translator: ‎ <artism90@googlemail.com>\n" +"PO-Revision-Date: 2022-03-02 18:39+0000\n" +"Last-Translator: Leon Marz <main@lmarz.org>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/de/>\n" "Language: de\n" @@ -54,7 +56,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -82,7 +84,7 @@ msgstr "Signale" #: doc/tools/make_rst.py msgid "Enumerations" -msgstr "Aufzählungstypen" +msgstr "Aufzählungen" #: doc/tools/make_rst.py msgid "Constants" @@ -3691,6 +3693,11 @@ msgid "" "- Linux: Up to 80 buttons.\n" "- Windows and macOS: Up to 128 buttons." msgstr "" +"Die maximale Anzahl an Spielcontroller-Tasten, die unterstützt werden. Das " +"eigentliche Limit kann bei bestimmten Plattformen geringer sein:\n" +"- Android: Bis zu 36 Tasten.\n" +"- Linux: Bis zu 80 Tasten.\n" +"- Windows und macOS: Bis zu 128 Tasten." #: doc/classes/@GlobalScope.xml msgid "DualShock circle button." @@ -3751,7 +3758,7 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "Trigger on a VR controller." -msgstr "" +msgstr "Trigger-Taste eines VR Controllers." #: doc/classes/@GlobalScope.xml msgid "" @@ -3848,7 +3855,7 @@ msgstr "Gamecontroller linke Triggerachse." #: doc/classes/@GlobalScope.xml msgid "Gamepad left stick click." -msgstr "" +msgstr "Klick auf dem linken Stick des Gamepads." #: doc/classes/@GlobalScope.xml #, fuzzy @@ -3862,11 +3869,11 @@ msgstr "Gamecontroller rechte Trigger-Achse." #: doc/classes/@GlobalScope.xml msgid "Gamepad right stick click." -msgstr "" +msgstr "Klick auf dem rechten Stick des Gamepads." #: doc/classes/@GlobalScope.xml msgid "Gamepad left stick horizontal axis." -msgstr "" +msgstr "Horizontale Achse auf dem linken Stick des Gamepads." #: doc/classes/@GlobalScope.xml #, fuzzy @@ -3875,7 +3882,7 @@ msgstr "Game Controller linker Joystick x-Achse." #: doc/classes/@GlobalScope.xml msgid "Gamepad right stick horizontal axis." -msgstr "" +msgstr "Horizontale Achse auf dem rechten Stick des Gamepads." #: doc/classes/@GlobalScope.xml #, fuzzy @@ -3884,11 +3891,11 @@ msgstr "Game Controller rechter Joystick x-Achse." #: doc/classes/@GlobalScope.xml msgid "Generic gamepad axis 4." -msgstr "" +msgstr "Achse 4 eines gewöhnlichen Gamepads." #: doc/classes/@GlobalScope.xml msgid "Generic gamepad axis 5." -msgstr "" +msgstr "Achse 5 eines gewöhnlichen Gamepads." #: doc/classes/@GlobalScope.xml #, fuzzy @@ -3902,11 +3909,11 @@ msgstr "Gamecontroller rechte Trigger-Achse." #: doc/classes/@GlobalScope.xml msgid "Generic gamepad axis 8." -msgstr "" +msgstr "Achse 8 eines gewöhnlichen Gamepads." #: doc/classes/@GlobalScope.xml msgid "Generic gamepad axis 9." -msgstr "" +msgstr "Achse 9 eines gewöhnlichen Gamepads." #: doc/classes/@GlobalScope.xml msgid "Represents the maximum number of joystick axes supported." @@ -3914,11 +3921,11 @@ msgstr "Stellt die maximale Anzahl der unterstützten Joystick-Achsen dar." #: doc/classes/@GlobalScope.xml msgid "Gamepad left analog trigger." -msgstr "" +msgstr "Linker analoger Trigger des Gamepads." #: doc/classes/@GlobalScope.xml msgid "Gamepad right analog trigger." -msgstr "" +msgstr "Rechter analoger Trigger des Gamepads." #: doc/classes/@GlobalScope.xml #, fuzzy @@ -4330,6 +4337,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4822,12 +4838,12 @@ msgstr "" #: doc/classes/AABB.xml doc/classes/Rect2.xml doc/classes/Vector2.xml #: doc/classes/Vector3.xml msgid "Vector math" -msgstr "" +msgstr "Vektor-Mathematik" #: doc/classes/AABB.xml doc/classes/Rect2.xml doc/classes/Vector2.xml #: doc/classes/Vector3.xml msgid "Advanced vector math" -msgstr "" +msgstr "Fortgeschrittene Vektor-Mathematik" #: doc/classes/AABB.xml msgid "Constructs an [AABB] from a position and size." @@ -6306,7 +6322,8 @@ msgstr "" "an diesem Node anzeigen soll." #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +#, fuzzy +msgid "Returns whether the given path is filtered." msgstr "Gibt [code]true[/code] zurück, ob ein gegebener Pfad gefiltert ist." #: doc/classes/AnimationNode.xml @@ -6340,8 +6357,9 @@ msgid "Adds or removes a path for the filter." msgstr "Fügt einen Pfad für den Filter hinzu oder entfernt ihn." #: doc/classes/AnimationNode.xml +#, fuzzy msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" "Setzt einen benutzerdefinierten Parameter. Diese werden als lokaler Speicher " @@ -6353,7 +6371,8 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "Wenn [code]true[/code], ist die Filterung aktiviert." #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +#, fuzzy +msgid "Emitted when the node was removed from the graph." msgstr "Wird aufgerufen, wenn das Node aus dem Graphen entfernt wurde." #: doc/classes/AnimationNode.xml @@ -7733,7 +7752,7 @@ msgstr "" #: doc/classes/AnimationTree.xml msgid "Using AnimationTree" -msgstr "" +msgstr "Verwendung des AnimationTree" #: doc/classes/AnimationTree.xml msgid "Manually advance the animations by the specified time (in seconds)." @@ -8585,7 +8604,7 @@ msgstr "" #: doc/classes/Area2D.xml msgid "Using Area2D" -msgstr "" +msgstr "Verwendung von Area2D" #: doc/classes/Area2D.xml doc/classes/CollisionShape2D.xml #: doc/classes/RectangleShape2D.xml @@ -11505,26 +11524,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -11682,6 +11685,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -14136,7 +14149,7 @@ msgstr "" #: doc/classes/CameraFeed.xml msgid "Unspecified position." -msgstr "" +msgstr "Nicht spezifizierte Position." #: doc/classes/CameraFeed.xml msgid "Camera is mounted at the front of the device." @@ -14799,6 +14812,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -17758,8 +17783,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -18544,6 +18570,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -25261,7 +25306,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25717,7 +25777,7 @@ msgstr "" #: doc/classes/File.xml msgid "File system" -msgstr "" +msgstr "Dateisystem" #: doc/classes/File.xml msgid "" @@ -27370,8 +27430,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -27641,7 +27702,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -28689,7 +28755,7 @@ msgstr "" #: modules/gridmap/doc_classes/GridMap.xml msgid "Using gridmaps" -msgstr "" +msgstr "Verwendung von Gridmaps" #: modules/gridmap/doc_classes/GridMap.xml msgid "Clear all cells." @@ -30247,7 +30313,7 @@ msgstr "" #: doc/classes/Image.xml doc/classes/ImageTexture.xml msgid "Importing images" -msgstr "" +msgstr "Importieren von Bildern" #: doc/classes/Image.xml msgid "" @@ -34244,7 +34310,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -34624,8 +34695,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -36468,6 +36543,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -36481,6 +36565,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -36523,6 +36619,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -36574,6 +36680,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -38493,7 +38611,7 @@ msgstr "" #: doc/classes/Node.xml msgid "Nodes and Scenes" -msgstr "" +msgstr "Nodes und Szenen" #: doc/classes/Node.xml msgid "All Demos" @@ -38933,6 +39051,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -39103,6 +39240,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -39203,6 +39355,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -39453,6 +39613,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -40443,8 +40609,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -41238,7 +41404,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -49232,6 +49410,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -49242,8 +49431,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -49756,14 +49947,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -49892,8 +50088,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -53882,6 +54078,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -55149,6 +55352,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -57005,7 +57220,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -57019,7 +57234,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -57720,7 +57935,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57984,7 +58204,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -58007,11 +58236,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -58060,14 +58302,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -58237,8 +58481,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -59751,6 +60003,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Gibt die Anzahl der Spuren in der Animation zurück." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Gibt die Anzahl der Tasten in einer bestimmten Spur zurück." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Gibt die Anzahl der Dreiecke im Überblendungsbereich zurück." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -60816,6 +61078,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -60962,6 +61230,20 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" +"Gibt ein Array aller Zellen mit der angegebenen Kachel [code]index[/code] " +"zurück." + +#: doc/classes/Theme.xml #, fuzzy msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " @@ -61018,6 +61300,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Gibt [code]true[/code] zurück, wenn der angegebene Track importiert ist. " +"Andernfalls wird [code]false[/code] zurückgegeben." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -61114,6 +61405,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -63303,7 +63608,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -63350,10 +63655,11 @@ msgstr "" "Index [code]Dreieck[/code]." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" +"Liefert die Position des Punktes bei Index [code]Punkt[/code] im Dreieck von " +"Index [code]Dreieck[/code]." #: doc/classes/TreeItem.xml #, fuzzy @@ -67854,7 +68160,7 @@ msgstr "" #: modules/visual_script/doc_classes/VisualScriptMathConstant.xml msgid "Infinity: [code]inf[/code]." -msgstr "" +msgstr "Unendlichkeit: [code]inf[/code]." #: modules/visual_script/doc_classes/VisualScriptMathConstant.xml msgid "Not a number: [code]nan[/code]." @@ -68165,7 +68471,7 @@ msgstr "" #: modules/visual_script/doc_classes/VisualScriptSceneNode.xml msgid "Node reference." -msgstr "" +msgstr "Node-Referenz." #: modules/visual_script/doc_classes/VisualScriptSceneNode.xml msgid "" @@ -68326,7 +68632,7 @@ msgstr "" #: modules/visual_script/doc_classes/VisualScriptWhile.xml msgid "Conditional loop." -msgstr "" +msgstr "Bedingte Wiederholung." #: modules/visual_script/doc_classes/VisualScriptWhile.xml msgid "" @@ -74725,7 +75031,7 @@ msgstr "" #: doc/classes/XMLParser.xml msgid "CDATA content." -msgstr "" +msgstr "CDATA Inhalt." #: doc/classes/XMLParser.xml msgid "Unknown node." diff --git a/doc/translations/el.po b/doc/translations/el.po index ddec69fbd0..83def545e0 100644 --- a/doc/translations/el.po +++ b/doc/translations/el.po @@ -3336,6 +3336,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4847,8 +4856,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "ΕπιστÏÎφει την εφαπτομÎνη της παÏαμÎÏ„Ïου." #: doc/classes/AnimationNode.xml msgid "" @@ -4872,7 +4882,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4881,7 +4891,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9493,26 +9503,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9670,6 +9664,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12751,6 +12755,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15587,8 +15603,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16345,6 +16362,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23024,7 +23060,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25128,8 +25179,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25399,7 +25451,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31940,7 +31997,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32320,8 +32382,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34162,6 +34228,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34175,6 +34250,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34217,6 +34304,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34268,6 +34365,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36584,6 +36693,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36754,6 +36882,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36854,6 +36997,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37104,6 +37255,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38091,8 +38248,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38885,7 +39042,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46738,6 +46907,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46748,8 +46928,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47262,14 +47444,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47398,8 +47585,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51337,6 +51524,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52590,6 +52784,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54425,7 +54631,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54439,7 +54645,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55114,7 +55320,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55377,7 +55588,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55400,11 +55620,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55453,14 +55686,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55630,8 +55865,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57125,6 +57368,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "ΕπιστÏÎφει το συνημίτονο της παÏαμÎÏ„Ïου." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "ΕπιστÏÎφει την αντίθετη τιμή της παÏαμÎÏ„Ïου." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "ΕπιστÏÎφει το υπόλοιπο των 2 διανυσμάτων." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58163,6 +58416,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58303,6 +58562,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "ΕπιστÏÎφει το υπόλοιπο των 2 διανυσμάτων." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58351,6 +58622,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58446,6 +58723,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60622,7 +60913,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60664,10 +60955,9 @@ msgid "" msgstr "ΕπιστÏÎφει το ημίτονο της παÏαμÎÏ„Ïου." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "ΕπιστÏÎφει το ημίτονο της παÏαμÎÏ„Ïου." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/es.po b/doc/translations/es.po index 9bd808d8c4..6ebc2af78b 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -30,12 +30,14 @@ # Rémi Verschelde <remi@godotengine.org>, 2021. # Alfonso V <alfonsov96@gmail.com>, 2022. # Alejandro Pérez <alejandro.pr.rz@gmail.com>, 2022. +# Cristhian Pineda Castro <kurgancpc@hotmail.com>, 2022. +# Francesco Santoro <fgsantoror20@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-02-14 22:08+0000\n" -"Last-Translator: Alejandro Pérez <alejandro.pr.rz@gmail.com>\n" +"PO-Revision-Date: 2022-03-05 03:08+0000\n" +"Last-Translator: Francesco Santoro <fgsantoror20@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/es/>\n" "Language: es\n" @@ -43,7 +45,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -86,9 +88,8 @@ msgid "Method Descriptions" msgstr "Descripciones de Métodos" #: doc/tools/make_rst.py -#, fuzzy msgid "Theme Property Descriptions" -msgstr "Descripciones de Propiedades" +msgstr "Descripciones de las propiedades del tema" #: doc/tools/make_rst.py msgid "Inherits:" @@ -116,7 +117,6 @@ msgid "value" msgstr "valor" #: doc/tools/make_rst.py -#, fuzzy msgid "Getter" msgstr "Método de Acceso al Valor o Getter" @@ -155,21 +155,18 @@ msgstr "" "llamarse directamente utilizando el nombre de la clase." #: doc/tools/make_rst.py -#, fuzzy msgid "" "This method describes a valid operator to use with this type as left-hand " "operand." msgstr "" -"Este método describe un operador tal que el tipo de la instancia que lo " -"llama es considerado como operando izquierdo." +"Este método describe un operador válido para usar con este tipo como " +"operando izquierdo." #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "Built-in GDScript functions." -msgstr "Funciones GDScript predefinidas." +msgstr "Funciones GDScript integradas." #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "" "List of core built-in GDScript functions. Math functions and other " "utilities. Everything else is provided by objects. (Keywords: builtin, built " @@ -204,7 +201,6 @@ msgstr "" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "" "Returns a color according to the standardized [code]name[/code] with " "[code]alpha[/code] ranging from 0 to 1.\n" @@ -276,7 +272,6 @@ msgstr "" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "" "Asserts that the [code]condition[/code] is [code]true[/code]. If the " "[code]condition[/code] is [code]false[/code], an error is generated. When " @@ -4415,6 +4410,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -6385,7 +6389,8 @@ msgstr "" "muestre la edición del filtro en este nodo." #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +#, fuzzy +msgid "Returns whether the given path is filtered." msgstr "Devuelve [code]true[/code] si un camino dado es filtrado." #: doc/classes/AnimationNode.xml @@ -6419,8 +6424,9 @@ msgid "Adds or removes a path for the filter." msgstr "Añade o elimina una ruta para el filtro." #: doc/classes/AnimationNode.xml +#, fuzzy msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" "Establece un parámetro personalizado. Estos se usan como almacenamiento " @@ -6432,7 +6438,8 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "Si [code]true[/code], el filtrado está activado." #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +#, fuzzy +msgid "Emitted when the node was removed from the graph." msgstr "Llamado cuando el nodo es eliminado desde el gráfico." #: doc/classes/AnimationNode.xml @@ -12615,31 +12622,12 @@ msgstr "" "[code]at_position[/code]." #: doc/classes/AudioServer.xml -#, fuzzy -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" -"Nombre del dispositivo actual para la entrada de audio (ver [method " -"capture_get_device_list])." - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" "Devuelve los nombres de todos los dispositivos de entrada de audio " "detectados en el sistema." #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "Genera un [AudioBusLayout] usando los buses y efectos disponibles." @@ -12831,6 +12819,16 @@ msgstr "Número de buses de audio disponibles." #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -16759,6 +16757,24 @@ msgid "Returns the RID of the canvas used by this layer." msgstr "Devuelve el RID del canvas usado por esta capa." #: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" +"Limpia el array. Esto es equivalente a usar [method resize] con un tamaño de " +"[code]0[/code]." + +#: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" +"Limpia el array. Esto es equivalente a usar [method resize] con un tamaño de " +"[code]0[/code]." + +#: doc/classes/CanvasLayer.xml msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." @@ -20448,8 +20464,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -21542,6 +21559,25 @@ msgstr "" "todos sus hijos [Control] utilizan." #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "Se emite cuando el nodo obtiene el foco del teclado." @@ -30536,8 +30572,23 @@ msgstr "" "glow_hdr_threshold]." #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." -msgstr "Si [code]true[/code], se activa el efecto de brillo." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." +msgstr "" #: doc/classes/Environment.xml msgid "" @@ -33371,8 +33422,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" "Triangula el polÃgono especificado por los puntos en [code]polygon[/code]. " "Devuelve un [PackedInt32Array] donde cada triángulo consiste en tres Ãndices " @@ -33728,7 +33780,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" "Cocina el efecto para todas las [GeometryInstance]s marcadas con [constant " "GeometryInstance3D.GI_MODE_BAKED] y [Light]s marcadas con [constant Light3D." @@ -42444,9 +42501,13 @@ msgid "The color of shadows cast by this light." msgstr "El color de las sombras proyectadas por esta luz." #: doc/classes/Light.xml -#, fuzzy -msgid "Attempts to reduce [member shadow_bias] gap." -msgstr "Constante para acceder a [member shadow_bias]." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." +msgstr "" #: doc/classes/Light.xml msgid "If [code]true[/code], the light will cast shadows." @@ -42926,11 +42987,13 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" -"La suavidad de las articulaciones redondeadas y las cubiertas. Esto sólo se " -"usa si una cubierta o articulación se establece como redonda." #: doc/classes/Line2D.xml #, fuzzy @@ -45347,6 +45410,15 @@ msgstr "Devuelve la [Transform2D] de una instancia especÃfica." #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -45359,6 +45431,18 @@ msgid "" msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml #, fuzzy msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " @@ -45415,6 +45499,16 @@ msgid "Mesh to be drawn." msgstr "Malla para ser dibujada." #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" "Formato de transformación usado para transformar la malla, ya sea 2D o 3D." @@ -45469,6 +45563,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "Nodo que instancia un [MultiMesh]." @@ -48606,6 +48712,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -48852,6 +48977,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -49008,6 +49148,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -49338,6 +49486,13 @@ msgid "" msgstr "" #: doc/classes/Node.xml +#, fuzzy +msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "Notificación recibida cuando el nodo se mueve en el padre." + +#: doc/classes/Node.xml msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." @@ -50770,8 +50925,8 @@ msgstr "Dibuja una geometrÃa simple desde código." #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -51803,8 +51958,20 @@ msgstr "" "Windows." #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." -msgstr "Devuelve el número de hilos disponibles en el host." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." +msgstr "" #: doc/classes/OS.xml #, fuzzy @@ -62197,6 +62364,17 @@ msgid "" msgstr "" #: doc/classes/ProjectSettings.xml +msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml #, fuzzy msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " @@ -62209,8 +62387,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" "Controla cuánto se sincronizan los ticks de la fÃsica con el tiempo real. " "Para 0 o menos, los ticks están sincronizadas. Estos valores se recomiendan " @@ -62768,18 +62948,20 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" -"Sobrescritura del extremo inferior para [member rendering/quality/depth/hdr] " -"en los dispositivos móviles, debido a problemas de rendimiento o de apoyo al " -"driver." #: doc/classes/ProjectSettings.xml msgid "" @@ -62940,13 +63122,14 @@ msgstr "" "(también llamado \"filtrado trilÃneo\")." #: doc/classes/ProjectSettings.xml +#, fuzzy msgid "" "Strategy used for framebuffer allocation. The simpler it is, the less " "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" "Estrategia utilizada para la asignación de la memoria intermedia. Cuanto más " "simple es, menos recursos utiliza (pero menos caracterÃsticas soporta). Si " @@ -68178,6 +68361,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -69753,6 +69943,18 @@ msgid "All 3D Demos" msgstr "" #: doc/classes/Spatial.xml +msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml #, fuzzy msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " @@ -72131,7 +72333,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -72145,7 +72347,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -72963,8 +73165,13 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "Devuelve [code]true[/code] si la string comienza con la string dada." #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." -msgstr "Devuelve los bigramas (pares de letras consecutivas) de esta string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "" @@ -73322,8 +73529,17 @@ msgstr "" "[code]: / \\ ? * \" | % < >[/code]" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." -msgstr "Devuelve [code]true[/code] si esta string contiene un real válido." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "" @@ -73350,18 +73566,32 @@ msgstr "" "devolverán [code]false[/code]." #: doc/classes/String.xml +#, fuzzy msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" "Devuelve [code]true[/code] si esta string es un identificador válido. Un " "identificador válido sólo puede contener letras, dÃgitos y guiones bajos " "([code]_[/code]) y el primer carácter no puede ser un dÃgito." #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." -msgstr "Devuelve [code]true[/code] si esta string contiene un entero válido." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "" @@ -73408,10 +73638,12 @@ msgid "" msgstr "" #: doc/classes/String.xml +#, fuzzy msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" "Hace una comparación simple con expresión que distingue entre mayúsculas y " "minúsculas, en la que [code]\"*\"[/code] coincide con cero o más caracteres " @@ -73419,10 +73651,12 @@ msgstr "" "excepto con un punto ([code]\".\"[/code])." #: doc/classes/String.xml +#, fuzzy msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" "Hace una simple comparación expresión insensible a las mayúsculas y " "minúsculas, en la que [code]\"*\"[/code] coincide con cero o más caracteres " @@ -73628,11 +73862,17 @@ msgstr "Devuelve el hash SHA-256 de la string como una string." #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" -"Devuelve el Ãndice de similitud del texto comparado con esta string. 1 " -"significa totalmente similar y 0 significa totalmente diferente." #: doc/classes/String.xml msgid "Returns a simplified canonical path." @@ -75589,6 +75829,16 @@ msgstr "Devuelve la lista de valores del [Dictionary]." #: doc/classes/TextEdit.xml #, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Devuelve la cantidad de lÃneas de texto que tiene la etiqueta." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Devuelve el número de lÃneas visibles." + +#: doc/classes/TextEdit.xml +#, fuzzy msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -76903,6 +77153,12 @@ msgstr "" "Limpia la constante en [code]name[/code] si el tema tiene [code]type[/code]." #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" "Establece los valores del tema a una copia de los valores del tema por " @@ -77104,6 +77360,21 @@ msgstr "" #: doc/classes/Theme.xml #, fuzzy msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" +"Devuelve el nombre de la escena que se está reproduciendo. Si no se está " +"reproduciendo ninguna escena, devuelve una string vacÃa." + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Devuelve un [Array] de conexiones para la [code]signal[/code] dada." + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -77176,6 +77447,15 @@ msgstr "" "Devuelve [code]false[/code] si el tema no tiene [code]type[/code]." #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Devuelve [code]true[/code] si el precargador contiene un recurso asociado a " +"[code]name[/code]." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -77314,6 +77594,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -80065,7 +80359,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" "Añade un botón con [Texture2D] [code]button[/code] en la columna " @@ -80124,13 +80418,9 @@ msgstr "" "[code]button_idx[/code] en la columna [code]column[/code]." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" -"Devuelve el número de botones en la columna [code]column[/code]. Puede " -"utilizarse para obtener el Ãndice del último botón añadido, si no se " -"especificó ningún Ãndice." +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Devuelve el color personalizado de la columna [code]column[/code]." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/fa.po b/doc/translations/fa.po index a6260337ca..78429f84e0 100644 --- a/doc/translations/fa.po +++ b/doc/translations/fa.po @@ -3761,6 +3761,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5271,7 +5280,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -5296,7 +5305,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5305,7 +5314,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9916,26 +9925,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10093,6 +10086,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13168,6 +13171,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16004,8 +16019,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16756,6 +16772,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23430,7 +23465,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25532,8 +25582,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25803,7 +25854,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32338,7 +32394,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32718,8 +32779,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34559,6 +34624,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34572,6 +34646,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34614,6 +34700,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34665,6 +34761,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36968,6 +37076,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37138,6 +37265,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37238,6 +37380,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37488,6 +37638,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38475,8 +38631,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39266,7 +39422,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47120,6 +47288,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47130,8 +47309,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47644,14 +47825,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47780,8 +47966,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51722,6 +51908,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52975,6 +53168,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54810,7 +55015,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54824,7 +55029,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55497,7 +55702,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55760,7 +55970,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55783,11 +56002,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55836,14 +56068,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56013,8 +56247,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57503,6 +57745,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58540,6 +58790,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58680,6 +58936,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58728,6 +58995,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58823,6 +59096,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60996,7 +61283,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61037,9 +61324,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/fi.po b/doc/translations/fi.po index 780df6468f..df7bd8a2d9 100644 --- a/doc/translations/fi.po +++ b/doc/translations/fi.po @@ -3348,6 +3348,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4859,8 +4868,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Palauttaa parametrin tangentin." #: doc/classes/AnimationNode.xml msgid "" @@ -4884,7 +4894,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4893,7 +4903,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9511,26 +9521,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9688,6 +9682,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12771,6 +12775,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15608,8 +15624,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16366,6 +16383,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23045,7 +23081,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25149,8 +25200,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25420,7 +25472,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31969,7 +32026,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32349,8 +32411,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34191,6 +34257,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34204,6 +34279,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34246,6 +34333,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34297,6 +34394,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36614,6 +36723,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36784,6 +36912,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36884,6 +37027,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37134,6 +37285,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38121,8 +38278,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38915,7 +39072,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46768,6 +46937,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46778,8 +46958,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47292,14 +47474,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47428,8 +47615,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51367,6 +51554,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52621,6 +52815,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54457,7 +54663,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54471,7 +54677,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55146,7 +55352,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55409,7 +55620,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55432,11 +55652,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55485,14 +55718,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55662,8 +55897,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57158,6 +57401,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Palauttaa kahden vektorin jäännöksen." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Palauttaa parametrin vasta-arvon." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Palauttaa kahden vektorin jäännöksen." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58196,6 +58449,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58337,6 +58596,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Laskee kahden vektorin ristitulon." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58384,6 +58655,13 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "Laskee kahden vektorin ristitulon." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -58480,6 +58758,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60656,7 +60948,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60698,10 +60990,9 @@ msgid "" msgstr "Laskee kahden vektorin ristitulon." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Laskee kahden vektorin ristitulon." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/fil.po b/doc/translations/fil.po index 27b84c2f14..7d94a0dacc 100644 --- a/doc/translations/fil.po +++ b/doc/translations/fil.po @@ -3329,6 +3329,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4839,7 +4848,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4864,7 +4873,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4873,7 +4882,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9484,26 +9493,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9661,6 +9654,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12736,6 +12739,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15572,8 +15587,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16324,6 +16340,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22998,7 +23033,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25100,8 +25150,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25371,7 +25422,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31906,7 +31962,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32286,8 +32347,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34127,6 +34192,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34140,6 +34214,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34182,6 +34268,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34233,6 +34329,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36530,6 +36638,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36700,6 +36827,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36800,6 +36942,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37050,6 +37200,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38037,8 +38193,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38828,7 +38984,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46670,6 +46838,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46680,8 +46859,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47194,14 +47375,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47330,8 +47516,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51268,6 +51454,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52521,6 +52714,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54356,7 +54561,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54370,7 +54575,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55043,7 +55248,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55306,7 +55516,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55329,11 +55548,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55382,14 +55614,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55559,8 +55793,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57049,6 +57291,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58086,6 +58336,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58226,6 +58482,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58274,6 +58541,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58369,6 +58642,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60542,7 +60829,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60583,9 +60870,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/fr.po b/doc/translations/fr.po index aa9d4a2ee3..1c485e9047 100644 --- a/doc/translations/fr.po +++ b/doc/translations/fr.po @@ -36,7 +36,7 @@ # Toquey SiGauses <meiyo40@gmail.com>, 2021. # GABRIELLE Damien <damiengabrielle@gmail.com>, 2021. # Julien Vanelian <julienvanelian@hotmail.com>, 2021. -# Perrier Mathis <mathis.perrier73@gmail.com>, 2021. +# Perrier Mathis <mathis.perrier73@gmail.com>, 2021, 2022. # Blackiris <divjvc@free.fr>, 2021. # AndyNekena <andy.nekena@gmail.com>, 2021. # Legorel <Legorel412@gmail.com>, 2021, 2022. @@ -54,13 +54,14 @@ # ASTRALE <jules.cercy@etu.univ-lyon1.fr>, 2021, 2022. # Pierre-Alexandre Arènes <palex95870@gmail.com>, 2022. # KikooDX <kikoodx@paranoici.org>, 2022. +# Kevin Bouancheau <kevin.bouancheau@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-13 20:11+0000\n" -"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n" +"PO-Revision-Date: 2022-03-03 17:35+0000\n" +"Last-Translator: Perrier Mathis <mathis.perrier73@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/fr/>\n" "Language: fr\n" @@ -68,7 +69,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -591,7 +592,7 @@ msgid "" "r = deg2rad(180) # r is 3.141593\n" "[/codeblock]" msgstr "" -"Convertit un angle exprimé en degrés en radians.\n" +"Convertit un angle en degrés vers sa valeur en radians.\n" "[codeblock]\n" "r = deg2rad(180) # r vaut 3.141593\n" "[/codeblock]" @@ -3997,30 +3998,43 @@ msgid "" "MIDI note OFF message. See the documentation of [InputEventMIDI] for " "information of how to use MIDI inputs." msgstr "" +"Le message MIDI pour la note OFF. Référez vous à la documentation de " +"[InputEventMIDI] pour avoir des informations concernant les entrées MIDI." #: doc/classes/@GlobalScope.xml msgid "" "MIDI note ON message. See the documentation of [InputEventMIDI] for " "information of how to use MIDI inputs." msgstr "" +"Le message MIDI pour la note ON. Référez vous à la documentation de " +"[InputEventMIDI] pour avoir des informations concernant les entrées MIDI." #: doc/classes/@GlobalScope.xml +#, fuzzy msgid "" "MIDI aftertouch message. This message is most often sent by pressing down on " "the key after it \"bottoms out\"." msgstr "" +"Le message MIDI d'après touche. Ce message est le plus souvent envoyé quand " +"on continue de faire varier la pression sur la touche après l'appui initial." #: doc/classes/@GlobalScope.xml msgid "" "MIDI control change message. This message is sent when a controller value " "changes. Controllers include devices such as pedals and levers." msgstr "" +"Le message MIDI de changement de contrôle. Ce message est envoyé lorsqu'un " +"contrôleur change de valeur. Les contrôleurs comprennent des dispositifs " +"comme des pédales, des leviers." #: doc/classes/@GlobalScope.xml +#, fuzzy msgid "" "MIDI program change message. This message sent when the program patch number " "changes." msgstr "" +"Le message de changement de programme MIDI. Ce message est envoyé lorsque " +"l'on reçoit une consigne de changement de programme." #: doc/classes/@GlobalScope.xml msgid "" @@ -4376,6 +4390,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5343,7 +5366,7 @@ msgstr "" #: doc/classes/Particles2D.xml doc/classes/Timer.xml #: doc/classes/VisibilityNotifier2D.xml msgid "2D Dodge The Creeps Demo" -msgstr "" +msgstr "Démo 2D « Dodge The Creeps »" #: doc/classes/AnimatedSprite.xml msgid "" @@ -6159,8 +6182,9 @@ msgid "" "[AudioStreamPlayer]. The stream can be trimmed and previewed in the " "animation." msgstr "" -"Les pistes audio servent à jouer un flux audio sur un [AudioStreamPlayer] " -"(2D ou 3D). Le flux peut être coupé et prérendu dans l'animation." +"Les pistes audio sont utilisées pour lire un flux audio avec l'un ou l'autre " +"type de [AudioStreamPlayer]. Le flux peut être découpé et prévisualisé dans " +"l'animation." #: doc/classes/Animation.xml msgid "Animation tracks play animations in other [AnimationPlayer] nodes." @@ -6197,9 +6221,9 @@ msgid "" "Same as linear interpolation, but also interpolates from the current value " "(i.e. dynamically at runtime) if the first key isn't at 0 seconds." msgstr "" -"Le même que l'interpolation linéaire, mais interpole aussi de la valeur " -"actuelle (c'est-à -dire, dynamiquement à l'exécution) si la première clé " -"n'est pas située à 0 secondes." +"Identique à l'interpolation linéaire, mais interpole aussi à partir de la " +"valeur actuelle (définie à l'exécution) si la première clé n'est pas située " +"à 0 seconde." #: doc/classes/AnimationNode.xml msgid "Base resource for [AnimationTree] nodes." @@ -6332,7 +6356,8 @@ msgstr "" "affiche l'édition de filtre sur ce nÅ“ud." #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +#, fuzzy +msgid "Returns whether the given path is filtered." msgstr "Retourne [code]true[/code] si un chemin donné est filtré." #: doc/classes/AnimationNode.xml @@ -6365,8 +6390,9 @@ msgid "Adds or removes a path for the filter." msgstr "Ajoute ou supprime un chemin pour le filtre." #: doc/classes/AnimationNode.xml +#, fuzzy msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" "Définit un paramètre personnalisé. Utilisé comme stockage local, car les " @@ -6378,7 +6404,8 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "Si [code]true[/code], le filtrage est activé." #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +#, fuzzy +msgid "Emitted when the node was removed from the graph." msgstr "Appelée quand le nÅ“ud est enlevé du graphe." #: doc/classes/AnimationNode.xml @@ -6472,9 +6499,8 @@ msgstr "" #: doc/classes/AnimationNodeOneShot.xml doc/classes/AnimationNodeOutput.xml #: doc/classes/AnimationNodeTimeScale.xml #: doc/classes/AnimationNodeTransition.xml -#, fuzzy msgid "AnimationTree" -msgstr "NÅ“ud d'animation." +msgstr "AnimationTree" #: doc/classes/AnimationNodeAdd3.xml doc/classes/AnimationNodeAnimation.xml #: doc/classes/AnimationNodeBlend2.xml @@ -7794,6 +7820,8 @@ msgid "" "Returns the input count for a given node. Different types of nodes have " "different amount of inputs." msgstr "" +"Retourne le nombre d'entrées du nÅ“ud spécifié. Différents types de nÅ“uds ont " +"différents nombres d'entrées." #: doc/classes/AnimationTreePlayer.xml #, fuzzy @@ -8281,7 +8309,7 @@ msgstr "" #: doc/classes/Area.xml doc/classes/Area2D.xml msgid "This area does not affect gravity/damping." -msgstr "" +msgstr "Cette aire n'influe pas sur la gravité/amortissement." #: doc/classes/Area.xml doc/classes/Area2D.xml msgid "" @@ -10497,13 +10525,12 @@ msgid "" msgstr "" #: doc/classes/AudioEffectCapture.xml -#, fuzzy msgid "" "Returns [code]true[/code] if at least [code]frames[/code] audio frames are " "available to read in the internal ring buffer." msgstr "" -"Renvoie [code]true[/code] (vrai) si [code]a[/code] et [code]b[/code] sont " -"approximativement égaux l'un à l'autre." +"Retourne [code]true[/code] si au moins [code]frames[/code] audio peuvent " +"être lues dans la mémoire en anneau interne." #: doc/classes/AudioEffectCapture.xml #, fuzzy @@ -11093,6 +11120,9 @@ msgid "" "Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, " "but least stable over time." msgstr "" +"Utilise une mémoire tampon de 256 échantillons pour la transformée de " +"Fourier rapide. Le délai est le plus court mais est le moins stable dans le " +"temps." #: doc/classes/AudioEffectPitchShift.xml #: doc/classes/AudioEffectSpectrumAnalyzer.xml @@ -11100,6 +11130,8 @@ msgid "" "Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but " "less stable over time." msgstr "" +"Utilise une mémoire tampon de 512 échantillons pour la transformée de " +"Fourier rapide. Le délai est court mais moins stable dans le temps." #: doc/classes/AudioEffectPitchShift.xml #: doc/classes/AudioEffectSpectrumAnalyzer.xml @@ -11107,6 +11139,9 @@ msgid "" "Use a buffer of 1024 samples for the Fast Fourier transform. This is a " "compromise between latency and stability over time." msgstr "" +"Utilise une mémoire tampon de 1024 échantillons pour la transformée de " +"Fourier rapide. C'est un bon compromis entre le délai et la stabilité dans " +"le temps." #: doc/classes/AudioEffectPitchShift.xml #: doc/classes/AudioEffectSpectrumAnalyzer.xml @@ -11114,6 +11149,8 @@ msgid "" "Use a buffer of 2048 samples for the Fast Fourier transform. High latency, " "but stable over time." msgstr "" +"Utilise une mémoire tampon de 2048 échantillons pour la transformée de " +"Fourier rapide. Le délai est long mais est stable dans le temps." #: doc/classes/AudioEffectPitchShift.xml #: doc/classes/AudioEffectSpectrumAnalyzer.xml @@ -11121,6 +11158,9 @@ msgid "" "Use a buffer of 4096 samples for the Fast Fourier transform. Highest " "latency, but most stable over time." msgstr "" +"Utilise une mémoire tampon de 4096 échantillons pour la transformée de " +"Fourier rapide. Le délai est le plus long mais est le plus stable dans le " +"temps." #: doc/classes/AudioEffectPitchShift.xml #: doc/classes/AudioEffectSpectrumAnalyzer.xml @@ -11298,26 +11338,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -11382,7 +11406,7 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "Returns the audio driver's output latency." -msgstr "" +msgstr "Retourne la latence de la sortie du pilote audio." #: doc/classes/AudioServer.xml msgid "Returns the speaker configuration." @@ -11475,6 +11499,16 @@ msgstr "Nombre de bus audio disponibles." #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -11652,7 +11686,7 @@ msgstr "Pilote de flux audio OGG Vorbis." #: doc/classes/AudioStreamPlayback.xml msgid "Meta class for playing back audio." -msgstr "" +msgstr "Classe méta pour la lecture audio." #: doc/classes/AudioStreamPlayback.xml msgid "" @@ -12003,11 +12037,11 @@ msgstr "" #: doc/classes/AudioStreamRandomPitch.xml msgid "Plays audio with random pitch shifting." -msgstr "" +msgstr "Joue le son avec une hauteur aléatoire." #: doc/classes/AudioStreamRandomPitch.xml msgid "Randomly varies pitch on each start." -msgstr "" +msgstr "Change aléatoirement la hauteur à chaque démarrage." #: doc/classes/AudioStreamRandomPitch.xml msgid "The current [AudioStream]." @@ -12015,7 +12049,7 @@ msgstr "L'actuel [AudioStream]." #: doc/classes/AudioStreamRandomPitch.xml msgid "The intensity of random pitch variation." -msgstr "" +msgstr "L'intensité de la variation aléatoire de la hauteur." #: doc/classes/AudioStreamSample.xml msgid "Stores audio data loaded from WAV files." @@ -12100,7 +12134,7 @@ msgstr "Codec audio 16 bits." #: doc/classes/AudioStreamSample.xml msgid "Audio is compressed using IMA ADPCM." -msgstr "" +msgstr "L'audio est compressé avec IMA ADPCM." #: doc/classes/AudioStreamSample.xml msgid "Audio does not loop." @@ -12147,7 +12181,7 @@ msgstr "" #: doc/classes/BackBufferCopy.xml msgid "Buffer mode. See [enum CopyMode] constants." -msgstr "" +msgstr "Le mode de mémoire tampon. Voir les constantes [enum CopyMode]." #: doc/classes/BackBufferCopy.xml msgid "" @@ -12201,6 +12235,8 @@ msgid "" "When enabled, the lightmapper will merge the textures for all meshes into a " "single large layered texture. Not supported in GLES2." msgstr "" +"Si actif, le lightmapper fusionnera les textures de tous les maillages dans " +"une seule texture assez large avec claque. Ça n'est pas supporter avec GLES2." #: doc/classes/BakedLightmap.xml msgid "" @@ -12589,15 +12625,15 @@ msgstr "" #: doc/classes/BaseButton.xml msgid "The state of buttons are pressed." -msgstr "" +msgstr "L'état des boutons est : pressé." #: doc/classes/BaseButton.xml msgid "The state of buttons are hovered." -msgstr "" +msgstr "L'état des boutons est : survolé." #: doc/classes/BaseButton.xml msgid "The state of buttons are disabled." -msgstr "" +msgstr "L'état des boutons est : désactivé." #: doc/classes/BaseButton.xml msgid "The state of buttons are both hovered and pressed." @@ -12894,9 +12930,8 @@ msgid "" msgstr "" #: doc/classes/BitMap.xml -#, fuzzy msgid "Resizes the image to [code]new_size[/code]." -msgstr "Supprime l’animation avec la touche [code]name[/code]." +msgstr "Redimensionne l'image à la nouvelle taille [code]new_size[/code]." #: doc/classes/BitMap.xml msgid "" @@ -14026,9 +14061,8 @@ msgid "Returns the number of [CameraFeed]s registered." msgstr "Retourne le nombre de [CameraFeed] enregistrés." #: doc/classes/CameraServer.xml -#, fuzzy msgid "Removes the specified camera [code]feed[/code]." -msgstr "Supprime l’animation avec la touche [code]name[/code]." +msgstr "Supprime le flux de caméra [code]feed[/code] spécifié." #: doc/classes/CameraServer.xml #, fuzzy @@ -14672,6 +14706,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15882,7 +15928,7 @@ msgstr "" #: doc/classes/Color.xml doc/classes/ColorPickerButton.xml msgid "GUI Drag And Drop Demo" -msgstr "" +msgstr "Démo de l'interface de déposer-glisser" #: doc/classes/Color.xml msgid "" @@ -17019,7 +17065,7 @@ msgstr "Émis lorsque le [ColorPicker] est fermé." #: doc/classes/ColorPickerButton.xml msgid "Default text [Color] of the [ColorPickerButton]." -msgstr "" +msgstr "La [Color] par défaut du texte du [ColorPickerButton]." #: doc/classes/ColorPickerButton.xml msgid "Text [Color] used when the [ColorPickerButton] is disabled." @@ -17728,8 +17774,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -18516,6 +18563,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "Émis quand le nÅ“ud prend le focus du clavier." @@ -22108,6 +22174,7 @@ msgstr "" #: doc/classes/EditorFeatureProfile.xml msgid "Returns the specified [code]feature[/code]'s human-readable name." msgstr "" +"Retourne le nom de la fonctionnalité [code]feature[/code] facilement lisible." #: doc/classes/EditorFeatureProfile.xml msgid "" @@ -25322,7 +25389,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -26467,7 +26549,7 @@ msgstr "Retourne la position de défilement actuelle." #: doc/classes/Font.xml msgid "Internationalized font and text drawing support." -msgstr "" +msgstr "Affichage internationalisé des polices et textes." #: doc/classes/Font.xml msgid "" @@ -27470,8 +27552,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -27756,7 +27839,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -30307,9 +30395,8 @@ msgid "" msgstr "" #: doc/classes/HTTPRequest.xml -#, fuzzy msgid "Maximum allowed size for response bodies." -msgstr "Valeur maximale pour le mode énumeration." +msgstr "La taille maximale le corps des réponses." #: doc/classes/HTTPRequest.xml msgid "" @@ -30510,9 +30597,8 @@ msgid "" msgstr "" #: doc/classes/Image.xml -#, fuzzy msgid "Fills the image with [code]color[/code]." -msgstr "Supprime l’animation avec la touche [code]name[/code]." +msgstr "Remplis toute l'image avec la couleur [code]color[/code]." #: doc/classes/Image.xml #, fuzzy @@ -31412,6 +31498,8 @@ msgid "" "Returns an [Array] containing the device IDs of all currently connected " "joypads." msgstr "" +"Retourne un [Array] contenant les identifiants de tous les joypads " +"actuellement connectés." #: doc/classes/Input.xml msgid "Returns the currently assigned cursor shape (see [enum CursorShape])." @@ -31780,28 +31868,35 @@ msgstr "" #: doc/classes/Input.xml msgid "Makes the mouse cursor visible but confines it to the game window." msgstr "" +"Rend le curseur de la souris visible mais le confine dans la fenêtre de jeu." #: doc/classes/Input.xml msgid "Arrow cursor. Standard, default pointing cursor." -msgstr "" +msgstr "Le curseur flèche. Le pointeur standard." #: doc/classes/Input.xml msgid "" "I-beam cursor. Usually used to show where the text cursor will appear when " "the mouse is clicked." msgstr "" +"Le curseur poutre en I. Sert en général à afficher où le curseur de texte " +"sera placé quand la souris sera cliquée." #: doc/classes/Input.xml msgid "" "Pointing hand cursor. Usually used to indicate the pointer is over a link or " "other interactable item." msgstr "" +"Le curseur avec la main. Utilisé en général quand le curseur survole un lien " +"ou un élément interactif." #: doc/classes/Input.xml msgid "" "Cross cursor. Typically appears over regions in which a drawing operation " "can be performed or for selections." msgstr "" +"Le curseur en croix. Utilisé typiquement pour les régions où l'on peut " +"dessiner, ou pour les sélections." #: doc/classes/Input.xml msgid "" @@ -31809,6 +31904,9 @@ msgid "" "This cursor shape denotes that the application is still usable during the " "operation." msgstr "" +"Le curseur d'activité. Indique que l'application est occupée à exécuter une " +"opération. La forme de ce curseur suggère que l'application est toujours " +"utilisable durant cette opération en cours." #: doc/classes/Input.xml msgid "" @@ -31816,16 +31914,24 @@ msgid "" "This cursor shape denotes that the application isn't usable during the " "operation (e.g. something is blocking its main thread)." msgstr "" +"Le curseur d'occupation. Indique que l'application est occupée à exécuter " +"une opération. La forme de ce curseur suggère que l'application n'est pas " +"utilisable durant cette opération en cours (ex.: que le fil d'exécution " +"principal est bloqué)." #: doc/classes/Input.xml msgid "Drag cursor. Usually displayed when dragging something." msgstr "" +"Le curseur de déposer-glisser. Affiché en général dès que l'opération de " +"glissage a commencé." #: doc/classes/Input.xml msgid "" "Can drop cursor. Usually displayed when dragging something to indicate that " "it can be dropped at the current position." msgstr "" +"Le curseur pour déposer. Permet d'afficher une destination pour le déposer-" +"glisser si l'emplacement survolé permet de déposer l'élément glissé." #: doc/classes/Input.xml msgid "" @@ -31833,18 +31939,26 @@ msgid "" "example, when dragging something) or that the control at a position is " "disabled." msgstr "" +"Le curseur d'interdiction. Indique que l'action est interdite (ex.: en " +"déplaçant un élément) ou que l'élément est désactivé." #: doc/classes/Input.xml msgid "" "Vertical resize mouse cursor. A double-headed vertical arrow. It tells the " "user they can resize the window or the panel vertically." msgstr "" +"Le curseur de redimensionnement vertical. Une flèche à double tête. Elle " +"précise qu'une fenêtre ou qu'un panneau peut être redimensionné " +"verticalement." #: doc/classes/Input.xml msgid "" "Horizontal resize mouse cursor. A double-headed horizontal arrow. It tells " "the user they can resize the window or the panel horizontally." msgstr "" +"Le curseur de redimensionnement horizontal. Une flèche à double tête. Elle " +"précise qu'une fenêtre ou qu'un panneau peut être redimensionné " +"horizontalement." #: doc/classes/Input.xml msgid "" @@ -31852,6 +31966,9 @@ msgid "" "from the bottom left to the top right. It tells the user they can resize the " "window or the panel both horizontally and vertically." msgstr "" +"Le curseur de redimensionnement de fenêtre. Une flèche à double tête du bas " +"gauche vers le haut droit. Elle précise qu'une fenêtre ou qu'un panneau peut " +"être redimensionné horizontalement et verticalement." #: doc/classes/Input.xml msgid "" @@ -31860,26 +31977,37 @@ msgid "" "CURSOR_BDIAGSIZE]. It tells the user they can resize the window or the panel " "both horizontally and vertically." msgstr "" +"Le curseur de redimensionnement de fenêtre. Une flèche à double tête du haut " +"gauche vers le bas droit, l'inverse de [constant CURSOR_BDIAGSIZE]. Elle " +"précise qu'une fenêtre ou qu'un panneau peut être redimensionné " +"horizontalement et verticalement." #: doc/classes/Input.xml msgid "Move cursor. Indicates that something can be moved." msgstr "" +"Le curseur de déplacement. Indique que quelque chose peut être déplacé." #: doc/classes/Input.xml msgid "" "Vertical split mouse cursor. On Windows, it's the same as [constant " "CURSOR_VSIZE]." msgstr "" +"Le curseur de séparation verticale. Permet de déplacer la séparation " +"horizontale entre deux vues. Sous Windows, c'est pareil que [constant " +"CURSOR_VSIZE]." #: doc/classes/Input.xml msgid "" "Horizontal split mouse cursor. On Windows, it's the same as [constant " "CURSOR_HSIZE]." msgstr "" +"Le curseur de séparation horizontale. Permet de déplacer la séparation " +"verticale entre deux vues. Sous Windows, c'est pareil que [constant " +"CURSOR_HSIZE]." #: doc/classes/Input.xml msgid "Help cursor. Usually a question mark." -msgstr "Curseur d'aide. Généralement un point d'interrogation." +msgstr "Le curseur d'aide. Généralement un point d'interrogation." #: doc/classes/InputEvent.xml msgid "Generic input event." @@ -31888,10 +32016,12 @@ msgstr "Évènement d’entrée générique." #: doc/classes/InputEvent.xml msgid "Base class of all sort of input event. See [method Node._input]." msgstr "" +"La classe de commune de tous les événements d'entrée. Voir [method Node." +"_input]." #: doc/classes/InputEvent.xml msgid "InputEvent" -msgstr "" +msgstr "InputEvent" #: doc/classes/InputEvent.xml msgid "" @@ -32095,7 +32225,7 @@ msgstr "" #: doc/classes/InputEventKey.xml msgid "Input event type for keyboard events." -msgstr "" +msgstr "Le type d'événement d'entrée des claviers." #: doc/classes/InputEventKey.xml msgid "" @@ -32164,9 +32294,8 @@ msgid "" msgstr "" #: doc/classes/InputEventMIDI.xml -#, fuzzy msgid "Input event for MIDI inputs." -msgstr "Type d’évènement d’entrée pour les actions." +msgstr "L'évènement d’entrée des entrées MIDI." #: doc/classes/InputEventMIDI.xml msgid "" @@ -32380,6 +32509,8 @@ msgstr "" msgid "" "Input event type for screen drag events. Only available on mobile devices." msgstr "" +"Le type d'événement d'entrée pour les glissements sur l'écran. Uniquement " +"disponible sur les appareils mobiles." #: doc/classes/InputEventScreenDrag.xml msgid "Contains screen drag information. See [method Node._input]." @@ -32391,7 +32522,7 @@ msgstr "" #: doc/classes/InputEventScreenDrag.xml msgid "The drag position." -msgstr "La position de glissement." +msgstr "La position du glissement." #: doc/classes/InputEventScreenDrag.xml msgid "" @@ -32401,13 +32532,15 @@ msgstr "" #: doc/classes/InputEventScreenDrag.xml msgid "The drag speed." -msgstr "La vitesse de glissement." +msgstr "La vitesse du glissement." #: doc/classes/InputEventScreenTouch.xml msgid "" "Input event type for screen touch events.\n" "(only available on mobile devices)" msgstr "" +"Le type d'événement d'entrée pour les événements de tape sur l'écran.\n" +"(uniquement disponible sur les appareils mobiles)" #: doc/classes/InputEventScreenTouch.xml msgid "" @@ -32481,6 +32614,7 @@ msgstr "" msgid "" "Adds an [InputEvent] to an action. This [InputEvent] will trigger the action." msgstr "" +"Ajoute un [InputEvent] à une action. Cet [InputEvent] déclenchera l'action." #: doc/classes/InputMap.xml msgid "Removes an [InputEvent] from an action." @@ -32500,10 +32634,11 @@ msgid "" "Returns [code]true[/code] if the action has the given [InputEvent] " "associated with it." msgstr "" +"Retourne [code]true[/code] si l'action est associée au [InputEvent] spécifié." #: doc/classes/InputMap.xml msgid "Sets a deadzone value for the action." -msgstr "" +msgstr "Définit une valeur pour la zone morte de l'action." #: doc/classes/InputMap.xml msgid "" @@ -32641,6 +32776,8 @@ msgid "" "Cast a [bool] value to an integer value, [code]int(true)[/code] will be " "equals to 1 and [code]int(false)[/code] will be equals to 0." msgstr "" +"Transformer un [bool] en une valeur entière, [code]int(true)[/code] donnera " +"1 et [code]int(false)[/code] donnera 0." #: doc/classes/int.xml msgid "" @@ -32777,7 +32914,7 @@ msgstr "" #: doc/classes/IP.xml msgid "DNS hostname resolver status: No status." -msgstr "" +msgstr "Statut du résolveur de noms d'hôtes DNS : Aucun statut." #: doc/classes/IP.xml msgid "DNS hostname resolver status: Waiting." @@ -32808,11 +32945,11 @@ msgstr "Type d’adresse : Aucun." #: doc/classes/IP.xml msgid "Address type: Internet protocol version 4 (IPv4)." -msgstr "" +msgstr "Type d'adresse : Protocole internet version 4 (IPv4)." #: doc/classes/IP.xml msgid "Address type: Internet protocol version 6 (IPv6)." -msgstr "" +msgstr "Type d'adresse : Protocole internet version 6 (IPv6)." #: doc/classes/IP.xml msgid "Address type: Any." @@ -32971,6 +33108,8 @@ msgid "" "Select the item at the specified index.\n" "[b]Note:[/b] This method does not trigger the item selection signal." msgstr "" +"Sélectionner un élément à la position spécifiée.\n" +"[b]Note :[/b] Cette méthode n'émet pas de signal de sélection de l'élément." #: doc/classes/ItemList.xml msgid "" @@ -33079,6 +33218,9 @@ msgid "" "If either X or Y component is not greater than zero, icon size won't be " "affected." msgstr "" +"La taille que prendrons toutes les icônes.\n" +"Si un des composants X ou Y n'est pas supérieur à zéro, la taille ne sera " +"pas changée." #: doc/classes/ItemList.xml msgid "" @@ -33472,12 +33614,16 @@ msgid "" "Helper class for parsing JSON data. For usage example and other important " "hints, see [JSONParseResult]." msgstr "" +"Classe d'aide pour interpréter les données JSON. Voir [JSONParseResult] pour " +"les exemples d'utilisateur ou les notes importantes." #: doc/classes/JSON.xml msgid "" "Parses a JSON-encoded string and returns a [JSONParseResult] containing the " "result." msgstr "" +"Interprète une chaine de caractères encodé en JSON et retourne un " +"[JSONParseResult] contenant le résultat." #: doc/classes/JSON.xml msgid "" @@ -33549,18 +33695,24 @@ msgid "" "The error type if the JSON source was not successfully parsed. See the [enum " "Error] constants." msgstr "" +"Un type d'erreur si la source JSON n'a pas été interprétée correctement. " +"Voir les constantes [enum Error]." #: doc/classes/JSONParseResult.xml msgid "" "The line number where the error occurred if the JSON source was not " "successfully parsed." msgstr "" +"Le numéro de ligne où l'erreur s'est produite dans le cas où le JSON n'a pas " +"été interprété correctement." #: doc/classes/JSONParseResult.xml msgid "" "The error message if the JSON source was not successfully parsed. See the " "[enum Error] constants." msgstr "" +"Le message d'erreur si la source de JSON n'a pas été correctement " +"interprétée. Voir les constantes [enum Error]." #: doc/classes/JSONParseResult.xml msgid "" @@ -34461,9 +34613,13 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -#, fuzzy -msgid "Attempts to reduce [member shadow_bias] gap." -msgstr "Constante pour l'accès à [member shadow_normal_bias]." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." +msgstr "" #: doc/classes/Light.xml msgid "If [code]true[/code], the light will cast shadows." @@ -34873,8 +35029,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34990,7 +35150,7 @@ msgstr "" #: doc/classes/LineEdit.xml msgid "Erases the [LineEdit]'s [member text]." -msgstr "" +msgstr "Efface le [member text] du [LineEdit]." #: doc/classes/LineEdit.xml msgid "" @@ -35161,6 +35321,8 @@ msgid "" "If [code]true[/code], the native virtual keyboard is shown when focused on " "platforms that support it." msgstr "" +"Si [code]true[/code], le clavier virtuel natif est affiché lorsque cet " +"élément prend le focus sur les plateformes qui le supportent." #: doc/classes/LineEdit.xml msgid "" @@ -36761,6 +36923,15 @@ msgstr "Retourne la [Transform2D] de l'instance spécifiée." #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -36774,6 +36945,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -36816,6 +36999,16 @@ msgid "Mesh to be drawn." msgstr "Maillage à dessiner." #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -36867,6 +37060,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "Le nÅ“ud que instancie un [MultiMesh]." @@ -37369,9 +37574,8 @@ msgid "Sets the radius of the agent." msgstr "Le rayon extérieur du tore." #: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml -#, fuzzy msgid "Sets the new target velocity." -msgstr "Obtient l'objet édité." +msgstr "Définit la nouvelle vitesse de la cible." #: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml msgid "" @@ -37396,9 +37600,8 @@ msgid "Create a new map." msgstr "Crée une nouvelle carte." #: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml -#, fuzzy msgid "Returns the map cell size." -msgstr "Retourne la taille du tableau." +msgstr "Retourne la taille des cellules de la carte." #: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml #, fuzzy @@ -37596,9 +37799,8 @@ msgid "" msgstr "" #: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml -#, fuzzy msgid "The radius of the agent." -msgstr "Le rayon du cylindre." +msgstr "Le rayon de l'agent." #: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml msgid "" @@ -37955,9 +38157,8 @@ msgid "Clears the navigation mesh." msgstr "Efface le maillage de navigation." #: doc/classes/NavigationMeshInstance.xml -#, fuzzy msgid "An instance of a [NavigationMesh]." -msgstr "L’instance est un multi-maillage." +msgstr "Une instance de [NavigationMesh]." #: doc/classes/NavigationMeshInstance.xml msgid "" @@ -37978,9 +38179,8 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled." msgstr "" #: doc/classes/NavigationMeshInstance.xml -#, fuzzy msgid "The [NavigationMesh] resource to use." -msgstr "Le singleton [NavigationMeshGenerator]." +msgstr "La ressource [NavigationMesh] à utiliser." #: doc/classes/NavigationMeshInstance.xml #, fuzzy @@ -38199,9 +38399,8 @@ msgid "" msgstr "" #: doc/classes/NavigationServer.xml -#, fuzzy msgid "Returns the map's up direction." -msgstr "Retourne les dimensions de bitmap." +msgstr "Retourne la direction haut de la carte." #: doc/classes/NavigationServer.xml #, fuzzy @@ -38209,9 +38408,8 @@ msgid "Set the map cell height used to weld the navigation mesh polygons." msgstr "Définit le polygone de navigation de la tuile." #: doc/classes/NavigationServer.xml -#, fuzzy msgid "Sets the map up direction." -msgstr "Arrête l'audio." +msgstr "Définit la direction haut de la carte." #: doc/classes/NavigationServer.xml msgid "" @@ -38787,7 +38985,7 @@ msgstr "" #: doc/classes/Node.xml msgid "Nodes and Scenes" -msgstr "" +msgstr "NÅ“uds et scènes" #: doc/classes/Node.xml msgid "All Demos" @@ -39286,6 +39484,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -39456,6 +39673,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -39556,6 +39788,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -39806,6 +40046,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -40022,7 +40268,7 @@ msgstr "" #: doc/classes/PanelContainer.xml doc/classes/TileMap.xml #: doc/classes/TileSet.xml msgid "2D Role Playing Game Demo" -msgstr "" +msgstr "Démo 2D de jeu de role-play" #: doc/classes/NodePath.xml msgid "" @@ -40731,7 +40977,7 @@ msgstr "" #: doc/classes/OccluderPolygon2D.xml msgid "The culling mode to use." -msgstr "" +msgstr "Le mode de culling à utiliser." #: doc/classes/OccluderPolygon2D.xml msgid "" @@ -40742,18 +40988,19 @@ msgstr "" #: doc/classes/OccluderPolygon2D.xml msgid "Culling is disabled. See [member cull_mode]." -msgstr "" +msgstr "Le culling est désactivé. Voir [member cull_mode]." #: doc/classes/OccluderPolygon2D.xml msgid "" "Culling is performed in the clockwise direction. See [member cull_mode]." -msgstr "" +msgstr "Le culling se fait dans le sens horaire. Voir [member cull_mode]." #: doc/classes/OccluderPolygon2D.xml msgid "" "Culling is performed in the counterclockwise direction. See [member " "cull_mode]." msgstr "" +"Le culling se fait dans le sens horaire inversé. Voir [member cull_mode]." #: doc/classes/OccluderShape.xml msgid "" @@ -40806,8 +41053,8 @@ msgstr "Dessine une géométrie simple à partir du code." #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -40825,14 +41072,12 @@ msgid "" msgstr "" #: doc/classes/OccluderShapeSphere.xml -#, fuzzy msgid "Sets an individual sphere's position." -msgstr "Définit un bit individuel sur le [member collision_mask]." +msgstr "Définit la position d'une seule sphère." #: doc/classes/OccluderShapeSphere.xml -#, fuzzy msgid "Sets an individual sphere's radius." -msgstr "Définit le rayon des sphères individuelles." +msgstr "Définit le rayon d'une seule sphère." #: doc/classes/OccluderShapeSphere.xml msgid "" @@ -40843,7 +41088,7 @@ msgstr "" #: doc/classes/OmniLight.xml msgid "Omnidirectional light, such as a light bulb or a candle." -msgstr "" +msgstr "Une lumière omnidirectionnelle, comme une ampoule ou une bougie." #: doc/classes/OmniLight.xml msgid "" @@ -40903,7 +41148,7 @@ msgstr "" #: modules/opensimplex/doc_classes/OpenSimplexNoise.xml msgid "Noise generator based on Open Simplex." -msgstr "" +msgstr "Un générateur de bruit basé sur Open Simplex." #: modules/opensimplex/doc_classes/OpenSimplexNoise.xml msgid "" @@ -40967,7 +41212,7 @@ msgstr "" #: modules/opensimplex/doc_classes/OpenSimplexNoise.xml msgid "Difference in period between [member octaves]." -msgstr "" +msgstr "La différence de période entre les [member octaves]." #: modules/opensimplex/doc_classes/OpenSimplexNoise.xml msgid "" @@ -41035,7 +41280,7 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "Returns the amount of items in the OptionButton, including separators." -msgstr "" +msgstr "Retourne le nombre d'élément dans ce OptionButton, séparateurs inclus." #: doc/classes/OptionButton.xml doc/classes/PopupMenu.xml msgid "Returns the icon of the item at index [code]idx[/code]." @@ -41048,6 +41293,7 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "Returns the index of the item with the given [code]id[/code]." msgstr "" +"Retourne l'index de l'élément avec l'identifiant [code]id[/code] spécifié." #: doc/classes/OptionButton.xml msgid "" @@ -41057,7 +41303,7 @@ msgstr "" #: doc/classes/OptionButton.xml doc/classes/PopupMenu.xml msgid "Returns the text of the item at index [code]idx[/code]." -msgstr "" +msgstr "Retourne le texte de l'élément à l'index [code]idx[/code]." #: doc/classes/OptionButton.xml msgid "" @@ -41075,10 +41321,12 @@ msgstr "" msgid "" "Returns [code]true[/code] if the item at index [code]idx[/code] is disabled." msgstr "" +"Retourn [code]true[/code] si l'élément à l'index [code]idx[/code] est " +"désactivé." #: doc/classes/OptionButton.xml msgid "Removes the item at index [code]idx[/code]." -msgstr "" +msgstr "Retire l'élément à l'index [code]idx[/code]." #: doc/classes/OptionButton.xml msgid "" @@ -41096,11 +41344,11 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "Sets the icon of the item at index [code]idx[/code]." -msgstr "" +msgstr "Définit l'icône pour l'élément à l'index [code]idx[/code]." #: doc/classes/OptionButton.xml msgid "Sets the ID of the item at index [code]idx[/code]." -msgstr "" +msgstr "Définit l'identifiant pour l'élément à l'index [code]idx[/code]." #: doc/classes/OptionButton.xml msgid "" @@ -41110,7 +41358,7 @@ msgstr "" #: doc/classes/OptionButton.xml doc/classes/PopupMenu.xml msgid "Sets the text of the item at index [code]idx[/code]." -msgstr "" +msgstr "Définit le texte pour l'élément à l'index [code]idx[/code]." #: doc/classes/OptionButton.xml msgid "" @@ -41133,7 +41381,7 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "Default text [Color] of the [OptionButton]." -msgstr "" +msgstr "La [Color] par défaut du texte pour le [OptionButton]." #: doc/classes/OptionButton.xml msgid "Text [Color] used when the [OptionButton] is disabled." @@ -41148,11 +41396,11 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "Text [Color] used when the [OptionButton] is being hovered." -msgstr "" +msgstr "La [Color] du texte utilisée quand le [OptionButton] est survolé." #: doc/classes/OptionButton.xml msgid "Text [Color] used when the [OptionButton] is being pressed." -msgstr "" +msgstr "La [Color] du texte utilisée quand le [OptionButton] est pressé." #: doc/classes/OptionButton.xml msgid "" @@ -41165,7 +41413,7 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "[Font] of the [OptionButton]'s text." -msgstr "" +msgstr "La [Font] du texte du [OptionButton]." #: doc/classes/OptionButton.xml msgid "The arrow icon to be drawn on the right end of the button." @@ -41188,7 +41436,7 @@ msgstr "" #: doc/classes/OptionButton.xml msgid "Default [StyleBox] for the [OptionButton]." -msgstr "" +msgstr "Le [StyleBox] par défaut pour le [OptionButton]." #: doc/classes/OptionButton.xml msgid "[StyleBox] used when the [OptionButton] is being pressed." @@ -41604,13 +41852,26 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml -#, fuzzy msgid "Returns the window size including decorations like window borders." -msgstr "Retourne le nÅ“ud de fin de la transition donnée." +msgstr "" +"Retourne la taille de la fenêtre en incluant les décorations, comme les " +"bordures." #: doc/classes/OS.xml msgid "" @@ -41621,9 +41882,8 @@ msgid "" msgstr "" #: doc/classes/OS.xml -#, fuzzy msgid "Returns the number of displays attached to the host machine." -msgstr "Retourne le nombre de formes assignées à une zone." +msgstr "Retourne le nombre d'écrans connectés à la machine hôte." #: doc/classes/OS.xml msgid "" @@ -42345,9 +42605,9 @@ msgid "" msgstr "" #: doc/classes/OS.xml -#, fuzzy msgid "If [code]true[/code], the window is resizable by the user." -msgstr "Si [code]true[/code], le filtrage est activé." +msgstr "" +"Si [code]true[/code], la fenêtre peut être redimensionnée par l'utilisateur." #: doc/classes/OS.xml msgid "The size of the window (without counting window manager decorations)." @@ -42517,7 +42777,7 @@ msgstr "Chemin d’accès du répertoire de bureau." #: doc/classes/OS.xml msgid "DCIM (Digital Camera Images) directory path." -msgstr "" +msgstr "Le chemin du dossier DCIM (images de la caméra numérique)." #: doc/classes/OS.xml msgid "Documents directory path." @@ -42892,7 +43152,7 @@ msgstr "" #: doc/classes/PacketPeerUDP.xml msgid "Returns whether this [PacketPeerUDP] is listening." -msgstr "" +msgstr "Retourne quand ce [PacketPeerUDP] écoute." #: doc/classes/PacketPeerUDP.xml msgid "" @@ -42974,7 +43234,7 @@ msgstr "" #: doc/classes/Panel.xml msgid "2D Finite State Machine Demo" -msgstr "" +msgstr "Démo 2D de machine à états finis" #: doc/classes/Panel.xml doc/classes/Skeleton.xml doc/classes/SkeletonIK.xml msgid "3D Inverse Kinematics Demo" @@ -43300,7 +43560,7 @@ msgstr "" #: doc/classes/ParticlesMaterial.xml msgid "Returns the randomness ratio associated with the specified parameter." -msgstr "" +msgstr "Retourne le facteur d'aléatoire associé avec le paramètre spécifié." #: doc/classes/ParticlesMaterial.xml #, fuzzy @@ -43319,7 +43579,7 @@ msgstr "" #: doc/classes/ParticlesMaterial.xml msgid "Sets the randomness ratio for the specified [enum Parameter]." -msgstr "" +msgstr "Définit le facteur d'aléatoire pour le [enum Parameter] spécifié." #: doc/classes/ParticlesMaterial.xml #, fuzzy @@ -43615,7 +43875,7 @@ msgstr "Une [Curve3D] décrivant le chemin." #: doc/classes/Path.xml msgid "Emitted when the [member curve] changes." -msgstr "" +msgstr "Émis quand cette [member curve] change." #: doc/classes/Path2D.xml msgid "Contains a [Curve2D] path for [PathFollow2D] nodes to follow." @@ -43635,9 +43895,8 @@ msgid "A [Curve2D] describing the path." msgstr "Une [Curve2D] décrivant le chemin." #: doc/classes/PathFollow.xml -#, fuzzy msgid "Point sampler for a [Path]." -msgstr "Échantillonneur de points pour un [Path2D]." +msgstr "Échantillonneur de points pour un [Path]." #: doc/classes/PathFollow.xml msgid "" @@ -43665,7 +43924,7 @@ msgstr "" #: doc/classes/PathFollow.xml doc/classes/PathFollow2D.xml msgid "The node's offset along the curve." -msgstr "" +msgstr "Le décalage du nÅ“ud le long de la courbe." #: doc/classes/PathFollow.xml doc/classes/PathFollow2D.xml msgid "" @@ -43698,9 +43957,8 @@ msgid "The node's offset perpendicular to the curve." msgstr "" #: doc/classes/PathFollow.xml -#, fuzzy msgid "Forbids the PathFollow to rotate." -msgstr "Interdit au PathFollow3D de tourner." +msgstr "Interdit au PathFollow de pivoter pour suivre le chemin." #: doc/classes/PathFollow.xml #, fuzzy @@ -43899,23 +44157,23 @@ msgstr "" #: doc/classes/Performance.xml msgid "3D objects drawn per frame." -msgstr "Objets 3D dessinés par image." +msgstr "Les objets 3D dessinés par trame." #: doc/classes/Performance.xml msgid "Vertices drawn per frame. 3D only." -msgstr "" +msgstr "Les sommets dessinés durant la trame. Seulement pour la 3D." #: doc/classes/Performance.xml msgid "Material changes per frame. 3D only." -msgstr "" +msgstr "Les matériaux changés durant la trame. Seulement pour la 3D." #: doc/classes/Performance.xml msgid "Shader changes per frame. 3D only." -msgstr "" +msgstr "Les shaders changés durant la trame. Seulement pour la 3D." #: doc/classes/Performance.xml msgid "Render surface changes per frame. 3D only." -msgstr "" +msgstr "Les surfaces affichées changées durant la trame. Seulement pour la 3D." #: doc/classes/Performance.xml msgid "Draw calls per frame. 3D only." @@ -44036,7 +44294,7 @@ msgstr "Ajoute une force de rotation constante." #: doc/classes/Physics2DDirectBodyState.xml doc/classes/RigidBody2D.xml msgid "Applies a directional impulse without affecting rotation." -msgstr "" +msgstr "Applique une impulsion directionnelle changer affecter la rotation." #: doc/classes/Physics2DDirectBodyState.xml msgid "" @@ -44049,7 +44307,7 @@ msgstr "" #: doc/classes/Physics2DDirectBodyState.xml doc/classes/RigidBody2D.xml msgid "Applies a rotational impulse to the body." -msgstr "" +msgstr "Applique une impulsion de rotation au corps." #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml @@ -44070,7 +44328,7 @@ msgstr "" #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml msgid "Returns the contact position in the collider." -msgstr "" +msgstr "Retourne la position du contact sur le collisionneur." #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml @@ -44129,9 +44387,8 @@ msgid "Calls the built-in force integration code." msgstr "" #: doc/classes/Physics2DDirectBodyState.xml doc/classes/RigidBody2D.xml -#, fuzzy msgid "The body's rotational velocity in [i]radians[/i] per second." -msgstr "La vitesse de rotation du corps." +msgstr "La vitesse de rotation du corps en [i]radians[/i] par seconde." #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml @@ -44144,9 +44401,8 @@ msgid "The inverse of the mass of the body." msgstr "" #: doc/classes/Physics2DDirectBodyState.xml -#, fuzzy msgid "The body's linear velocity in pixels per second." -msgstr "La vitesse de la souris en pixels par seconde." +msgstr "La vitesse linéaire d'un corps en pixels par seconde." #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml @@ -44155,8 +44411,9 @@ msgstr "" #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml +#, fuzzy msgid "The timestep (delta) used for the simulation." -msgstr "" +msgstr "L'étape de temps (delta) utilisé pour la simulation." #: doc/classes/Physics2DDirectBodyState.xml #: doc/classes/PhysicsDirectBodyState.xml @@ -44326,7 +44583,7 @@ msgstr "" #: doc/classes/Physics2DServer.xml msgid "Server interface for low-level 2D physics access." -msgstr "" +msgstr "L'interface du serveur pour l'accès à la physique 2D en bas niveau." #: doc/classes/Physics2DServer.xml #, fuzzy @@ -45280,9 +45537,8 @@ msgid "" msgstr "" #: doc/classes/PhysicsDirectBodyState.xml -#, fuzzy msgid "The body's linear velocity in units per second." -msgstr "La vitesse linéaire du corps." +msgstr "La vitesse linéaire du corps en unités par secondes." #: doc/classes/PhysicsDirectSpaceState.xml msgid "Direct access object to a space in the [PhysicsServer]." @@ -45710,29 +45966,24 @@ msgid "" msgstr "" #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Joint] is a [PinJoint]." -msgstr "Le [Joint3D] est un [PinJoint3D]." +msgstr "Le [Joint] est un [PinJoint]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Joint] is a [HingeJoint]." -msgstr "Le [Joint3D] est un [HingeJoint3D]." +msgstr "Le [Joint] est un [HingeJoint]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Joint] is a [SliderJoint]." -msgstr "Le [Joint3D] est un [SliderJoint3D]." +msgstr "Le [Joint] est un [SliderJoint]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Joint] is a [ConeTwistJoint]." -msgstr "Le [Joint3D] est un [ConeTwistJoint3D]." +msgstr "Le [Joint] est un [ConeTwistJoint]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Joint] is a [Generic6DOFJoint]." -msgstr "Le [Joint3D] est un [Generic6DOFJoint3D]." +msgstr "Le [Joint] est un [Generic6DOFJoint]." #: doc/classes/PhysicsServer.xml msgid "" @@ -45949,49 +46200,40 @@ msgid "" msgstr "" #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [PlaneShape]." -msgstr "Le [Shape3D] est un [RayShape3D]." +msgstr "Le [Shape] est un [PlaneShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [RayShape]." -msgstr "Le [Shape3D] est un [RayShape3D]." +msgstr "Le [Shape] est un [RayShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [SphereShape]." -msgstr "La [Shape3D] est une [SphereShape3D]." +msgstr "La [Shape] est une [SphereShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [BoxShape]." -msgstr "La [Shape3D] est une [BoxShape3D]." +msgstr "La [Shape] est une [BoxShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [CapsuleShape]." -msgstr "La [Shape3D] est une [CapsuleShape3D]." +msgstr "La [Shape] est une [CapsuleShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [CylinderShape]." -msgstr "La [Shape3D] est un [CylinderShape3D]." +msgstr "La [Shape] est un [CylinderShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [ConvexPolygonShape]." -msgstr "La [Shape3D] est un [ConvexPolygonShape3D]." +msgstr "La [Shape] est un [ConvexPolygonShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [ConcavePolygonShape]." -msgstr "La [Shape3D] est un [ConvexPolygonShape3D]." +msgstr "La [Shape] est un [ConcavePolygonShape]." #: doc/classes/PhysicsServer.xml -#, fuzzy msgid "The [Shape] is a [HeightMapShape]." -msgstr "La [Shape3D] est un [HeightMapShape3D]." +msgstr "La [Shape] est un [HeightMapShape]." #: doc/classes/PhysicsShapeQueryParameters.xml msgid "Parameters to be sent to a 3D shape physics query." @@ -46119,6 +46361,8 @@ msgid "" "Returns [code]true[/code] if [code]point[/code] is inside the plane. " "Comparison uses a custom minimum [code]epsilon[/code] threshold." msgstr "" +"Retourn [code]true[/code] si [code]point[/code] est à l'intérieur du plan. " +"La comparaison se fait sous le seuil [code]epsilon[/code]." #: doc/classes/Plane.xml msgid "" @@ -46400,7 +46644,6 @@ msgid "" msgstr "" #: doc/classes/PoolByteArray.xml -#, fuzzy msgid "A pooled [Array] of bytes." msgstr "Un [Array] compacté d'octets." @@ -46520,9 +46763,8 @@ msgid "" msgstr "" #: doc/classes/PoolColorArray.xml -#, fuzzy msgid "A pooled [Array] of [Color]." -msgstr "Un [Array] compacté d'octets." +msgstr "Un [Array] compacté de [Color]." #: doc/classes/PoolColorArray.xml msgid "" @@ -46544,7 +46786,7 @@ msgstr "Ajoute un [PackedVector3Array] à la fin de ce tableau." #: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml msgid "Appends a value to the array." -msgstr "" +msgstr "Ajoute une valeur à la fin du tableau." #: doc/classes/PoolColorArray.xml doc/classes/PoolStringArray.xml #: doc/classes/PoolVector2Array.xml doc/classes/PoolVector3Array.xml @@ -46631,9 +46873,8 @@ msgid "Changes the float at the given index." msgstr "" #: doc/classes/PoolStringArray.xml -#, fuzzy msgid "A pooled [Array] of [String]." -msgstr "Un [Array] compacté d'octets." +msgstr "Un [Array] compacté de [String]." #: doc/classes/PoolStringArray.xml msgid "" @@ -46662,16 +46903,15 @@ msgstr "Retourne le [WebSocketPeer] associé au [code]peer_id[/code] donné." #: doc/classes/PoolStringArray.xml msgid "Appends a string element at end of the array." -msgstr "" +msgstr "Ajoute une chaine de caractère à la fin du tableau." #: doc/classes/PoolStringArray.xml msgid "Changes the [String] at the given index." msgstr "" #: doc/classes/PoolVector2Array.xml -#, fuzzy msgid "A pooled [Array] of [Vector2]." -msgstr "Un [Array] compacté d'octets." +msgstr "Un [Array] compacté de [Vector2]." #: doc/classes/PoolVector2Array.xml msgid "" @@ -46705,9 +46945,8 @@ msgid "Changes the [Vector2] at the given index." msgstr "Modifie le [Vector2] à l’index donné." #: doc/classes/PoolVector3Array.xml -#, fuzzy msgid "A pooled [Array] of [Vector3]." -msgstr "Un [Array] compacté d'octets." +msgstr "Un [Array] compacté de [Vector3]." #: doc/classes/PoolVector3Array.xml msgid "" @@ -46819,9 +47058,8 @@ msgstr "" "La notification est envoyée dès que la fenêtre contextuelle est masquée." #: doc/classes/PopupDialog.xml -#, fuzzy msgid "Base class for popup dialogs." -msgstr "Classe de base pour les séparateurs." +msgstr "Classe parente des fenêtres de dialogue." #: doc/classes/PopupDialog.xml msgid "" @@ -49651,6 +49889,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -49661,8 +49910,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -50181,14 +50432,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -50317,8 +50573,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -50814,24 +51070,32 @@ msgid "" "W component of the quaternion (real part).\n" "Quaternion components should usually not be manipulated directly." msgstr "" +"Le composant W du quaternion (partie réelle).\n" +"Les composants des quaternions ne devraient pas être modifié directement." #: doc/classes/Quat.xml msgid "" "X component of the quaternion (imaginary [code]i[/code] axis part).\n" "Quaternion components should usually not be manipulated directly." msgstr "" +"Le composant X du quaternion (partie de l'axe imaginaire [code]i[/code]).\n" +"Les composants des quaternions ne devraient pas être modifié directement." #: doc/classes/Quat.xml msgid "" "Y component of the quaternion (imaginary [code]j[/code] axis part).\n" "Quaternion components should usually not be manipulated directly." msgstr "" +"Le composant Y du quaternion (partie de l'axe imaginaire [code]j[/code]).\n" +"Les composants des quaternions ne devraient pas être modifié directement." #: doc/classes/Quat.xml msgid "" "Z component of the quaternion (imaginary [code]k[/code] axis part).\n" "Quaternion components should usually not be manipulated directly." msgstr "" +"Le composant Z du quaternion (partie de l'axe imaginaire [code]k[/code]).\n" +"Les composants des quaternions ne devraient pas être modifié directement." #: doc/classes/Quat.xml msgid "" @@ -51997,7 +52261,7 @@ msgstr "" #: doc/classes/ResourceFormatLoader.xml msgid "Loads a specific resource type from a file." -msgstr "" +msgstr "Charge un type de ressource spécifique depuis un fichier." #: doc/classes/ResourceFormatLoader.xml msgid "" @@ -52068,7 +52332,7 @@ msgstr "" #: doc/classes/ResourceFormatSaver.xml msgid "Saves a specific resource type to a file." -msgstr "" +msgstr "Enregistre un type de ressource spécifique dans un fichier." #: doc/classes/ResourceFormatSaver.xml msgid "" @@ -52094,6 +52358,8 @@ msgstr "" #: doc/classes/ResourceFormatSaver.xml msgid "Returns whether the given resource object can be saved by this saver." msgstr "" +"Retourne quand une ressource donnée peut être enregistrée par ce " +"enregistreur." #: doc/classes/ResourceFormatSaver.xml msgid "" @@ -52442,7 +52708,7 @@ msgstr "" #: doc/classes/RichTextLabel.xml msgid "BBCode in RichTextLabel" -msgstr "" +msgstr "BBCode dans RichTextLabel" #: doc/classes/RichTextLabel.xml msgid "GUI Rich Text/BBcode Demo" @@ -52475,6 +52741,8 @@ msgstr "" #: doc/classes/RichTextLabel.xml msgid "Clears the tag stack and sets [member bbcode_text] to an empty string." msgstr "" +"Efface la pile des marqueurs et définit [member bbcode_text] avec un texte " +"vide." #: doc/classes/RichTextLabel.xml msgid "Returns the height of the content." @@ -52586,22 +52854,27 @@ msgstr "" #: doc/classes/RichTextLabel.xml msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack." msgstr "" +"Ajouter un marqueur [code][font][/code] avec une police monospace dans la " +"pile des marqueurs." #: doc/classes/RichTextLabel.xml msgid "Adds a [code][font][/code] tag with a normal font to the tag stack." msgstr "" +"Ajouter un marqueur [code][font][/code] avec une police normale dans la pile " +"des marqueurs." #: doc/classes/RichTextLabel.xml msgid "Adds a [code][s][/code] tag to the tag stack." -msgstr "" +msgstr "Ajouter un marqueur [code][s][/code] dans la pile des marqueurs." #: doc/classes/RichTextLabel.xml msgid "Adds a [code][table=columns][/code] tag to the tag stack." msgstr "" +"Ajouter un marqueur [code][table=columns][/code] dans la pile des marqueurs." #: doc/classes/RichTextLabel.xml msgid "Adds a [code][u][/code] tag to the tag stack." -msgstr "" +msgstr "Ajouter un marqueur [code][u][/code] dans la pile des marqueurs." #: doc/classes/RichTextLabel.xml msgid "" @@ -54298,6 +54571,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -54491,9 +54771,8 @@ msgid "" msgstr "" #: doc/classes/SceneTreeTimer.xml -#, fuzzy msgid "The time remaining (in seconds)." -msgstr "Le temps restant." +msgstr "Le temps restant (en secondes)." #: doc/classes/SceneTreeTimer.xml doc/classes/Timer.xml #, fuzzy @@ -55410,9 +55689,8 @@ msgid "" msgstr "" #: doc/classes/Slider.xml -#, fuzzy msgid "Emitted when dragging is started." -msgstr "Émis lorsque le défilement est commencé." +msgstr "Émis lorsque le glissement de la souris a commencé." #: doc/classes/SliderJoint.xml msgid "Slider between two PhysicsBodies in 3D." @@ -55574,6 +55852,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -57451,7 +57741,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -57465,7 +57755,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -58184,10 +58474,13 @@ msgstr "" "chaîne de caractères donnée." #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" -"Retourne les bigrammes (paires de lettres consécutives) de cette chaîne de " -"caractères." #: doc/classes/String.xml #, fuzzy @@ -58489,7 +58782,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -58512,11 +58814,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -58565,14 +58880,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -58742,8 +59059,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -60296,6 +60621,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Retourne le nombre de pistes dans l'animation." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Retourne la position du contact sur le collisionneur." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Renvoie le nombre de lignes visibles." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -60557,13 +60892,10 @@ msgid "" msgstr "" #: doc/classes/TextEdit.xml -#, fuzzy msgid "" "If [code]true[/code], shortcut keys for context menu items are enabled, even " "if the context menu is disabled." msgstr "" -"Si [code]true[/code] (vrai), les nÅ“uds enfants sont triés, sinon le tri est " -"désactivé." #: doc/classes/TextEdit.xml msgid "" @@ -61212,26 +61544,28 @@ msgstr "" msgid "" "Multiplies the color of the bar's [code]texture_progress[/code] texture." msgstr "" +"Multiplie la couleur de la texture [code]texture_progress[/code] de la barre." #: doc/classes/TextureProgress.xml msgid "Multiplies the color of the bar's [code]texture_under[/code] texture." msgstr "" +"Multiplie la couleur de la texture [code]texture_under[/code] de la barre." #: doc/classes/TextureProgress.xml msgid "The [member texture_progress] fills from left to right." -msgstr "" +msgstr "La [member texture_progress] remplis de gauche à droite." #: doc/classes/TextureProgress.xml msgid "The [member texture_progress] fills from right to left." -msgstr "" +msgstr "La [member texture_progress] remplis de droite à gauche." #: doc/classes/TextureProgress.xml msgid "The [member texture_progress] fills from top to bottom." -msgstr "" +msgstr "La [member texture_progress] remplis de haut en bas." #: doc/classes/TextureProgress.xml msgid "The [member texture_progress] fills from bottom to top." -msgstr "" +msgstr "La [member texture_progress] remplis de bas en haut." #: doc/classes/TextureProgress.xml msgid "" @@ -61380,6 +61714,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -61528,6 +61868,19 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" +"Retourne l'index de l'élément avec l'identifiant [code]id[/code] spécifié." + +#: doc/classes/Theme.xml #, fuzzy msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " @@ -61585,6 +61938,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Retourne [code]true[/code] si la piste donnée est importée. Sinon retourne " +"[code]false[/code]." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -61681,6 +62043,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61731,7 +62107,7 @@ msgstr "" #: doc/classes/Thread.xml msgid "Using multiple threads" -msgstr "" +msgstr "Utilisation de plusieurs threads" #: doc/classes/Thread.xml msgid "Thread-safe APIs" @@ -62458,7 +62834,7 @@ msgstr "" #: doc/classes/TileSet.xml msgid "Sets a shape for the tile, enabling collision." -msgstr "" +msgstr "Définit une forme pour la tuile, activant la collision." #: doc/classes/TileSet.xml msgid "Sets the offset of a tile's shape." @@ -62907,9 +63283,8 @@ msgid "The horizontal space between [ToolButton]'s icon and text." msgstr "L'espacement entre l'icône de l'élément et le texte." #: doc/classes/ToolButton.xml -#, fuzzy msgid "[Font] of the [ToolButton]'s text." -msgstr "[Font] du texte du [Button]." +msgstr "La [Font] du texte du [ToolButton]." #: doc/classes/ToolButton.xml #, fuzzy @@ -62930,9 +63305,8 @@ msgid "[StyleBox] used when the [ToolButton] is being hovered." msgstr "" #: doc/classes/ToolButton.xml -#, fuzzy msgid "Default [StyleBox] for the [ToolButton]." -msgstr "[StyleBox] par défaut pour le [Button]." +msgstr "Le [StyleBox] par défaut pour le [ToolButton]." #: doc/classes/ToolButton.xml #, fuzzy @@ -62962,7 +63336,7 @@ msgstr "" #: doc/classes/TouchScreenButton.xml msgid "Returns [code]true[/code] if this button is currently pressed." -msgstr "" +msgstr "Retourne [code]true[/code] si le bouton est actuelle pressé." #: doc/classes/TouchScreenButton.xml msgid "The button's action. Actions can be handled with [InputEventAction]." @@ -63162,8 +63536,8 @@ msgid "" "The translation offset of the transform (column 3, the fourth column). " "Equivalent to array index [code]3[/code]." msgstr "" -"Le décalage de translation du transform (colonne 3, quatrième colonne). " -"Équivalent à l'index du tableau [code]3[/code]." +"Le décalage de translation de la transformation (colonne 3, quatrième " +"colonne). Équivalent à l'index du tableau [code]3[/code]." #: doc/classes/Transform.xml msgid "" @@ -63173,17 +63547,15 @@ msgstr "" #: doc/classes/Transform.xml msgid "[Transform] with mirroring applied perpendicular to the YZ plane." -msgstr "" -"[Transform] avec mise en miroir appliquée perpendiculairement au plan YZ." +msgstr "[Transform] avec effet miroir appliqué perpendiculairement au plan YZ." #: doc/classes/Transform.xml msgid "[Transform] with mirroring applied perpendicular to the XZ plane." -msgstr "[Transform] avec un miroir appliqué perpendiculairement au plan XZ." +msgstr "[Transform] avec effet miroir appliqué perpendiculairement au plan XZ." #: doc/classes/Transform.xml msgid "[Transform] with mirroring applied perpendicular to the XY plane." -msgstr "" -"[Transform] avec mise en miroir appliquée perpendiculairement au plan XY." +msgstr "[Transform] avec effet miroir appliqué perpendiculairement au plan XY." #: doc/classes/Transform2D.xml msgid "2D transformation (2×3 matrix)." @@ -63864,7 +64236,7 @@ msgstr "" #: doc/classes/Tree.xml msgid "[StyleBox] used when the [Tree] is being focused." -msgstr "" +msgstr "Le [StyleBox] utilisé quand le [Tree] a actuellement le focus." #: doc/classes/Tree.xml msgid "[StyleBox] used when a button in the tree is pressed." @@ -63933,7 +64305,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -63980,10 +64352,9 @@ msgstr "" "est préssé. Voir [enum JoyButtonList]." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Sélectionne la colonne [code]column[/code]." #: doc/classes/TreeItem.xml #, fuzzy @@ -65373,11 +65744,8 @@ msgid "The vertical space between the [VBoxContainer]'s elements." msgstr "" #: doc/classes/Vector2.xml -#, fuzzy msgid "Vector used for 2D math." -msgstr "" -"Vecteur utilisé pour les mathématiques 2D utilisant des coordonnées " -"d'entiers." +msgstr "Vecteur utilisé en 2D." #: doc/classes/Vector2.xml msgid "" @@ -65672,6 +66040,8 @@ msgid "" "Infinity vector, a vector with all components set to [constant @GDScript." "INF]." msgstr "" +"Le vecteur infini, un vecteur avec tous ses composants définit à [constant " +"@GDScript.INF]." #: doc/classes/Vector2.xml msgid "Left unit vector. Represents the direction of left." @@ -65690,10 +66060,8 @@ msgid "Down unit vector. Y is down in 2D, so this vector points +Y." msgstr "" #: doc/classes/Vector3.xml -#, fuzzy msgid "Vector used for 3D math." -msgstr "" -"Vecteur utilisé pour les mathématiques 3D à l’aide de coordonnées d'entiers." +msgstr "Vecteur utilisé en 3D." #: doc/classes/Vector3.xml msgid "" @@ -65785,6 +66153,8 @@ msgid "" "Rotates this vector around a given axis by [code]phi[/code] radians. The " "axis must be a normalized vector." msgstr "" +"Pivote ce vecteur autour de l'axe donné par [code]phi[/code] radians. L'axe " +"donné doit être normalisé." #: doc/classes/Vector3.xml msgid "" @@ -68197,9 +68567,8 @@ msgid "A Visual Script node returning a constant from [@GlobalScope]." msgstr "Un nÅ“ud Visual Script utilisé pour annoter le script." #: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml -#, fuzzy msgid "The constant to be used." -msgstr "Le type de la constante." +msgstr "La constante à utiliser." #: modules/visual_script/doc_classes/VisualScriptIndexGet.xml #, fuzzy @@ -68249,9 +68618,8 @@ msgid "State of the action to check. See [enum Mode] for options." msgstr "La fonction à calculer. Voir [enum Function] pour les options." #: modules/visual_script/doc_classes/VisualScriptInputAction.xml -#, fuzzy msgid "[code]True[/code] if action is pressed." -msgstr "Si [code]true[/code], le filtrage est activé." +msgstr "Si [code]true[/code], l'action est pressée." #: modules/visual_script/doc_classes/VisualScriptInputAction.xml #, fuzzy @@ -69208,7 +69576,7 @@ msgstr "" #: doc/classes/VisualServer.xml #, fuzzy msgid "Sets clipping for the [CanvasItem]." -msgstr "Définit l’index du [CanvasItem]." +msgstr "Définit la coupure du [CanvasItem]." #: doc/classes/VisualServer.xml msgid "Sets the [CanvasItem] to copy a rect to the backbuffer." @@ -70347,9 +70715,8 @@ msgid "" msgstr "" #: doc/classes/VisualServer.xml -#, fuzzy msgid "Sets a material's line width." -msgstr "Définit la priorité de rendu d’un matériau." +msgstr "Définit l'épaisseur des lignes du matériau." #: doc/classes/VisualServer.xml msgid "Sets an object's next material." @@ -70434,9 +70801,8 @@ msgid "Sets a mesh's custom aabb." msgstr "Définit l’aabb personnalisé d’un maillage." #: doc/classes/VisualServer.xml -#, fuzzy msgid "Returns a mesh's surface's aabb." -msgstr "Retourne l’aabb personnalisé d’un maillage." +msgstr "Retourne l’aabb de la surface d'un maillage." #: doc/classes/VisualServer.xml #, fuzzy @@ -71962,7 +72328,7 @@ msgstr "" #: doc/classes/VisualServer.xml msgid "Debug draw is disabled. Default setting." -msgstr "L'affichage de débogage est désactivé. La valeur par défaut." +msgstr "L'affichage de débogage est désactivé. C'est la valeur par défaut." #: doc/classes/VisualServer.xml #, fuzzy @@ -72045,8 +72411,10 @@ msgid "" msgstr "" #: doc/classes/VisualServer.xml +#, fuzzy msgid "Allows the instance to be used in baked lighting." msgstr "" +"Autorise une instance à pouvoir être utilisé pour le baking des lumières." #: doc/classes/VisualServer.xml msgid "When set, manually requests to draw geometry on next frame." @@ -72070,11 +72438,15 @@ msgid "" "Disable backface culling when rendering the shadow of the object. This is " "slightly slower but may result in more correct shadows." msgstr "" +"Désactiver le culling des faces arrières lors du rendu de l'ombre de " +"l'objet. Ceci est légèrement plus lent mais peut permettre d'obtenir de " +"meilleures ombres." #: doc/classes/VisualServer.xml msgid "" "Only render the shadows from the object. The object itself will not be drawn." msgstr "" +"N'afficher que l'ombre de l'objet. L'objet en lui-même ne sera pas affiché." #: doc/classes/VisualServer.xml msgid "The nine patch gets stretched where needed." @@ -72092,43 +72464,43 @@ msgstr "" #: doc/classes/VisualServer.xml msgid "Adds light color additive to the canvas." -msgstr "" +msgstr "Ajoute une couleur additive de lumière au canevas." #: doc/classes/VisualServer.xml msgid "Adds light color subtractive to the canvas." -msgstr "" +msgstr "Ajoute une couleur soustractive de lumière au canevas." #: doc/classes/VisualServer.xml msgid "The light adds color depending on transparency." -msgstr "" +msgstr "La lumière ajoute une couleur suivant la transparence." #: doc/classes/VisualServer.xml msgid "The light adds color depending on mask." -msgstr "" +msgstr "La lumière ajoute une couleur suivant un masque." #: doc/classes/VisualServer.xml msgid "Do not apply a filter to canvas light shadows." -msgstr "" +msgstr "Ne pas appliquer de lissage pour les ombres du canevas." #: doc/classes/VisualServer.xml msgid "Use PCF3 filtering to filter canvas light shadows." -msgstr "" +msgstr "Utiliser le filtre PCF3 pour lisser les ombres des canevas." #: doc/classes/VisualServer.xml msgid "Use PCF5 filtering to filter canvas light shadows." -msgstr "" +msgstr "Utiliser le filtre PCF5 pour lisser les ombres des canevas." #: doc/classes/VisualServer.xml msgid "Use PCF7 filtering to filter canvas light shadows." -msgstr "" +msgstr "Utiliser le filtre PCF7 pour lisser les ombres des canevas." #: doc/classes/VisualServer.xml msgid "Use PCF9 filtering to filter canvas light shadows." -msgstr "" +msgstr "Utiliser le filtre PCF9 pour lisser les ombres des canevas." #: doc/classes/VisualServer.xml msgid "Use PCF13 filtering to filter canvas light shadows." -msgstr "" +msgstr "Utiliser le filtre PCF13 pour lisser les ombres des canevas." #: doc/classes/VisualServer.xml msgid "Culling of the canvas occluder is disabled." @@ -72144,76 +72516,77 @@ msgstr "" #: doc/classes/VisualServer.xml msgid "The amount of objects in the frame." -msgstr "" +msgstr "Le quantité d'objet dans le trame." #: doc/classes/VisualServer.xml msgid "The amount of vertices in the frame." -msgstr "" +msgstr "Le quantité de sommets dans le trame." #: doc/classes/VisualServer.xml msgid "The amount of modified materials in the frame." -msgstr "" +msgstr "Le quantité de matériaux modifiés dans le trame." #: doc/classes/VisualServer.xml +#, fuzzy msgid "The amount of shader rebinds in the frame." -msgstr "" +msgstr "Le quantité de shaders reconnectés dans le trame." #: doc/classes/VisualServer.xml msgid "The amount of surface changes in the frame." -msgstr "" +msgstr "Le quantité de changements de surface dans le trame." #: doc/classes/VisualServer.xml msgid "The amount of draw calls in frame." -msgstr "" +msgstr "Le quantité d'appels de dessin dans le trame." #: doc/classes/VisualServer.xml -#, fuzzy msgid "The amount of 2d items in the frame." -msgstr "La quantité de voix dans l’effet." +msgstr "La quantité d'éléments 2D dans la trame." #: doc/classes/VisualServer.xml -#, fuzzy msgid "The amount of 2d draw calls in frame." -msgstr "Quantité de sommets dans l'image." +msgstr "La quantité d'appels de dessin 2D dans la trame." #: doc/classes/VisualServer.xml msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x." msgstr "" -"Le matériel supporte les shaders. Cette énumération est actuellement " +"L'appareil supporte les shaders. Cette énumération est actuellement " "inutilisée dans Godot 3.x." #: doc/classes/VisualServer.xml msgid "" "Hardware supports multithreading. This enum is currently unused in Godot 3.x." msgstr "" -"Le matériel supporte plusieurs fils d'exécution. Cette énumération est " +"L'appareil supporte plusieurs fils d'exécution. Cette énumération est " "actuellement inutilisée dans Godot 3.x." #: doc/classes/VisualServer.xml msgid "Use [Transform2D] to store MultiMesh transform." -msgstr "" +msgstr "Utiliser [Transform2D] pour stocker la transformation des MultiMesh." #: doc/classes/VisualServer.xml msgid "Use [Transform] to store MultiMesh transform." -msgstr "" +msgstr "Utiliser [Transform] pour stocker la transformation des MultiMesh." #: doc/classes/VisualServer.xml msgid "MultiMesh does not use per-instance color." -msgstr "" +msgstr "Le MultiMesh n'utilise pas de couleur par instance." #: doc/classes/VisualServer.xml msgid "" "MultiMesh color uses 8 bits per component. This packs the color into a " "single float." msgstr "" +"Le MultiMesh utilise un octet par composant de couleur. Une couleur entière " +"est donc stockée dans un nombre flottant (4 octets)." #: doc/classes/VisualServer.xml msgid "MultiMesh color uses a float per channel." -msgstr "" +msgstr "Le MultiMesh utilise un nombre flottant par composant de couleur." #: doc/classes/VisualServer.xml msgid "MultiMesh does not use custom data." -msgstr "" +msgstr "Le MultiMesh n'utilise pas de données personnalisées." #: doc/classes/VisualServer.xml msgid "" @@ -72224,6 +72597,8 @@ msgstr "" #: doc/classes/VisualServer.xml msgid "MultiMesh custom data uses a float per component." msgstr "" +"Les données personnalisés de MultiMesh qui utilisent un nombre flottant par " +"composant." #: doc/classes/VisualServer.xml msgid "Reflection probe will update reflections once and then stop." @@ -72237,19 +72612,19 @@ msgstr "" #: doc/classes/VisualServer.xml msgid "Draw particles in the order that they appear in the particles array." -msgstr "" +msgstr "Affiche les particules dans leur ordre dans la liste des particules." #: doc/classes/VisualServer.xml msgid "Sort particles based on their lifetime." -msgstr "" +msgstr "Trier les particules par durée de vie." #: doc/classes/VisualServer.xml msgid "Sort particles based on their distance to the camera." -msgstr "" +msgstr "Trier les particules suivant leur distance à la caméra." #: doc/classes/VisualServer.xml msgid "Use the clear color as background." -msgstr "" +msgstr "Utiliser la couleur d'effacement pour l'arrière-plan." #: doc/classes/VisualServer.xml msgid "Use a specified color as the background." @@ -72303,7 +72678,7 @@ msgstr "" #: doc/classes/VisualServer.xml msgid "Produces a subtle color disturbance around objects." -msgstr "" +msgstr "Produit une légère interférence des couleurs autour des objets." #: doc/classes/VisualServer.xml msgid "Shows the glow effect by itself without the underlying scene." @@ -72311,7 +72686,7 @@ msgstr "Affiche uniquement l'effet de lueur sans scène sous-jacente." #: doc/classes/VisualServer.xml msgid "Output color as they came in." -msgstr "" +msgstr "Affiche les couleurs telles quelles." #: doc/classes/VisualServer.xml msgid "Use the Reinhard tonemapper." @@ -75351,9 +75726,8 @@ msgid "" msgstr "" #: modules/webxr/doc_classes/WebXRInterface.xml -#, fuzzy msgid "Emitted when [member visibility_state] has changed." -msgstr "Émis lorsque [member frame] modifié." +msgstr "Émis lorsque [member visibility_state] modifié." #: modules/webxr/doc_classes/WebXRInterface.xml msgid "We don't know the the target ray mode." @@ -75374,9 +75748,8 @@ msgid "Target ray from touch screen, mouse or other tactile input device." msgstr "" #: doc/classes/WindowDialog.xml -#, fuzzy msgid "Base class for window dialogs." -msgstr "Classe de base pour les flux audio." +msgstr "Classe parente des fenêtres de dialogue." #: doc/classes/WindowDialog.xml msgid "" @@ -75394,19 +75767,16 @@ msgid "" msgstr "" #: doc/classes/WindowDialog.xml -#, fuzzy msgid "If [code]true[/code], the user can resize the window." -msgstr "Si [code]true[/code], le bouton \"add preset\" est activé." +msgstr "Si [code]true[/code], l'utilisateur peut redimensionner la fenêtre." #: doc/classes/WindowDialog.xml -#, fuzzy msgid "The text displayed in the window's title bar." -msgstr "Le texte affiché par le dialogue." +msgstr "Le texte affiché dans la barre de titre de la fenêtre." #: doc/classes/WindowDialog.xml -#, fuzzy msgid "The color of the title text." -msgstr "Couleur du texte du titre." +msgstr "La couleur du titre." #: doc/classes/WindowDialog.xml #, fuzzy @@ -75430,9 +75800,8 @@ msgid "The font used to draw the title." msgstr "La police utilisée pour le texte en gras." #: doc/classes/WindowDialog.xml -#, fuzzy msgid "The icon for the close button." -msgstr "Icône personnalisée pour le bouton de rechargement." +msgstr "L'icône personnalisée pour le bouton de fermeture." #: doc/classes/WindowDialog.xml msgid "" diff --git a/doc/translations/gl.po b/doc/translations/gl.po index 7138a7217c..a62aba930d 100644 --- a/doc/translations/gl.po +++ b/doc/translations/gl.po @@ -3330,6 +3330,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4840,7 +4849,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4865,7 +4874,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4874,7 +4883,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9485,26 +9494,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9662,6 +9655,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12737,6 +12740,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15573,8 +15588,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16325,6 +16341,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22996,7 +23031,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25098,8 +25148,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25369,7 +25420,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31904,7 +31960,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32284,8 +32345,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34125,6 +34190,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34138,6 +34212,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34180,6 +34266,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34231,6 +34327,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36528,6 +36636,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36698,6 +36825,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36798,6 +36940,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37048,6 +37198,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38035,8 +38191,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38826,7 +38982,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46668,6 +46836,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46678,8 +46857,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47192,14 +47373,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47328,8 +47514,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51266,6 +51452,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52519,6 +52712,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54354,7 +54559,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54368,7 +54573,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55041,7 +55246,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55304,7 +55514,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55327,11 +55546,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55380,14 +55612,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55557,8 +55791,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57047,6 +57289,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58084,6 +58334,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58224,6 +58480,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58272,6 +58539,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58367,6 +58640,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60540,7 +60827,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60581,9 +60868,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/hi.po b/doc/translations/hi.po index 4cc0d9ce5c..fee4b208a2 100644 --- a/doc/translations/hi.po +++ b/doc/translations/hi.po @@ -3329,6 +3329,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4839,7 +4848,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4864,7 +4873,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4873,7 +4882,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9484,26 +9493,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9661,6 +9654,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12736,6 +12739,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15572,8 +15587,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16324,6 +16340,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22995,7 +23030,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25097,8 +25147,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25368,7 +25419,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31903,7 +31959,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32283,8 +32344,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34124,6 +34189,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34137,6 +34211,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34179,6 +34265,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34230,6 +34326,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36527,6 +36635,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36697,6 +36824,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36797,6 +36939,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37047,6 +37197,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38034,8 +38190,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38825,7 +38981,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46667,6 +46835,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46677,8 +46856,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47191,14 +47372,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47327,8 +47513,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51265,6 +51451,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52518,6 +52711,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54353,7 +54558,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54367,7 +54572,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55040,7 +55245,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55303,7 +55513,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55326,11 +55545,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55379,14 +55611,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55556,8 +55790,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57046,6 +57288,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58083,6 +58333,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58223,6 +58479,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58271,6 +58538,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58366,6 +58639,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60539,7 +60826,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60580,9 +60867,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/hu.po b/doc/translations/hu.po index a60adef668..b0e78ab725 100644 --- a/doc/translations/hu.po +++ b/doc/translations/hu.po @@ -3347,6 +3347,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4857,7 +4866,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4882,7 +4891,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4891,7 +4900,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9502,26 +9511,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9679,6 +9672,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12754,6 +12757,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15590,8 +15605,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16342,6 +16358,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23013,7 +23048,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25115,8 +25165,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25386,7 +25437,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31921,7 +31977,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32301,8 +32362,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34142,6 +34207,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34155,6 +34229,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34197,6 +34283,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34248,6 +34344,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36545,6 +36653,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36715,6 +36842,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36815,6 +36957,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37065,6 +37215,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38052,8 +38208,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38843,7 +38999,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46685,6 +46853,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46695,8 +46874,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47209,14 +47390,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47345,8 +47531,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51283,6 +51469,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52536,6 +52729,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54371,7 +54576,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54385,7 +54590,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55058,7 +55263,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55321,7 +55531,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55344,11 +55563,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55397,14 +55629,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55574,8 +55808,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57064,6 +57306,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58101,6 +58351,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58241,6 +58497,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58289,6 +58556,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58384,6 +58657,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60557,7 +60844,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60598,9 +60885,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/id.po b/doc/translations/id.po index eb9fe2f029..dcc5c28d89 100644 --- a/doc/translations/id.po +++ b/doc/translations/id.po @@ -11,12 +11,13 @@ # Hilman Hazazi <hafizd.muhammad.kren.403@gmail.com>, 2021. # Stephen Gunawan Susilo <gunawanstephen@yahoo.com>, 2021. # Azizkhasyi 11 <azizkhasyi11@gmail.com>, 2021. +# zephyroths <ridho.hikaru@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2021-11-30 04:38+0000\n" -"Last-Translator: Azizkhasyi 11 <azizkhasyi11@gmail.com>\n" +"PO-Revision-Date: 2022-02-22 15:52+0000\n" +"Last-Translator: zephyroths <ridho.hikaru@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/id/>\n" "Language: id\n" @@ -24,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.10-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -85,7 +86,7 @@ msgstr "" #: doc/tools/make_rst.py msgid "Default" -msgstr "" +msgstr "Bawaan" #: doc/tools/make_rst.py msgid "Setter" @@ -3534,6 +3535,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5044,8 +5054,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Mengembalikan nilai hiperbolik tangen dari parameter." #: doc/classes/AnimationNode.xml msgid "" @@ -5069,7 +5080,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5078,7 +5089,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9689,26 +9700,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9866,6 +9861,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12942,6 +12947,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15778,8 +15795,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16530,6 +16548,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23205,7 +23242,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25309,8 +25361,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25580,7 +25633,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32116,7 +32174,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32496,8 +32559,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34337,6 +34404,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34350,6 +34426,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34392,6 +34480,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34443,6 +34541,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36754,6 +36864,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36924,6 +37053,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37024,6 +37168,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37274,6 +37426,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38261,8 +38419,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39052,7 +39210,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46911,6 +47081,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46921,8 +47102,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47435,14 +47618,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47571,8 +47759,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51509,6 +51697,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52762,6 +52957,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54597,7 +54804,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54611,7 +54818,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55286,7 +55493,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55549,7 +55761,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55572,11 +55793,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55625,14 +55859,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55802,8 +56038,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57294,6 +57538,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Mengembalikan nilai hiperbolik tangen dari parameter." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Mengembalikan nilai hiperbolik tangen dari parameter." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58331,6 +58585,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58471,6 +58731,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58519,6 +58790,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58614,6 +58891,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60788,7 +61079,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60829,9 +61120,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/is.po b/doc/translations/is.po index 2aae5d4390..80c026c0f8 100644 --- a/doc/translations/is.po +++ b/doc/translations/is.po @@ -3329,6 +3329,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4839,7 +4848,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4864,7 +4873,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4873,7 +4882,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9484,26 +9493,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9661,6 +9654,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12736,6 +12739,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15572,8 +15587,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16324,6 +16340,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22995,7 +23030,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25097,8 +25147,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25368,7 +25419,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31903,7 +31959,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32283,8 +32344,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34124,6 +34189,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34137,6 +34211,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34179,6 +34265,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34230,6 +34326,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36527,6 +36635,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36697,6 +36824,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36797,6 +36939,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37047,6 +37197,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38034,8 +38190,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38825,7 +38981,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46667,6 +46835,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46677,8 +46856,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47191,14 +47372,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47327,8 +47513,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51265,6 +51451,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52518,6 +52711,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54353,7 +54558,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54367,7 +54572,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55040,7 +55245,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55303,7 +55513,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55326,11 +55545,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55379,14 +55611,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55556,8 +55790,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57046,6 +57288,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58083,6 +58333,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58223,6 +58479,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58271,6 +58538,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58366,6 +58639,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60539,7 +60826,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60580,9 +60867,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/it.po b/doc/translations/it.po index 0e6f99b17f..dcafac6cc5 100644 --- a/doc/translations/it.po +++ b/doc/translations/it.po @@ -23,11 +23,12 @@ # ZeroKun265 <davidegiambirtone265@gmail.com>, 2021. # Andrea Montagna <fullmontis@gmail.com>, 2021. # Andrea Leganza <neogene@gmail.com>, 2021. +# Federico Caprini <caprinifede@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-01-31 08:55+0000\n" +"PO-Revision-Date: 2022-02-22 15:52+0000\n" "Last-Translator: Mirko <miknsop@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/it/>\n" @@ -85,11 +86,12 @@ msgstr "Descrizioni delle proprietà " #: doc/tools/make_rst.py msgid "Inherits:" -msgstr "" +msgstr "Eredita:" #: doc/tools/make_rst.py +#, fuzzy msgid "Inherited By:" -msgstr "" +msgstr "Ereditato da:" #: doc/tools/make_rst.py msgid "(overrides %s)" @@ -105,7 +107,7 @@ msgstr "" #: doc/tools/make_rst.py msgid "value" -msgstr "" +msgstr "valore" #: doc/tools/make_rst.py msgid "Getter" @@ -115,6 +117,8 @@ msgstr "" msgid "" "This method should typically be overridden by the user to have any effect." msgstr "" +"Questo metodo di solito dovrebbe essere riscritto dall'utente per aver " +"qualche effetto." #: doc/tools/make_rst.py msgid "" @@ -136,6 +140,8 @@ msgid "" "This method doesn't need an instance to be called, so it can be called " "directly using the class name." msgstr "" +"Questo metodo non necessita di alcun'istanza per essere chiamato, quindi può " +"essere chiamato direttamente usando il nome della classe." #: doc/tools/make_rst.py msgid "" @@ -4260,6 +4266,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5774,8 +5789,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Restituisce la tangente del parametro." #: doc/classes/AnimationNode.xml msgid "" @@ -5799,7 +5815,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5808,7 +5824,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -10442,26 +10458,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10619,6 +10619,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13709,6 +13719,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16610,8 +16632,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -17392,6 +17415,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -24080,7 +24122,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -26187,8 +26244,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -26458,7 +26516,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -33028,7 +33091,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -33408,8 +33476,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -35251,6 +35323,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -35264,6 +35345,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -35306,6 +35399,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -35357,6 +35460,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -37253,7 +37368,7 @@ msgstr "" #: doc/classes/Node.xml msgid "Nodes and Scenes" -msgstr "" +msgstr "Nodi e scene" #: doc/classes/Node.xml msgid "All Demos" @@ -37690,6 +37805,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37860,6 +37994,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37960,6 +38109,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -38210,6 +38367,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -39204,8 +39367,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39999,7 +40162,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47884,6 +48059,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47894,8 +48080,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48408,14 +48596,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48544,8 +48737,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -52492,6 +52685,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53747,6 +53947,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -55587,7 +55799,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55601,7 +55813,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -56278,7 +56490,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56542,7 +56759,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56565,11 +56791,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56618,14 +56857,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56795,8 +57036,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -58294,6 +58543,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Restituisce l'angolo al vettore dato, in radianti." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Restituisce il valore opposto del parametro." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Restituisce il resto dei due vettori." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -59346,6 +59605,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -59488,6 +59753,18 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero." + +#: doc/classes/Theme.xml #, fuzzy msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " @@ -59543,6 +59820,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Ritorna [code]true[/code] se l'impostazione specificata da [code]name[/code] " +"esiste, [code]false[/code] altrimenti." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -59639,6 +59925,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61819,7 +62119,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61862,10 +62162,9 @@ msgid "" msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/ja.po b/doc/translations/ja.po index a3017d5928..ddb9eb6efe 100644 --- a/doc/translations/ja.po +++ b/doc/translations/ja.po @@ -4305,6 +4305,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -6246,7 +6255,8 @@ msgstr "" "㯠[code]true[/code] ã‚’è¿”ã™ã‚ˆã†ã«ã—ã¾ã™ã€‚" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +#, fuzzy +msgid "Returns whether the given path is filtered." msgstr "" "指定ã—ãŸãƒ‘スãŒãƒ•ィルタリングã•れã¦ã„れ㰠[code]true[/code] ã‚’è¿”ã—ã¾ã™ã€‚" @@ -6280,8 +6290,9 @@ msgid "Adds or removes a path for the filter." msgstr "ã“ã®ãƒ•ィルタã®ãƒ‘ã‚¹ã‚’è¿½åŠ ã‚ã‚‹ã„ã¯é™¤åŽ»ã—ã¾ã™ã€‚" #: doc/classes/AnimationNode.xml +#, fuzzy msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" "カスタムパラメータをè¨å®šã—ã¾ã™ã€‚リソースã¯ãƒ„リーやシーン全体ã§å†åˆ©ç”¨ã§ãã‚‹ãŸ" @@ -6292,7 +6303,8 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "ã‚‚ã— [code]true[/code] ã§ã‚れã°ã€ãƒ•ã‚£ãƒ«ã‚¿ãƒªãƒ³ã‚°ã¯æœ‰åйã«ãªã‚Šã¾ã™ã€‚" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +#, fuzzy +msgid "Emitted when the node was removed from the graph." msgstr "グラフã‹ã‚‰ãƒŽãƒ¼ãƒ‰ãŒé™¤åŽ»ã•れãŸéš›ã«ç™ºä¿¡ã•れã¾ã™ã€‚" #: doc/classes/AnimationNode.xml @@ -12163,29 +12175,10 @@ msgstr "" "ãƒ•ã‚§ã‚¯ãƒˆã‚’è¿½åŠ ã—ã¾ã™ã€‚" #: doc/classes/AudioServer.xml -#, fuzzy -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" -"ç¾åœ¨ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªå…¥åŠ›ç”¨ãƒ‡ãƒã‚¤ã‚¹ã®åå‰ã§ã™ ([method capture_get_device_list] ã‚’" -"å‚ç…§)。" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "ã‚·ã‚¹ãƒ†ãƒ ä¸Šã§æ¤œå‡ºã•れãŸã™ã¹ã¦ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªå…¥åŠ›ãƒ‡ãƒã‚¤ã‚¹ã®åå‰ã‚’è¿”ã—ã¾ã™ã€‚" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "利用å¯èƒ½ãªãƒã‚¹ã¨ã‚¨ãƒ•ェクトを使用ã—㦠[AudioBusLayout] を生æˆã—ã¾ã™ã€‚" @@ -12374,6 +12367,16 @@ msgstr "利用å¯èƒ½ãªã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒã‚¹ã®æ•°ã€‚" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -15740,6 +15743,24 @@ msgid "Returns the RID of the canvas used by this layer." msgstr "" #: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" +"é…列をクリアã—ã¾ã™ã€‚ã“れã¯ã€[code]0[/code]ã®ã‚µã‚¤ã‚ºã§[method resize]を使用ã™ã‚‹" +"ã®ã¨åŒã˜ã§ã™ã€‚" + +#: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" +"é…列をクリアã—ã¾ã™ã€‚ã“れã¯ã€[code]0[/code]ã®ã‚µã‚¤ã‚ºã§[method resize]を使用ã™ã‚‹" +"ã®ã¨åŒã˜ã§ã™ã€‚" + +#: doc/classes/CanvasLayer.xml msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." @@ -18634,8 +18655,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -19416,6 +19438,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -26178,7 +26219,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -28287,8 +28343,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -28568,7 +28625,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -35187,7 +35249,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -35576,8 +35643,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -37427,6 +37498,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -37440,6 +37520,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -37482,6 +37574,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -37533,6 +37635,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -39889,6 +40003,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -40059,6 +40192,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -40159,6 +40307,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -40409,6 +40565,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -41402,8 +41564,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -42199,7 +42361,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -50135,6 +50309,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -50145,8 +50330,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -50659,14 +50846,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -50795,8 +50987,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -54770,6 +54962,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -56034,6 +56233,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -58150,7 +58361,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -58164,7 +58375,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -58855,7 +59066,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -59122,7 +59338,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -59145,11 +59370,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -59198,14 +59436,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -59375,8 +59615,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -60886,6 +61134,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "アニメーションã®ãƒˆãƒ©ãƒƒã‚¯æ•°ã‚’è¿”ã—ã¾ã™ã€‚" #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "指定ã—ãŸãƒˆãƒ©ãƒƒã‚¯ã®ã‚ー数を返ã—ã¾ã™ã€‚" + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "ブレンド空間内ã®ä¸‰è§’å½¢ã®æ•°ã‚’è¿”ã—ã¾ã™ã€‚" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -61950,6 +62208,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -62096,6 +62360,18 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "与ãˆã‚‰ã‚ŒãŸ [code]id[/code] ã«ç´ã¥ã‘られãŸç‚¹ã®ä½ç½®ã‚’è¿”ã—ã¾ã™ã€‚" + +#: doc/classes/Theme.xml #, fuzzy msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " @@ -62152,6 +62428,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"指定ã—ãŸãƒˆãƒ©ãƒƒã‚¯ãŒã‚¤ãƒ³ãƒãƒ¼ãƒˆã•れã¦ã„ã‚‹å ´åˆã€ [code]true[/code] ã‚’è¿”ã—ã¾ã™ã€‚ã" +"ã†ã§ãªã‘れã°ã€ [code]false[/code] ã‚’è¿”ã—ã¾ã™ã€‚" + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -62248,6 +62533,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -64436,7 +64735,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -64483,10 +64782,9 @@ msgstr "" "定ã—ã¾ã™ã€‚" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "[code]bus_idx[/code] ã«ã‚ã‚‹ãƒã‚¹ã®ã‚¨ãƒ•ェクト数を返ã—ã¾ã™ã€‚" #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/ko.po b/doc/translations/ko.po index 465371a39f..d4b782b0c0 100644 --- a/doc/translations/ko.po +++ b/doc/translations/ko.po @@ -3456,6 +3456,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4967,8 +4976,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "ë§¤ê°œë³€ìˆ˜ì˜ íƒ„ì 트 ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤." #: doc/classes/AnimationNode.xml msgid "" @@ -4992,7 +5002,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5001,7 +5011,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9614,26 +9624,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9791,6 +9785,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12872,6 +12876,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15737,8 +15753,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16495,6 +16512,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23235,7 +23271,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25340,8 +25391,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25611,7 +25663,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32159,7 +32216,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32539,8 +32601,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34381,6 +34447,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34394,6 +34469,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34436,6 +34523,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34487,6 +34584,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36934,6 +37043,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37104,6 +37232,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37204,6 +37347,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37454,6 +37605,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38442,8 +38599,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39236,7 +39393,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47101,6 +47270,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47111,8 +47291,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47625,14 +47807,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47761,8 +47948,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51700,6 +51887,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52953,6 +53147,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54788,7 +54994,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54802,7 +55008,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55477,7 +55683,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55740,7 +55951,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55763,11 +55983,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55816,14 +56049,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55993,8 +56228,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57488,6 +57731,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì½”ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ë°˜ëŒ€ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "ë‘ ë²¡í„°ì˜ ë‚˜ë¨¸ì§€ë¥¼ 반환합니다." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58526,6 +58779,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58666,6 +58925,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "ë‘ ë²¡í„°ì˜ ë‚˜ë¨¸ì§€ë¥¼ 반환합니다." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58714,6 +58985,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58809,6 +59086,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60985,7 +61276,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61027,10 +61318,9 @@ msgid "" msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/lv.po b/doc/translations/lv.po index a3bff3b9e9..97a0990d75 100644 --- a/doc/translations/lv.po +++ b/doc/translations/lv.po @@ -3344,6 +3344,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4854,7 +4863,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4879,7 +4888,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4888,7 +4897,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9499,26 +9508,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9676,6 +9669,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12751,6 +12754,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15587,8 +15602,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16339,6 +16355,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23013,7 +23048,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25115,8 +25165,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25386,7 +25437,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31921,7 +31977,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32301,8 +32362,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34142,6 +34207,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34155,6 +34229,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34197,6 +34283,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34248,6 +34344,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36545,6 +36653,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36715,6 +36842,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36815,6 +36957,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37065,6 +37215,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38052,8 +38208,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38843,7 +38999,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46685,6 +46853,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46695,8 +46874,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47209,14 +47390,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47345,8 +47531,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51283,6 +51469,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52536,6 +52729,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54371,7 +54576,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54385,7 +54590,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55058,7 +55263,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55321,7 +55531,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55344,11 +55563,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55397,14 +55629,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55574,8 +55808,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57064,6 +57306,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58101,6 +58351,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58241,6 +58497,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58289,6 +58556,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58384,6 +58657,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60557,7 +60844,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60598,9 +60885,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/mr.po b/doc/translations/mr.po index 5f8d2afd19..81a14f7e5a 100644 --- a/doc/translations/mr.po +++ b/doc/translations/mr.po @@ -3327,6 +3327,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4837,7 +4846,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4862,7 +4871,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4871,7 +4880,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9482,26 +9491,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9659,6 +9652,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12734,6 +12737,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15570,8 +15585,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16322,6 +16338,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22993,7 +23028,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25095,8 +25145,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25366,7 +25417,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31901,7 +31957,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32281,8 +32342,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34122,6 +34187,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34135,6 +34209,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34177,6 +34263,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34228,6 +34324,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36525,6 +36633,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36695,6 +36822,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36795,6 +36937,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37045,6 +37195,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38032,8 +38188,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38823,7 +38979,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46665,6 +46833,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46675,8 +46854,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47189,14 +47370,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47325,8 +47511,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51263,6 +51449,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52516,6 +52709,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54351,7 +54556,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54365,7 +54570,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55038,7 +55243,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55301,7 +55511,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55324,11 +55543,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55377,14 +55609,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55554,8 +55788,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57044,6 +57286,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58081,6 +58331,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58221,6 +58477,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58269,6 +58536,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58364,6 +58637,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60537,7 +60824,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60578,9 +60865,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/nb.po b/doc/translations/nb.po index 4358fdbfc5..8cd83ba148 100644 --- a/doc/translations/nb.po +++ b/doc/translations/nb.po @@ -3339,6 +3339,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4849,7 +4858,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4874,7 +4883,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4883,7 +4892,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9494,26 +9503,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9671,6 +9664,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12746,6 +12749,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15582,8 +15597,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16334,6 +16350,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23005,7 +23040,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25107,8 +25157,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25378,7 +25429,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31913,7 +31969,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32293,8 +32354,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34134,6 +34199,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34147,6 +34221,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34189,6 +34275,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34240,6 +34336,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36537,6 +36645,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36707,6 +36834,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36807,6 +36949,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37057,6 +37207,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38044,8 +38200,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38835,7 +38991,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46677,6 +46845,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46687,8 +46866,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47201,14 +47382,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47337,8 +47523,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51275,6 +51461,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52528,6 +52721,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54363,7 +54568,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54377,7 +54582,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55050,7 +55255,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55313,7 +55523,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55336,11 +55555,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55389,14 +55621,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55566,8 +55800,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57056,6 +57298,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58093,6 +58343,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58233,6 +58489,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58281,6 +58548,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58376,6 +58649,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60549,7 +60836,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60590,9 +60877,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/ne.po b/doc/translations/ne.po index d277e5da73..dcc8e21951 100644 --- a/doc/translations/ne.po +++ b/doc/translations/ne.po @@ -3327,6 +3327,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4837,7 +4846,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4862,7 +4871,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4871,7 +4880,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9482,26 +9491,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9659,6 +9652,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12734,6 +12737,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15570,8 +15585,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16322,6 +16338,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22993,7 +23028,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25095,8 +25145,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25366,7 +25417,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31901,7 +31957,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32281,8 +32342,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34122,6 +34187,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34135,6 +34209,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34177,6 +34263,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34228,6 +34324,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36525,6 +36633,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36695,6 +36822,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36795,6 +36937,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37045,6 +37195,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38032,8 +38188,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38823,7 +38979,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46665,6 +46833,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46675,8 +46854,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47189,14 +47370,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47325,8 +47511,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51263,6 +51449,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52516,6 +52709,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54351,7 +54556,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54365,7 +54570,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55038,7 +55243,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55301,7 +55511,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55324,11 +55543,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55377,14 +55609,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55554,8 +55788,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57044,6 +57286,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58081,6 +58331,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58221,6 +58477,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58269,6 +58536,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58364,6 +58637,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60537,7 +60824,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60578,9 +60865,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/nl.po b/doc/translations/nl.po index d725a7872e..7095944510 100644 --- a/doc/translations/nl.po +++ b/doc/translations/nl.po @@ -3378,6 +3378,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4888,7 +4897,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4913,7 +4922,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4922,7 +4931,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9533,26 +9542,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9710,6 +9703,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12785,6 +12788,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15621,8 +15636,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16373,6 +16389,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23047,7 +23082,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25149,8 +25199,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25420,7 +25471,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31955,7 +32011,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32335,8 +32396,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34176,6 +34241,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34189,6 +34263,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34231,6 +34317,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34282,6 +34378,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36579,6 +36687,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36749,6 +36876,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36849,6 +36991,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37099,6 +37249,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38086,8 +38242,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38877,7 +39033,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46719,6 +46887,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46729,8 +46908,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47243,14 +47424,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47379,8 +47565,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51318,6 +51504,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52571,6 +52764,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54406,7 +54611,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54420,7 +54625,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55093,7 +55298,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55356,7 +55566,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55379,11 +55598,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55432,14 +55664,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55609,8 +55843,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57099,6 +57341,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58136,6 +58386,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58276,6 +58532,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58324,6 +58591,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58419,6 +58692,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60592,7 +60879,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60633,9 +60920,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/pl.po b/doc/translations/pl.po index ef534544e1..615d1ff53f 100644 --- a/doc/translations/pl.po +++ b/doc/translations/pl.po @@ -11,7 +11,7 @@ # Larix_45 <milarczek2004@gmail.com>, 2020. # Mateusz Grzonka <alpinus4@gmail.com>, 2020. # MichaÅ‚ Borowiec <hello@michal-borowiec.pl>, 2021. -# Suchy Talerz <kacperkubis06@gmail.com>, 2021. +# Suchy Talerz <kacperkubis06@gmail.com>, 2021, 2022. # Seppo Day <piszczatowskis@gmail.com>, 2021. # cerkiewny <mstarzycki@gmail.com>, 2021. # Dominik Mielcarek <fogbpl@gmail.com>, 2021. @@ -19,12 +19,14 @@ # Tomasz Piechocki <t.piechocki@yahoo.com>, 2021. # DeiranZ <jwabik322@gmail.com>, 2022. # Piotr <promantix@gmail.com>, 2022. +# lewando54 <lewando54@gmail.com>, 2022. +# Katarzyna Twardowska <katarina.twardowska@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-01-19 22:07+0000\n" -"Last-Translator: Piotr <promantix@gmail.com>\n" +"PO-Revision-Date: 2022-03-08 06:54+0000\n" +"Last-Translator: Katarzyna Twardowska <katarina.twardowska@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/pl/>\n" "Language: pl\n" @@ -33,7 +35,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -98,7 +100,7 @@ msgstr "" #: doc/tools/make_rst.py msgid "Setter" -msgstr "" +msgstr "Setter" #: doc/tools/make_rst.py msgid "value" @@ -3800,6 +3802,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5311,8 +5322,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Zwraca tangens parametru." #: doc/classes/AnimationNode.xml msgid "" @@ -5336,7 +5348,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5345,7 +5357,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -5415,9 +5427,8 @@ msgstr "" #: doc/classes/AnimationNodeOneShot.xml doc/classes/AnimationNodeOutput.xml #: doc/classes/AnimationNodeTimeScale.xml #: doc/classes/AnimationNodeTransition.xml -#, fuzzy msgid "AnimationTree" -msgstr "WÄ™zeÅ‚ Kinematic body 2D." +msgstr "DrzewoAnimacji" #: doc/classes/AnimationNodeAdd3.xml doc/classes/AnimationNodeAnimation.xml #: doc/classes/AnimationNodeBlend2.xml @@ -9966,26 +9977,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10143,6 +10138,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13232,6 +13237,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16073,8 +16090,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16831,6 +16849,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23516,7 +23553,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25620,8 +25672,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25891,7 +25944,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32457,7 +32515,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32837,8 +32900,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34679,6 +34746,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34692,6 +34768,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34734,6 +34822,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34785,6 +34883,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36687,7 +36797,7 @@ msgstr "" #: doc/classes/Node.xml msgid "Nodes and Scenes" -msgstr "" +msgstr "WÄ™zÅ‚y i Sceny" #: doc/classes/Node.xml msgid "All Demos" @@ -37124,6 +37234,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37294,6 +37423,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37394,6 +37538,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37644,6 +37796,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38631,8 +38789,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39428,7 +39586,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47312,6 +47482,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47322,8 +47503,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47836,14 +48019,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47972,8 +48160,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -50077,7 +50265,7 @@ msgstr "" #: doc/classes/RichTextLabel.xml msgid "BBCode in RichTextLabel" -msgstr "" +msgstr "BBCode w RichTextLabel" #: doc/classes/RichTextLabel.xml msgid "GUI Rich Text/BBcode Demo" @@ -51922,6 +52110,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53176,6 +53371,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -55014,7 +55221,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55028,7 +55235,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55703,7 +55910,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55966,7 +56178,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55989,11 +56210,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56042,14 +56276,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56219,8 +56455,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57715,6 +57959,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Zwraca kÄ…t w radianach danego wektora." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Zwraca przeciwieÅ„stwo parametru." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Zwraca resztÄ™ z dwóch wektorów." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58758,6 +59012,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58899,6 +59159,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Liczy iloczyn wektorowy tego wektora oraz [code]b[/code]." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58949,6 +59221,13 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "Liczy iloczyn wektorowy tego wektora oraz [code]with[/code]." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -59045,6 +59324,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -59090,7 +59383,7 @@ msgstr "" #: doc/classes/Thread.xml msgid "Using multiple threads" -msgstr "" +msgstr "Użyj wielowÄ…tkowoÅ›ci" #: doc/classes/Thread.xml msgid "Thread-safe APIs" @@ -61221,7 +61514,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61263,10 +61556,9 @@ msgid "" msgstr "Liczy iloczyn wektorowy tego wektora oraz [code]b[/code]." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Liczy iloczyn wektorowy tego wektora oraz [code]b[/code]." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/pt.po b/doc/translations/pt.po index b81b137493..eb2e648038 100644 --- a/doc/translations/pt.po +++ b/doc/translations/pt.po @@ -4092,6 +4092,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5610,8 +5619,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Retorna o RID do ecrã usada por essa camada." #: doc/classes/AnimationNode.xml msgid "" @@ -5635,7 +5645,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5644,8 +5654,9 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." -msgstr "" +#, fuzzy +msgid "Emitted when the node was removed from the graph." +msgstr "Emitido cada vez que um nó é removido da [SceneTree]." #: doc/classes/AnimationNode.xml msgid "" @@ -10263,26 +10274,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10440,6 +10435,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13537,6 +13542,18 @@ msgstr "Retorna o RID do ecrã usada por essa camada." #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16393,8 +16410,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -17153,6 +17171,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "Emitido quando o nó ganha foco do teclado." @@ -23836,7 +23873,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25940,8 +25992,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -26211,7 +26264,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32751,7 +32809,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -33131,8 +33194,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34972,6 +35039,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34985,6 +35061,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -35027,6 +35115,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -35078,6 +35176,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -37398,6 +37508,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37568,6 +37697,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37668,6 +37812,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37918,6 +38070,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38905,8 +39063,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39696,7 +39854,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47542,6 +47712,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47552,8 +47733,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48066,14 +48249,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48202,8 +48390,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -52140,6 +52328,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53397,6 +53592,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -55250,7 +55457,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55264,7 +55471,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55939,7 +56146,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56202,7 +56414,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56225,11 +56446,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56278,14 +56512,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56455,8 +56691,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57947,6 +58191,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Retorna o comprimento atual do braço da mola." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Retorna o número de nós nesta [SceneTree]." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58985,6 +59239,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -59125,6 +59385,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Retorna o produto cruzado deste vetor e [code]b[/code]." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -59172,6 +59444,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Retorna [code]true[/code] se o vetor for normalizado, [code]false[/code] " +"caso contrário." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -59268,6 +59549,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61444,7 +61739,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61485,10 +61780,9 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Retorna o nome do nó em [code]idx[/code]." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/pt_BR.po b/doc/translations/pt_BR.po index ff0825d6a7..fbf4dbeaa6 100644 --- a/doc/translations/pt_BR.po +++ b/doc/translations/pt_BR.po @@ -4303,6 +4303,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5868,8 +5877,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Retorna a tangente do parâmetro." #: doc/classes/AnimationNode.xml msgid "" @@ -5893,7 +5903,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5902,8 +5912,9 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." -msgstr "" +#, fuzzy +msgid "Emitted when the node was removed from the graph." +msgstr "Emitido cada vez que um nó é removido da [SceneTree]." #: doc/classes/AnimationNode.xml msgid "" @@ -10538,26 +10549,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10715,6 +10710,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13820,6 +13825,18 @@ msgstr "Retorna o RID da tela usada por essa camada." #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16710,8 +16727,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -17470,6 +17488,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "Emitido quando o nó ganha foco do teclado." @@ -24165,7 +24202,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -26270,8 +26322,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -26541,7 +26594,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -33120,7 +33178,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -33500,8 +33563,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -35343,6 +35410,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -35356,6 +35432,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -35398,6 +35486,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -35449,6 +35547,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -37788,6 +37898,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37958,6 +38087,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -38058,6 +38202,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -38308,6 +38460,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -39295,8 +39453,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -40090,7 +40248,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47980,6 +48150,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47990,8 +48171,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48504,14 +48687,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48640,8 +48828,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -52587,6 +52775,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53848,6 +54043,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -55704,7 +55911,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55718,7 +55925,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -56393,7 +56600,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56656,7 +56868,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56679,11 +56900,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56732,14 +56966,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56909,8 +57145,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -58408,6 +58652,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Retorna o ângulo para o vetor dado, em radianos." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Retorna o valor oposto do parâmetro." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Retorna o número de nós nesta [SceneTree]." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -59459,6 +59713,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -59603,6 +59863,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Retorna o produto cruzado deste vetor e [code]b[/code]." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -59651,6 +59923,13 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "Retorna [code]true[/code] se o script pode ser instanciado." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -59747,6 +60026,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61925,7 +62218,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61968,10 +62261,9 @@ msgstr "" "Retorna a largura em pÃxeis de [code]wrap_index[/code] em [code]line[/code]." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Retorna o nome do nó em [code]idx[/code]." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/ro.po b/doc/translations/ro.po index d27baf73b8..e80f0ba009 100644 --- a/doc/translations/ro.po +++ b/doc/translations/ro.po @@ -3347,6 +3347,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4857,7 +4866,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4882,7 +4891,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4891,7 +4900,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9502,26 +9511,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9679,6 +9672,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12754,6 +12757,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15590,8 +15605,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16342,6 +16358,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23016,7 +23051,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25118,8 +25168,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25389,7 +25440,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31924,7 +31980,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32304,8 +32365,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34145,6 +34210,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34158,6 +34232,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34200,6 +34286,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34251,6 +34347,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36548,6 +36656,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36718,6 +36845,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36818,6 +36960,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37068,6 +37218,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38055,8 +38211,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38846,7 +39002,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46688,6 +46856,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46698,8 +46877,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47212,14 +47393,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47348,8 +47534,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51286,6 +51472,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52539,6 +52732,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54374,7 +54579,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54388,7 +54593,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55061,7 +55266,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55324,7 +55534,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55347,11 +55566,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55400,14 +55632,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55577,8 +55811,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57067,6 +57309,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58104,6 +58354,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58244,6 +58500,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58292,6 +58559,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58387,6 +58660,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60560,7 +60847,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60601,9 +60888,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/ru.po b/doc/translations/ru.po index dfde3ad01b..419a3bf547 100644 --- a/doc/translations/ru.po +++ b/doc/translations/ru.po @@ -26,7 +26,7 @@ # Сергей Волков <zerosar4@gmail.com>, 2021. # Alexander Sinitsyn <almoig747@gmail.com>, 2021. # Ð¢Ð¾Ð»Ñ Ð‘Ð¾Ð³Ð¾Ð¼Ð¾Ð»Ð¾Ð² <tolya.bogomolov2004@gmail.com>, 2021. -# Rustam Alieskerov <rustam.aleskerov7@gmail.com>, 2021. +# Rustam Alieskerov <rustam.aleskerov7@gmail.com>, 2021, 2022. # Vladimir Svity <development.openworld@gmail.com>, 2021. # SuperProCoolName <minzatov.2004@mail.ru>, 2021. # GameOverCode <thefguyplayeriwbt@gmail.com>, 2021. @@ -38,12 +38,13 @@ # ÐлекÑей Зотов <ancrad@yandex.ru>, 2022. # Russkikh Michail <summersay415@gmail.com>, 2022. # Kirill Slesarenok <s.k.s.10.09.2001@gmail.com>, 2022. +# Иван Гай <yfrde615@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-02-14 22:08+0000\n" -"Last-Translator: Kirill Slesarenok <s.k.s.10.09.2001@gmail.com>\n" +"PO-Revision-Date: 2022-03-02 18:39+0000\n" +"Last-Translator: Rustam Alieskerov <rustam.aleskerov7@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/ru/>\n" "Language: ru\n" @@ -52,7 +53,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -163,6 +164,8 @@ msgid "" "This method describes a valid operator to use with this type as left-hand " "operand." msgstr "" +"Ðтот метод опиÑывает подходÑщий оператор, который необходимо иÑпользовать Ñ " +"Ñтим типом, как левый операнд." #: modules/gdscript/doc_classes/@GDScript.xml msgid "Built-in GDScript functions." @@ -263,13 +266,12 @@ msgid "" "s = asin(0.5)\n" "[/codeblock]" msgstr "" -"Возвращает арккоÑÐ¸Ð½ÑƒÑ Ñ‡Ð¸Ñла [code]s[/code] в радианах. ИÑпользуетÑÑ Ð´Ð»Ñ " -"Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑƒÐ³Ð»Ð°, коÑÐ¸Ð½ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ равен [code]s[/code]. ЧиÑло [code]s[/code] " -"должно быть между [code]-1.0[/code] и [code]1.0[/code] (включительно), в " -"противном Ñлучае [method asin] вернет [constant NAN].\n" +"Возвращает аркÑÐ¸Ð½ÑƒÑ Ñ‡Ð¸Ñла [code]s[/code] в радианах. ИÑпользуетÑÑ Ð´Ð»Ñ " +"Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑƒÐ³Ð»Ð°, ÑÐ¸Ð½ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ равен [code]s[/code]. ЧиÑло [code]s[/code] " +"должно быть в промежутке между [code]-1.0[/code] и [code]1.0[/code] " +"(включительно), иначе [method asin] вернет [constant NAN].\n" "[codeblock]\n" -"# s равно 0.523599, или 30 градуÑов, еÑли конвертировать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ " -"rad2deg(s)\n" +"# s равно 0.523599, или 30 градуÑов, еÑли конвертировать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ rad2deg\n" "s = asin(0.5)\n" "[/codeblock]" @@ -436,16 +438,12 @@ msgid "" "a = clamp(15, 1, 20) # a is 15\n" "[/codeblock]" msgstr "" -"Ограничивает [code]value[/code], Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ не меньше [code]min[/" +"Ограничивает [code]value[/code], и возвращает значение не меньше [code]min[/" "code] и не больше [code]max[/code].\n" "[codeblock]\n" -"speed = 1000\n" -"# a будет 20\n" -"a = clamp(speed, 1, 20)\n" -"\n" -"speed = -10\n" -"# a будет 1\n" -"a = clamp(speed, 1, 20)\n" +"a = clamp(1000, 1, 20) # a будет 20\n" +"a = clamp(-10, 1, 20) # a будет 1\n" +"a = clamp(15, 1, 20) # a будет 15\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml @@ -566,7 +564,6 @@ msgstr "" "иÑпользовать [code]deep_equal[/code]." #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "" "Converts an angle expressed in degrees to radians.\n" "[codeblock]\n" @@ -575,8 +572,7 @@ msgid "" msgstr "" "Преобразует угол, выраженный в градуÑах, в радианы.\n" "[codeblock]\n" -"# r равно 3.141593\n" -"r = deg2rad(180)\n" +"r = deg2rad(180) # r = 3.141593\n" "[/codeblock]" #: modules/gdscript/doc_classes/@GDScript.xml @@ -4416,6 +4412,15 @@ msgstr "" "такой как [code]\"Hello,Something,Else\"[/code]." #: doc/classes/@GlobalScope.xml +msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml #, fuzzy msgid "" "Hints that a float property should be edited via an exponential easing " @@ -6270,8 +6275,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Возвращает [Texture2D] заданного кадра." #: doc/classes/AnimationNode.xml msgid "" @@ -6295,7 +6301,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -6304,7 +6310,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -11121,26 +11127,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -11298,6 +11288,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -14400,6 +14400,24 @@ msgid "Returns the RID of the canvas used by this layer." msgstr "" #: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" +"Очищает маÑÑив. Ðто Ñквивалентно иÑпользованию [method resize] Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ " +"[code]0[/code]." + +#: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" +"Очищает маÑÑив. Ðто Ñквивалентно иÑпользованию [method resize] Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ " +"[code]0[/code]." + +#: doc/classes/CanvasLayer.xml msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." @@ -17324,8 +17342,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -18106,6 +18125,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -24813,7 +24851,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -26920,8 +26973,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -27191,7 +27245,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -33778,7 +33837,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -34158,8 +34222,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -36003,6 +36071,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -36016,6 +36093,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -36058,6 +36147,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -36109,6 +36208,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -38450,6 +38561,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -38620,6 +38750,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -38720,6 +38865,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -38970,6 +39123,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -39962,8 +40121,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -40761,7 +40920,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -48679,6 +48850,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -48689,8 +48871,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -49203,14 +49387,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -49339,8 +49528,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -53336,6 +53525,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -54596,6 +54792,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -56436,7 +56644,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -56450,7 +56658,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -57147,7 +57355,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57414,7 +57627,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57437,11 +57659,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57490,14 +57725,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -57667,8 +57904,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -59167,6 +59412,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Возвращает минимальный угол указанного вектора." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Возвращает количеÑтво ключей в данной дорожке." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Возвращает количеÑтво раз когда Ñлемент вÑтречаетÑÑ Ð² маÑÑиве." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -60227,6 +60482,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -60369,6 +60630,18 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Возвращает [code]true[/code] еÑли маÑÑив Ñодержит [code]value[/code]." + +#: doc/classes/Theme.xml #, fuzzy msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " @@ -60424,6 +60697,15 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"Возвращает [code]true[/code], еÑли в [AnimationPlayer] хранитÑÑ [Animation] " +"Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ [code]name[/code]." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -60520,6 +60802,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -62702,7 +62998,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -62746,10 +63042,9 @@ msgstr "" "приблизительно равны друг другу." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Возвращает ÑкалÑрное произведение Ñ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð¼ [code]b[/code]." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/sk.po b/doc/translations/sk.po index 8758caf868..7f5375076e 100644 --- a/doc/translations/sk.po +++ b/doc/translations/sk.po @@ -3330,6 +3330,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4840,7 +4849,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4865,7 +4874,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4874,7 +4883,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9485,26 +9494,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9662,6 +9655,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12737,6 +12740,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15573,8 +15588,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16325,6 +16341,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22999,7 +23034,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25101,8 +25151,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25372,7 +25423,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31907,7 +31963,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32287,8 +32348,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34128,6 +34193,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34141,6 +34215,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34183,6 +34269,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34234,6 +34330,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36531,6 +36639,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36701,6 +36828,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36801,6 +36943,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37051,6 +37201,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38038,8 +38194,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38829,7 +38985,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46671,6 +46839,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46681,8 +46860,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47195,14 +47376,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47331,8 +47517,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51269,6 +51455,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52522,6 +52715,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54357,7 +54562,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54371,7 +54576,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55044,7 +55249,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55307,7 +55517,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55330,11 +55549,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55383,14 +55615,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55560,8 +55794,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57050,6 +57292,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58087,6 +58337,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58227,6 +58483,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58275,6 +58542,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58370,6 +58643,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60543,7 +60830,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60584,9 +60871,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/sr_Cyrl.po b/doc/translations/sr_Cyrl.po index 780b9a451e..fb2ee3eda8 100644 --- a/doc/translations/sr_Cyrl.po +++ b/doc/translations/sr_Cyrl.po @@ -3341,6 +3341,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4851,7 +4860,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4876,7 +4885,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4885,7 +4894,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9496,26 +9505,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9673,6 +9666,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12748,6 +12751,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15584,8 +15599,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16336,6 +16352,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23010,7 +23045,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25112,8 +25162,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25383,7 +25434,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31918,7 +31974,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32298,8 +32359,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34139,6 +34204,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34152,6 +34226,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34194,6 +34280,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34245,6 +34341,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36542,6 +36650,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36712,6 +36839,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36812,6 +36954,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37062,6 +37212,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38049,8 +38205,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38840,7 +38996,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46682,6 +46850,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46692,8 +46871,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47206,14 +47387,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47342,8 +47528,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51280,6 +51466,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52533,6 +52726,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54368,7 +54573,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54382,7 +54587,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55055,7 +55260,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55318,7 +55528,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55341,11 +55560,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55394,14 +55626,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55571,8 +55805,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57061,6 +57303,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58098,6 +58348,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58238,6 +58494,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58286,6 +58553,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58381,6 +58654,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60554,7 +60841,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60595,9 +60882,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/sv.po b/doc/translations/sv.po index 7cc04c7527..708b006742 100644 --- a/doc/translations/sv.po +++ b/doc/translations/sv.po @@ -3330,6 +3330,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4840,7 +4849,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4865,7 +4874,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4874,7 +4883,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9485,26 +9494,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9662,6 +9655,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12737,6 +12740,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15573,8 +15588,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16325,6 +16341,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -22996,7 +23031,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25098,8 +25148,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25369,7 +25420,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31904,7 +31960,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32284,8 +32345,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34125,6 +34190,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34138,6 +34212,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34180,6 +34266,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34231,6 +34327,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36528,6 +36636,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36698,6 +36825,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36798,6 +36940,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37048,6 +37198,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38035,8 +38191,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38826,7 +38982,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46668,6 +46836,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46678,8 +46857,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47192,14 +47373,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47328,8 +47514,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51266,6 +51452,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52519,6 +52712,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54354,7 +54559,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54368,7 +54573,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55041,7 +55246,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55304,7 +55514,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55327,11 +55546,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55380,14 +55612,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55557,8 +55791,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57047,6 +57289,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58084,6 +58334,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58224,6 +58480,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58272,6 +58539,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58367,6 +58640,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60540,7 +60827,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60581,9 +60868,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/th.po b/doc/translations/th.po index fa12585e9c..684a6a0bc6 100644 --- a/doc/translations/th.po +++ b/doc/translations/th.po @@ -3423,6 +3423,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4940,8 +4949,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "คืนค่าชื่à¸à¸‚à¸à¸‡à¸à¸¸à¸›à¸à¸£à¸“์เสียงทั้งหมดที่ตรวจพบในระบบ" #: doc/classes/AnimationNode.xml msgid "" @@ -4965,7 +4975,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4974,7 +4984,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9589,26 +9599,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9766,6 +9760,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12843,6 +12847,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15680,8 +15696,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16432,6 +16449,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23107,7 +23143,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25210,8 +25261,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25481,7 +25533,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32039,7 +32096,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32419,8 +32481,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34260,6 +34326,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34273,6 +34348,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34315,6 +34402,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34366,6 +34463,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36723,6 +36832,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36893,6 +37021,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36993,6 +37136,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37243,6 +37394,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38230,8 +38387,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39021,7 +39178,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46876,6 +47045,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46886,8 +47066,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47400,14 +47582,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47536,8 +47723,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51475,6 +51662,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52728,6 +52922,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54564,7 +54770,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54578,7 +54784,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55253,7 +55459,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55516,7 +55727,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55539,11 +55759,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55592,14 +55825,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55769,8 +56004,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57261,6 +57504,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าขà¸à¸‡à¸¥à¸³à¹‚พง" + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "คืนค่าชื่à¸à¸‚à¸à¸‡à¸à¸¸à¸›à¸à¸£à¸“์เสียงทั้งหมดที่ตรวจพบในระบบ" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58298,6 +58551,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58438,6 +58697,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58486,6 +58756,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58581,6 +58857,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60755,7 +61045,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60796,9 +61086,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/tl.po b/doc/translations/tl.po index 95b59e8579..7a9fb2b1f7 100644 --- a/doc/translations/tl.po +++ b/doc/translations/tl.po @@ -3,12 +3,12 @@ # Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # -# Napstaguy04 <brokenscreen3@gmail.com>, 2021. +# Napstaguy04 <brokenscreen3@gmail.com>, 2021, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2021-11-15 21:14+0000\n" +"PO-Revision-Date: 2022-02-26 10:27+0000\n" "Last-Translator: Napstaguy04 <brokenscreen3@gmail.com>\n" "Language-Team: Tagalog <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/tl/>\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 " "|| n % 10 == 6 || n % 10 == 9);\n" -"X-Generator: Weblate 4.9.1-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -3402,6 +3402,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4912,7 +4921,7 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +msgid "Returns whether the given path is filtered." msgstr "" #: doc/classes/AnimationNode.xml @@ -4937,7 +4946,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4946,7 +4955,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9431,6 +9440,10 @@ msgid "" "Simulates the sound of acoustic environments such as rooms, concert halls, " "caverns, or an open spaces." msgstr "" +"Nagdadagdag ng pagaalingayngay o reverberasyon na audio effect sa isang " +"Audio bus.\n" +"Ginagaya ang tunog ng mga akustikong kapaligiran gaya ng mga silid, concert " +"halls, kweba o malawak na lugar." #: doc/classes/AudioEffectReverb.xml msgid "" @@ -9557,26 +9570,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9734,6 +9731,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12812,6 +12819,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15648,8 +15667,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16400,6 +16420,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23071,7 +23110,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25173,8 +25227,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25444,7 +25499,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -31979,7 +32039,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32359,8 +32424,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34200,6 +34269,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34213,6 +34291,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34255,6 +34345,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34306,6 +34406,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36609,6 +36721,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36779,6 +36910,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36879,6 +37025,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37129,6 +37283,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38116,8 +38276,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -38907,7 +39067,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46752,6 +46924,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46762,8 +46945,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47276,14 +47461,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47412,8 +47602,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51350,6 +51540,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52603,6 +52800,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54438,7 +54647,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54452,7 +54661,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55125,7 +55334,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55388,7 +55602,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55411,11 +55634,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55464,14 +55700,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55641,8 +55879,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57131,6 +57377,14 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "" #: doc/classes/TextEdit.xml +msgid "Returns the total amount of lines that could be drawn." +msgstr "" + +#: doc/classes/TextEdit.xml +msgid "Returns the number of visible lines, including wrapped text." +msgstr "" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58171,6 +58425,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58311,6 +58571,17 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58359,6 +58630,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58454,6 +58731,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60627,7 +60918,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60668,9 +60959,7 @@ msgid "" msgstr "" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." +msgid "Returns the number of buttons in column [code]column[/code]." msgstr "" #: doc/classes/TreeItem.xml diff --git a/doc/translations/tr.po b/doc/translations/tr.po index f08c6a8e63..39cd3b64ef 100644 --- a/doc/translations/tr.po +++ b/doc/translations/tr.po @@ -4101,6 +4101,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5612,8 +5621,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Verilen deÄŸerin tanjantını döndürür." #: doc/classes/AnimationNode.xml msgid "" @@ -5637,7 +5647,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5646,7 +5656,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -10258,26 +10268,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10435,6 +10429,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13523,6 +13527,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16361,8 +16377,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -17119,6 +17136,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23800,7 +23836,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25908,8 +25959,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -26179,7 +26231,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32726,7 +32783,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -33106,8 +33168,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34948,6 +35014,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34961,6 +35036,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -35003,6 +35090,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -35054,6 +35151,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -37382,6 +37491,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37552,6 +37680,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37652,6 +37795,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37902,6 +38053,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38889,8 +39046,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39683,7 +39840,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47559,6 +47728,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47569,8 +47749,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48083,14 +48265,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -48219,8 +48406,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -52165,6 +52352,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53418,6 +53612,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -55255,7 +55461,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55269,7 +55475,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55944,7 +56150,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56207,7 +56418,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56230,11 +56450,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -56283,14 +56516,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56460,8 +56695,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57955,6 +58198,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Parametrenin kosinüsünü döndürür." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Verilen deÄŸerin zıt deÄŸerini döndürür." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "İki vektörün kalanını döndürür." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58995,6 +59248,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -59135,6 +59394,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "İki vektörün kalanını döndürür." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -59183,6 +59454,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -59278,6 +59555,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61454,7 +61745,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61496,10 +61787,9 @@ msgid "" msgstr "Verilen deÄŸerin sinüsünü döndürür." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Verilen deÄŸerin sinüsünü döndürür." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/uk.po b/doc/translations/uk.po index 0eed155e80..9f268b548f 100644 --- a/doc/translations/uk.po +++ b/doc/translations/uk.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-01-29 12:53+0000\n" -"Last-Translator: Vladyslav Anisimov <uniss@ua.fm>\n" +"PO-Revision-Date: 2022-02-16 16:37+0000\n" +"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/uk/>\n" "Language: uk\n" @@ -73,7 +73,6 @@ msgid "Theme Property Descriptions" msgstr "ОпиÑи ВлаÑтивоÑтей Теми" #: doc/tools/make_rst.py -#, fuzzy msgid "Inherits:" msgstr "УÑпадковує:" @@ -88,9 +87,8 @@ msgid "(overrides %s)" msgstr "(перевизначає %s)" #: doc/tools/make_rst.py -#, fuzzy msgid "Default" -msgstr "За замовчуваннÑм" +msgstr "Типовий" #: doc/tools/make_rst.py #, fuzzy @@ -3480,6 +3478,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4991,8 +4998,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Повертає Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°." #: doc/classes/AnimationNode.xml msgid "" @@ -5016,7 +5024,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5025,7 +5033,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9643,26 +9651,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9820,6 +9812,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12903,6 +12905,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15740,8 +15754,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16498,6 +16513,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23177,7 +23211,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25281,8 +25330,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25552,7 +25602,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32101,7 +32156,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32481,8 +32541,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34323,6 +34387,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34336,6 +34409,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34378,6 +34463,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34429,6 +34524,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36753,6 +36860,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36923,6 +37049,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37023,6 +37164,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37273,6 +37422,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38260,8 +38415,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39054,7 +39209,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46921,6 +47088,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46931,8 +47109,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47445,14 +47625,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47581,8 +47766,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51520,6 +51705,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52774,6 +52966,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54610,7 +54814,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54624,7 +54828,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55299,7 +55503,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55562,7 +55771,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55585,11 +55803,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55638,14 +55869,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55815,8 +56048,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57311,6 +57552,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Повертає кут до заданого вектора у радіанах." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Повертає значеннÑ, Ñке Ñ” протилежним до Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Повертає лишок за двома векторами." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58349,6 +58600,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58490,6 +58747,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "ОбчиÑлює векторний добуток цього вектора Ñ– [code]b[/code]." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58537,6 +58806,13 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "ОбчиÑлює векторний добуток двох векторів та [code]with[/code]." + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -58633,6 +58909,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60809,7 +61099,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60851,10 +61141,9 @@ msgid "" msgstr "ОбчиÑлює векторний добуток цього вектора Ñ– [code]b[/code]." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "ОбчиÑлює векторний добуток цього вектора Ñ– [code]b[/code]." #: doc/classes/TreeItem.xml #, fuzzy diff --git a/doc/translations/vi.po b/doc/translations/vi.po index 1c0c455fec..94b26a92d6 100644 --- a/doc/translations/vi.po +++ b/doc/translations/vi.po @@ -4,7 +4,7 @@ # This file is distributed under the same license as the Godot source code. # # Rev <revolnoom7801@gmail.com>, 2021. -# IoeCmcomc <hopdaigia2004@gmail.com>, 2021. +# IoeCmcomc <hopdaigia2004@gmail.com>, 2021, 2022. # Hung <hungthitkhia@gmail.com>, 2021. # Giacat Buile <hatconan20024@gmail.com>, 2021. # Quinn Le <quinnsgn@gmail.com>, 2021. @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2021-11-12 13:49+0000\n" -"Last-Translator: Quinn Le <quinnsgn@gmail.com>\n" +"PO-Revision-Date: 2022-02-26 10:27+0000\n" +"Last-Translator: IoeCmcomc <hopdaigia2004@gmail.com>\n" "Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/vi/>\n" "Language: vi\n" @@ -21,7 +21,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.9.1-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -53,7 +53,7 @@ msgstr "Liệt kê" #: doc/tools/make_rst.py msgid "Constants" -msgstr "Hằng số" +msgstr "Hằng" #: doc/tools/make_rst.py msgid "Property Descriptions" @@ -64,25 +64,24 @@ msgid "Method Descriptions" msgstr "Mô tả phương thức" #: doc/tools/make_rst.py -#, fuzzy msgid "Theme Property Descriptions" -msgstr "Ná»™i dung Thuá»™c tÃnh" +msgstr "Mô tả thuá»™c tÃnh chá»§ Ä‘á»" #: doc/tools/make_rst.py msgid "Inherits:" -msgstr "" +msgstr "Kế thừa:" #: doc/tools/make_rst.py msgid "Inherited By:" -msgstr "" +msgstr "ÄÆ°á»£c kế thừa bởi:" #: doc/tools/make_rst.py msgid "(overrides %s)" -msgstr "" +msgstr "(ghi đè %s)" #: doc/tools/make_rst.py msgid "Default" -msgstr "" +msgstr "Mặc định" #: doc/tools/make_rst.py msgid "Setter" @@ -90,7 +89,7 @@ msgstr "" #: doc/tools/make_rst.py msgid "value" -msgstr "" +msgstr "giá trị" #: doc/tools/make_rst.py msgid "Getter" @@ -99,22 +98,26 @@ msgstr "" #: doc/tools/make_rst.py msgid "" "This method should typically be overridden by the user to have any effect." -msgstr "" +msgstr "Phương thức nà y nên được ngưá»i dùng ghi đè để có tác dụng." #: doc/tools/make_rst.py msgid "" "This method has no side effects. It doesn't modify any of the instance's " "member variables." msgstr "" +"Phương thức nà y không có tác dụng phụ. Nó không sá»a đổi bất cứ biến thà nh " +"viên nà o cá»§a hiện thể cả." #: doc/tools/make_rst.py msgid "" "This method accepts any number of arguments after the ones described here." msgstr "" +"Phương thức nà y chấp nháºn bất kì số đối số nà o sau những cái đã được mô tả ở " +"đây." #: doc/tools/make_rst.py msgid "This method is used to construct a type." -msgstr "" +msgstr "Phương thức nà y được dùng để tạo má»™t kiểu." #: doc/tools/make_rst.py msgid "" @@ -181,7 +184,6 @@ msgstr "" "Những tên mà y được há»— trợ giống vá»›i các hằng số ở trong [Mà u]." #: modules/gdscript/doc_classes/@GDScript.xml -#, fuzzy msgid "" "Returns the absolute value of parameter [code]s[/code] (i.e. positive " "value).\n" @@ -189,8 +191,7 @@ msgid "" "a = abs(-1) # a is 1\n" "[/codeblock]" msgstr "" -"Trả vá» giá trị tuyệt đối cá»§a tham số [code]s[/code] (nghÄ©a là giá trị " -"dương).\n" +"Trả vá» giá trị tuyệt đối cá»§a tham số [code]s[/code] (v.d. giá trị dương).\n" "[codeblock]\n" "# a là 1\n" "a = abs(-1)\n" @@ -3756,6 +3757,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -5290,8 +5300,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "Trả vá» [Texture2D] cá»§a khung hình được cho." #: doc/classes/AnimationNode.xml msgid "" @@ -5315,7 +5326,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -5324,7 +5335,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9937,26 +9948,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -10114,6 +10109,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -13198,6 +13203,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -16037,8 +16054,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16795,6 +16813,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23475,7 +23512,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25579,8 +25631,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25850,7 +25903,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32394,7 +32452,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32774,8 +32837,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34616,6 +34683,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34629,6 +34705,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34671,6 +34759,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34722,6 +34820,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -37048,6 +37158,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -37218,6 +37347,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -37318,6 +37462,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37568,6 +37720,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38555,8 +38713,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39349,7 +39507,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -47227,6 +47397,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -47237,8 +47418,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47751,14 +47934,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47887,8 +48075,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51831,6 +52019,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -53086,6 +53281,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54923,7 +55130,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54937,7 +55144,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55612,7 +55819,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55875,7 +56087,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55898,11 +56119,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55951,14 +56185,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -56128,8 +56364,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57623,6 +57867,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "Trả vá» côsin cá»§a tham số." #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "Trả vá» giá trị đối cá»§a tham số." + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "Trả vá» phần dư cá»§a hai vector." + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58663,6 +58917,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58803,6 +59063,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "Trả vá» phần dư cá»§a hai vector." + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58851,6 +59123,12 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" "[b]Note:[/b] This modifies the current theme. If you want to merge two " @@ -58946,6 +59224,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -61122,7 +61414,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -61164,10 +61456,9 @@ msgid "" msgstr "Trả vá» sin cá»§a tham số." #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "Trả vá» sin cá»§a tham số." #: doc/classes/TreeItem.xml #, fuzzy @@ -70556,11 +70847,11 @@ msgstr "" #: doc/classes/VisualShaderNodeVectorFunc.xml msgid "Converts RGB vector to HSV equivalent." -msgstr "Chuyển vector mà u RGB sang HSV tương ứng." +msgstr "Chuyển véc tÆ¡ mà u RGB sang HSV tương ứng." #: doc/classes/VisualShaderNodeVectorFunc.xml msgid "Converts HSV vector to RGB equivalent." -msgstr "Chuyển vector mà u HSV sang RGB tương ứng." +msgstr "Chuyển véc tÆ¡ mà u HSV sang RGB tương ứng." #: doc/classes/VisualShaderNodeVectorFunc.xml msgid "Returns the absolute value of the parameter." diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index fdd36621c7..43706eb180 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -62,7 +62,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-02-14 22:08+0000\n" +"PO-Revision-Date: 2022-03-08 06:54+0000\n" "Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot-class-reference/zh_Hans/>\n" @@ -71,7 +71,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/tools/make_rst.py msgid "Description" @@ -4182,6 +4182,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4631,18 +4640,17 @@ msgstr "" #: doc/classes/Transform.xml doc/classes/Transform2D.xml #: doc/classes/Vector2.xml doc/classes/Vector3.xml msgid "Math tutorial index" -msgstr "" +msgstr "æ•°å¦æ•™ç¨‹ç´¢å¼•" #: doc/classes/AABB.xml doc/classes/Rect2.xml doc/classes/Vector2.xml #: doc/classes/Vector3.xml -#, fuzzy msgid "Vector math" -msgstr "用于二维数å¦çš„å‘é‡ã€‚" +msgstr "å‘釿•°å¦" #: doc/classes/AABB.xml doc/classes/Rect2.xml doc/classes/Vector2.xml #: doc/classes/Vector3.xml msgid "Advanced vector math" -msgstr "" +msgstr "高ç‰å‘釿•°å¦" #: doc/classes/AABB.xml msgid "Constructs an [AABB] from a position and size." @@ -5081,7 +5089,7 @@ msgstr "" #: doc/classes/AnimatedSprite.xml doc/classes/AnimationPlayer.xml msgid "2D Sprite animation" -msgstr "" +msgstr "2D ç²¾çµåŠ¨ç”»" #: doc/classes/AnimatedSprite.xml doc/classes/Area2D.xml #: doc/classes/AudioStreamPlayer.xml doc/classes/Button.xml @@ -5091,7 +5099,7 @@ msgstr "" #: doc/classes/Particles2D.xml doc/classes/Timer.xml #: doc/classes/VisibilityNotifier2D.xml msgid "2D Dodge The Creeps Demo" -msgstr "" +msgstr "2D Dodge The Creeps 演示" #: doc/classes/AnimatedSprite.xml msgid "" @@ -5179,7 +5187,7 @@ msgstr "" #: doc/classes/AnimatedSprite3D.xml msgid "2D Sprite animation (also applies to 3D)" -msgstr "" +msgstr "2D ç²¾çµåŠ¨ç”»ï¼ˆä¹Ÿé€‚ç”¨äºŽ 3D)" #: doc/classes/AnimatedSprite3D.xml msgid "Returns [code]true[/code] if an animation is currently being played." @@ -5861,7 +5869,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "Base resource for [AnimationTree] nodes." -msgstr "[AnimationTree]节点的基础资æºã€‚" +msgstr "[AnimationTree] 节点的基础资æºã€‚" #: doc/classes/AnimationNode.xml msgid "" @@ -5889,8 +5897,8 @@ msgid "" "passed, as well as whether [code]seek[/code] happened." msgstr "" "按 [code]blend[/code] 釿··åˆä¸€ä¸ªåŠ¨ç”»ï¼ˆå称必须在链接的 [AnimationPlayer] 䏿œ‰" -"效)。å¯ä»¥é€šè¿‡ [code]time[/code] å’Œ [code]delta[/code]ï¼Œä»¥åŠæ˜¯å¦å‘生 " -"[code]seek[/code]。" +"效)。å¯ä»¥ä¼ 入时间 [code]time[/code] å’Œå¢žé‡ [code]delta[/code],以åŠè¡¨ç¤ºæ˜¯å¦" +"å‘生寻é“çš„ [code]seek[/code]。" #: doc/classes/AnimationNode.xml msgid "" @@ -5900,9 +5908,10 @@ msgid "" "absolute. A filter mode may be optionally passed (see [enum FilterAction] " "for options)." msgstr "" -"æ··åˆä¸€ä¸ªè¾“入。这åªå¯¹ä¸º [AnimationNodeBlendTree] 创建的节点有用。[code]time[/" -"code] 傿•°æ˜¯ä¸€ä¸ªç›¸å¯¹ä¸‰è§’ï¼Œé™¤éž [code]seek[/code] 是 [code]true[/code],在这ç§" -"情况下,它是ç»å¯¹å€¼ã€‚å¯ä»¥é€‰æ‹©ä¼ 递过滤模å¼ï¼ˆé€‰é¡¹è¯·å‚阅 [enum FilterAction])。" +"æ··åˆä¸€ä¸ªè¾“入。这åªå¯¹ä¸º [AnimationNodeBlendTree] åˆ›å»ºçš„èŠ‚ç‚¹æœ‰ç”¨ã€‚æ—¶é—´å‚æ•° " +"[code]time[/code] 是一个相对的增é‡ï¼Œé™¤éž [code]seek[/code] 是 [code]true[/" +"code]ï¼Œæ¤æ—¶å®ƒæ˜¯ç»å¯¹çš„æ—¶é—´ã€‚å¯ä»¥é€‰æ‹©ä¼ 递过滤模å¼ï¼ˆé€‰é¡¹è¯·å‚阅 [enum " +"FilterAction])。" #: doc/classes/AnimationNode.xml msgid "" @@ -5911,8 +5920,7 @@ msgid "" "instead, else editors will not display your node for addition." msgstr "" "æ··åˆå¦ä¸€ä¸ªåŠ¨ç”»èŠ‚ç‚¹ï¼ˆåœ¨è¿™ä¸ªèŠ‚ç‚¹åŒ…å«ååŠ¨ç”»èŠ‚ç‚¹çš„æƒ…å†µä¸‹ï¼‰ã€‚è¿™ä¸ªå‡½æ•°åªæœ‰åœ¨ä½ 继承 " -"[AnimationRootNode] è€Œä¸æ˜¯ [AnimationRootNode] æ—¶æ‰æœ‰ç”¨ï¼Œå¦åˆ™ç¼–辑器将ä¸ä¼šæ˜¾ç¤º" -"ä½ çš„èŠ‚ç‚¹è¿›è¡Œæ·»åŠ ã€‚" +"[AnimationRootNode] æ—¶æ‰æœ‰ç”¨ï¼Œå¦åˆ™ç¼–辑器将ä¸ä¼šæ˜¾ç¤ºä½ çš„èŠ‚ç‚¹è¿›è¡Œæ·»åŠ ã€‚" #: doc/classes/AnimationNode.xml msgid "Gets the text caption for this node (used by some editors)." @@ -5936,7 +5944,7 @@ msgstr "" msgid "" "Amount of inputs in this node, only useful for nodes that go into " "[AnimationNodeBlendTree]." -msgstr "这个节点的输入数é‡ï¼Œåªå¯¹è¿›å…¥[AnimationNodeBlendTree]的节点有用。" +msgstr "这个节点的输入数é‡ï¼Œåªå¯¹è¿›å…¥ [AnimationNodeBlendTree] 的节点有用。" #: doc/classes/AnimationNode.xml msgid "Gets the name of an input by index." @@ -5974,7 +5982,8 @@ msgid "" msgstr "返回[code]true[/code],是å¦å¸Œæœ›æ··åˆæ ‘编辑器在æ¤èŠ‚ç‚¹ä¸Šæ˜¾ç¤ºè¿‡æ»¤å™¨ç¼–è¾‘ã€‚" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." +#, fuzzy +msgid "Returns whether the given path is filtered." msgstr "返回[code]true[/code]是å¦å¯¹æŒ‡å®šè·¯å¾„进行过滤。" #: doc/classes/AnimationNode.xml @@ -5988,12 +5997,11 @@ msgid "" "This function should return the time left for the current animation to " "finish (if unsure, pass the value from the main blend being called)." msgstr "" -"å½“ä¸€ä¸ªè‡ªå®šä¹‰èŠ‚ç‚¹è¢«å¤„ç†æ—¶ï¼Œç”¨æˆ·å®šä¹‰çš„回调被调用。[code]time[/code]傿•°æ˜¯ä¸€ä¸ªç›¸" -"对的delta,除éž[code]seek[/code]是[code]true[/code]ï¼Œåœ¨è¿™ç§æƒ…况下,它是ç»å¯¹" -"的。\n" -"在这里,调用[method blend_input]ã€[method blend_node]或[method " -"blend_animation]å‡½æ•°ã€‚ä½ ä¹Ÿå¯ä»¥ä½¿ç”¨[method get_parameter]å’Œ[method " -"set_parameter]æ¥ä¿®æ”¹æœ¬åœ°å˜å‚¨ã€‚\n" +"用户定义的回调,会在处ç†è‡ªå®šä¹‰èŠ‚ç‚¹æ—¶è°ƒç”¨ã€‚æ—¶é—´å‚æ•° [code]time[/code] 是一个相" +"对的增é‡ï¼Œé™¤éž [code]seek[/code] 是 [code]true[/code]ï¼Œæ¤æ—¶å®ƒæ˜¯ç»å¯¹çš„æ—¶é—´ã€‚\n" +"请在这里调用 [method blend_input]ã€[method blend_node] 或 [method " +"blend_animation] å‡½æ•°ã€‚ä½ ä¹Ÿå¯ä»¥ä½¿ç”¨ [method get_parameter] å’Œ [method " +"set_parameter] æ¥ä¿®æ”¹æœ¬åœ°å˜å‚¨ã€‚\n" "这个函数应该返回当å‰åŠ¨ç”»å®Œæˆçš„剩余时间(如果ä¸ç¡®å®šï¼Œè¯·ä¼ 递被调用的主混åˆ" "值)。" @@ -6006,8 +6014,9 @@ msgid "Adds or removes a path for the filter." msgstr "æ·»åŠ æˆ–åˆ é™¤ç›é€‰å™¨çš„路径。" #: doc/classes/AnimationNode.xml +#, fuzzy msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" "è®¾ç½®ä¸€ä¸ªè‡ªå®šä¹‰å‚æ•°ã€‚è¿™äº›å‚æ•°è¢«ç”¨ä½œæœ¬åœ°å˜å‚¨ï¼Œå› 为资æºå¯ä»¥åœ¨æ ‘或场景ä¸é‡å¤ä½¿" @@ -6015,10 +6024,11 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "If [code]true[/code], filtering is enabled." -msgstr "如果[code]true[/code],则å¯ç”¨è¿‡æ»¤åŠŸèƒ½ã€‚" +msgstr "如果为 [code]true[/code],则å¯ç”¨ç›é€‰åŠŸèƒ½ã€‚" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +#, fuzzy +msgid "Emitted when the node was removed from the graph." msgstr "当该节点从图ä¸åˆ 除时调用。" #: doc/classes/AnimationNode.xml @@ -6034,23 +6044,23 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "Do not use filtering." -msgstr "ä¸è¦ä½¿ç”¨è¿‡æ»¤åŠŸèƒ½ã€‚" +msgstr "ä¸è¦ä½¿ç”¨ç›é€‰åŠŸèƒ½ã€‚" #: doc/classes/AnimationNode.xml msgid "Paths matching the filter will be allowed to pass." -msgstr "匹é…过滤器的路径将被å…许通过。" +msgstr "与ç›é€‰å™¨åŒ¹é…的路径将被å…许通过。" #: doc/classes/AnimationNode.xml msgid "Paths matching the filter will be discarded." -msgstr "与过滤器匹é…的路径将被丢弃。" +msgstr "与ç›é€‰å™¨åŒ¹é…的路径将被丢弃。" #: doc/classes/AnimationNode.xml msgid "Paths matching the filter will be blended (by the blend value)." -msgstr "与滤镜相匹é…的路径将被混åˆï¼ˆæ ¹æ®æ··åˆå€¼ï¼‰ã€‚" +msgstr "与ç›é€‰å™¨åŒ¹é…的路径将被混åˆï¼ˆæ ¹æ®æ··åˆå€¼ï¼‰ã€‚" #: doc/classes/AnimationNodeAdd2.xml msgid "Blends two animations additively inside of an [AnimationNodeBlendTree]." -msgstr "在一个[AnimationNodeBlendTree]ä¸åŠ æ³•åœ°æ··åˆä¸¤ä¸ªåŠ¨ç”»ã€‚" +msgstr "在 [AnimationNodeBlendTree] ä¸åŠ æ³•åœ°æ··åˆä¸¤ä¸ªåŠ¨ç”»ã€‚" #: doc/classes/AnimationNodeAdd2.xml msgid "" @@ -6074,7 +6084,7 @@ msgstr "" msgid "" "Blends two of three animations additively inside of an " "[AnimationNodeBlendTree]." -msgstr "在[AnimationNodeBlendTree]内部将三个动画ä¸çš„ä¸¤ä¸ªåŠ¨ç”»ç›¸åŠ ã€‚" +msgstr "在 [AnimationNodeBlendTree] ä¸å°†ä¸‰ä¸ªåŠ¨ç”»ä¸çš„ä¸¤ä¸ªåŠ¨ç”»ç›¸åŠ ã€‚" #: doc/classes/AnimationNodeAdd3.xml msgid "" @@ -6101,9 +6111,8 @@ msgstr "" #: doc/classes/AnimationNodeOneShot.xml doc/classes/AnimationNodeOutput.xml #: doc/classes/AnimationNodeTimeScale.xml #: doc/classes/AnimationNodeTransition.xml -#, fuzzy msgid "AnimationTree" -msgstr "Animation节点。" +msgstr "AnimationTree" #: doc/classes/AnimationNodeAdd3.xml doc/classes/AnimationNodeAnimation.xml #: doc/classes/AnimationNodeBlend2.xml @@ -6119,11 +6128,11 @@ msgstr "Animation节点。" #: doc/classes/Quat.xml doc/classes/Skeleton.xml doc/classes/SpotLight.xml #: doc/classes/StaticBody.xml doc/classes/WorldEnvironment.xml msgid "Third Person Shooter Demo" -msgstr "" +msgstr "第三人称射击演示" #: doc/classes/AnimationNodeAnimation.xml msgid "Input animation to use in an [AnimationNodeBlendTree]." -msgstr "输入è¦åœ¨[AnimationNodeBlendTree]ä¸ä½¿ç”¨çš„动画。" +msgstr "输入è¦åœ¨ [AnimationNodeBlendTree] ä¸ä½¿ç”¨çš„动画。" #: doc/classes/AnimationNodeAnimation.xml msgid "" @@ -6143,7 +6152,7 @@ msgstr "" #: doc/classes/MeshInstance.xml doc/classes/MeshLibrary.xml #: doc/classes/ProjectSettings.xml doc/classes/Transform.xml msgid "3D Platformer Demo" -msgstr "" +msgstr "3D å¹³å°è·³è·ƒæ¼”示" #: doc/classes/AnimationNodeAnimation.xml msgid "" @@ -6423,14 +6432,14 @@ msgstr "" #: doc/classes/AnimationNodeBlendTree.xml msgid "[AnimationTree] node resource that contains many blend type nodes." -msgstr "[AnimationTree]节点资æºï¼Œå…¶ä¸åŒ…å«è®¸å¤šæ··åˆç±»åž‹èŠ‚ç‚¹ã€‚" +msgstr "[AnimationTree] 节点资æºï¼Œå…¶ä¸åŒ…å«è®¸å¤šæ··åˆç±»åž‹èŠ‚ç‚¹ã€‚" #: doc/classes/AnimationNodeBlendTree.xml msgid "" "This node may contain a sub-tree of any other blend type nodes, such as mix, " "blend2, blend3, one shot, etc. This is one of the most commonly used roots." msgstr "" -"该节点å¯ä»¥åŒ…å«ä»»ä½•å…¶ä»–æ··åˆç±»åž‹èŠ‚ç‚¹çš„åæ ‘,例如mix,blend2,blend3,一个shot" +"该节点å¯ä»¥åŒ…å«ä»»ä½•å…¶ä»–æ··åˆç±»åž‹èŠ‚ç‚¹çš„åæ ‘,例如 mixã€blend2ã€blend3ã€one shot " "ç‰ã€‚è¿™æ˜¯æœ€å¸¸ç”¨çš„æ ¹ä¹‹ä¸€ã€‚" #: doc/classes/AnimationNodeBlendTree.xml @@ -6438,7 +6447,7 @@ msgid "" "Adds an [AnimationNode] at the given [code]position[/code]. The [code]name[/" "code] is used to identify the created sub-node later." msgstr "" -"在给定的 [code]position[/code] æ·»åŠ ä¸€ä¸ª [AnimationNode]。[code]name[/code]用" +"在给定的 [code]position[/code] æ·»åŠ ä¸€ä¸ª [AnimationNode]。[code]name[/code] 用" "于以åŽè¯†åˆ«åˆ›å»ºçš„å节点。" #: doc/classes/AnimationNodeBlendTree.xml @@ -6455,18 +6464,18 @@ msgstr "æ–开连接到指定输入端的节点。" #: doc/classes/AnimationNodeBlendTree.xml msgid "Returns the sub-node with the specified [code]name[/code]." -msgstr "返回带有指定[code]name[/code]çš„å节点。" +msgstr "返回å称为 [code]name[/code] çš„å节点。" #: doc/classes/AnimationNodeBlendTree.xml msgid "" "Returns the position of the sub-node with the specified [code]name[/code]." -msgstr "返回指定[code]name[/code]çš„å节点的ä½ç½®ã€‚" +msgstr "返回å称为 [code]name[/code] çš„å节点的ä½ç½®ã€‚" #: doc/classes/AnimationNodeBlendTree.xml msgid "" "Returns [code]true[/code] if a sub-node with specified [code]name[/code] " "exists." -msgstr "如果å˜åœ¨æŒ‡å®š[code]name[/code]çš„å节点,返回[code]true[/code]。" +msgstr "如果å˜åœ¨å称为 [code]name[/code] çš„å节点,则返回 [code]true[/code]。" #: doc/classes/AnimationNodeBlendTree.xml msgid "Removes a sub-node." @@ -6494,7 +6503,7 @@ msgstr "输入节点为 [code]null[/code]。" #: doc/classes/AnimationNodeBlendTree.xml msgid "The specified input port is out of range." -msgstr "指定的输入端å£å·²å‡ºèŒƒå›´ã€‚" +msgstr "指定的输入端å£è¶…出范围。" #: doc/classes/AnimationNodeBlendTree.xml msgid "The output node is [code]null[/code]." @@ -6502,7 +6511,7 @@ msgstr "输出节点为 [code]null[/code]。" #: doc/classes/AnimationNodeBlendTree.xml msgid "Input and output nodes are the same." -msgstr "è¾“å…¥å’Œè¾“å‡ºèŠ‚ç‚¹æ˜¯ä¸€æ ·çš„ã€‚" +msgstr "输入和输出节点相åŒã€‚" #: doc/classes/AnimationNodeBlendTree.xml msgid "The specified connection already exists." @@ -6892,9 +6901,8 @@ msgstr "" "æ›´æ–°åŠ¨ç”»çš„ç›®æ ‡å±žæ€§æ˜¯åœ¨å¤„ç†æ—¶è¿›è¡Œçš„。" #: doc/classes/AnimationPlayer.xml -#, fuzzy msgid "Animation tutorial index" -msgstr "Animation节点。" +msgstr "动画教程索引" #: doc/classes/AnimationPlayer.xml msgid "" @@ -7243,9 +7251,8 @@ msgstr "" "画。" #: doc/classes/AnimationTree.xml -#, fuzzy msgid "Using AnimationTree" -msgstr "é‡ç½®æ¤ [AnimationTreePlayer]。" +msgstr "使用 AnimationTree" #: doc/classes/AnimationTree.xml msgid "Manually advance the animations by the specified time (in seconds)." @@ -7784,7 +7791,7 @@ msgstr "" #: doc/classes/Area.xml doc/classes/QuadMesh.xml doc/classes/Viewport.xml #: doc/classes/ViewportTexture.xml msgid "GUI in 3D Demo" -msgstr "" +msgstr "3D GUI 演示" #: doc/classes/Area.xml msgid "" @@ -8101,18 +8108,18 @@ msgstr "" #: doc/classes/Area2D.xml msgid "Using Area2D" -msgstr "" +msgstr "使用 Area2D" #: doc/classes/Area2D.xml doc/classes/CollisionShape2D.xml #: doc/classes/RectangleShape2D.xml msgid "2D Pong Demo" -msgstr "" +msgstr "2D Pong 演示" #: doc/classes/Area2D.xml doc/classes/Camera2D.xml #: doc/classes/KinematicBody2D.xml doc/classes/TileMap.xml #: doc/classes/TileSet.xml msgid "2D Platformer Demo" -msgstr "" +msgstr "2D å¹³å°è·³è·ƒæ¼”示" #: doc/classes/Area2D.xml msgid "" @@ -8684,7 +8691,6 @@ msgstr "" "[/codeblock]" #: doc/classes/Array.xml -#, fuzzy msgid "" "Returns a hashed 32-bit integer value representing the array and its " "contents.\n" @@ -8693,9 +8699,10 @@ msgid "" "does [i]not[/i] imply the arrays are equal, because different arrays can " "have identical hash values due to hash collisions." msgstr "" -"返回代表这个数组åŠå…¶å†…容的整数哈希值。\n" -"[b]注æ„:[/b]仅仅内容相åŒçš„æ•°ç»„会产生ä¸åŒçš„哈希值, å¿…é¡»è¦å®Œå…¨ä¸€è‡´çš„æ•°ç»„æ‰ä¼šäº§" -"生相åŒçš„哈希值." +"返回代表该数组åŠå…¶å†…容的 32 使•´æ•°å“ˆå¸Œå€¼ã€‚\n" +"[b]注æ„:[/b]内容相åŒçš„ [Array] 会得到一致的哈希值。然而,å之ä¸ç„¶ã€‚返回一致" +"的哈希值[i]å¹¶ä¸[/i]æ„å‘³ç€æ•°ç»„相ç‰ï¼Œå› 为ä¸åŒçš„æ•°ç»„å¯èƒ½å› 为哈希碰撞而得到一致的" +"哈希值。" #: doc/classes/Array.xml msgid "" @@ -10507,7 +10514,7 @@ msgstr "使用二维å‘é‡ä½œä¸ºè¾¹ç¼˜çš„AStar类表示。" msgid "" "This is a wrapper for the [AStar] class which uses 2D vectors instead of 3D " "vectors." -msgstr "这是[AStar]类的包装,该类使用2Då‘é‡è€Œä¸æ˜¯3Då‘é‡ã€‚" +msgstr "这是 [AStar] 类的包装,该类使用 2D å‘é‡è€Œä¸æ˜¯ 3D å‘é‡ã€‚" #: doc/classes/AStar2D.xml msgid "" @@ -10780,9 +10787,8 @@ msgstr "音频总线的基础资æºã€‚åœ¨è¯¥èµ„æºæ‰€åº”用的总线上应用音 #: doc/classes/AudioEffect.xml doc/classes/AudioEffectRecord.xml #: doc/classes/AudioServer.xml doc/classes/AudioStream.xml #: doc/classes/AudioStreamPlayer.xml -#, fuzzy msgid "Audio Mic Record Demo" -msgstr "音频频谱演示" +msgstr "音频麦克风录音演示" #: doc/classes/AudioEffectAmplify.xml msgid "" @@ -11120,7 +11126,7 @@ msgstr "" #: doc/classes/AudioEffectHighShelfFilter.xml #: doc/classes/AudioEffectLowShelfFilter.xml doc/classes/AudioServer.xml msgid "Audio buses" -msgstr "" +msgstr "音频总线" #: doc/classes/AudioEffectDistortion.xml msgid "Distortion power. Value can range from 0 to 1." @@ -11606,7 +11612,7 @@ msgstr "" #: doc/classes/AudioEffectRecord.xml msgid "Recording with microphone" -msgstr "" +msgstr "使用麦克风录音" #: doc/classes/AudioEffectRecord.xml msgid "Returns the recorded sample." @@ -11761,9 +11767,8 @@ msgstr "" "频)以åŠé€šè¿‡è¯éŸ³æŽ¥å£è¿›è¡Œæ’放。" #: doc/classes/AudioServer.xml doc/classes/AudioStreamPlayer.xml -#, fuzzy msgid "Audio Device Changer Demo" -msgstr "音频频谱演示" +msgstr "éŸ³é¢‘è®¾å¤‡åˆ‡æ¢æ¼”示" #: doc/classes/AudioServer.xml msgid "Adds a bus at [code]at_position[/code]." @@ -11778,27 +11783,10 @@ msgstr "" "[AudioEffect] 效果。" #: doc/classes/AudioServer.xml -#, fuzzy -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "当å‰éŸ³é¢‘输入设备的å称(å‚阅[method capture_get_device_list])。" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "返回系统上检测到的所有音频输入设备的å称。" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "使用å¯ç”¨çš„æ€»çº¿å’Œæ•ˆæžœç”Ÿæˆ[AudioBusLayout]。" @@ -11972,6 +11960,21 @@ msgid "Number of available audio buses." msgstr "å¯ç”¨éŸ³é¢‘总线的数é‡ã€‚" #: doc/classes/AudioServer.xml +#, fuzzy +msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" +"当å‰éŸ³é¢‘输出设备åç§°ï¼ˆè§ [method get_device_list])。在具有多个音频输出的系统" +"ä¸ï¼ˆä¾‹å¦‚模拟ã€USBã€HDMI 音频),å¯ç”¨äºŽé€‰æ‹©éŸ³é¢‘输出设备。将值设为 " +"[code]\"Default\"[/code] åˆ™ä¼šä»Žç³»ç»Ÿé»˜è®¤çš„éŸ³é¢‘è¾“å‡ºæ’æ”¾éŸ³é¢‘ã€‚å¦‚æžœè®¾ç½®äº†æ— æ•ˆçš„è®¾" +"备å称,该值会被æ¢å¤ä¸º [code]\"Default\"[/code]。" + +#: doc/classes/AudioServer.xml msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " @@ -11980,6 +11983,10 @@ msgid "" "output. If an invalid device name is set, the value will be reverted back to " "[code]\"Default\"[/code]." msgstr "" +"当å‰éŸ³é¢‘输出设备åç§°ï¼ˆè§ [method get_device_list])。在具有多个音频输出的系统" +"ä¸ï¼ˆä¾‹å¦‚模拟ã€USBã€HDMI 音频),å¯ç”¨äºŽé€‰æ‹©éŸ³é¢‘输出设备。将值设为 " +"[code]\"Default\"[/code] åˆ™ä¼šä»Žç³»ç»Ÿé»˜è®¤çš„éŸ³é¢‘è¾“å‡ºæ’æ”¾éŸ³é¢‘ã€‚å¦‚æžœè®¾ç½®äº†æ— æ•ˆçš„è®¾" +"备å称,该值会被æ¢å¤ä¸º [code]\"Default\"[/code]。" #: doc/classes/AudioServer.xml msgid "" @@ -12022,16 +12029,14 @@ msgstr "" "[AudioStreamSample])和 OGG(通过[AudioStreamOGGVorbis]ï¼‰æ–‡ä»¶æ ¼å¼ã€‚" #: doc/classes/AudioStream.xml doc/classes/AudioStreamPlayer.xml -#, fuzzy msgid "Audio streams" -msgstr "音频频谱演示" +msgstr "音频æµ" #: doc/classes/AudioStream.xml doc/classes/AudioStreamGenerator.xml #: doc/classes/AudioStreamGeneratorPlayback.xml #: doc/classes/AudioStreamPlayback.xml doc/classes/AudioStreamPlayer.xml -#, fuzzy msgid "Audio Generator Demo" -msgstr "音频频谱演示" +msgstr "音频生æˆå™¨æ¼”示" #: doc/classes/AudioStream.xml msgid "Returns the length of the audio stream in seconds." @@ -12329,6 +12334,9 @@ msgid "" "\"water\" area so that sounds played in the water are redirected through an " "audio bus to make them sound like they are being played underwater." msgstr "" +"决定对混å“åŠéŸ³é¢‘总线效果有影å“çš„ [Area2D] 层。å¯ä½¿ç”¨åŒºåŸŸå¯¹ [AudioStream] 进行" +"é‡å®šå‘ï¼Œä½¿å…¶åœ¨ç‰¹å®šçš„éŸ³é¢‘æ€»çº¿ä¸æ’æ”¾ã€‚ä¸€ä¸ªä¾‹åæ˜¯å¯ä»¥ç”¨æ¥åˆ¶ä½œâ€œæ°´åŸŸâ€ï¼Œå°†æ°´ä¸æ’放" +"的声音é‡å®šå‘至å•独的音频总线,让声音å¬èµ·æ¥åƒæ˜¯åœ¨æ°´ä¸‹æ’放。" #: doc/classes/AudioStreamPlayer2D.xml msgid "Dampens audio over distance with this as an exponent." @@ -12386,6 +12394,9 @@ msgid "" "\"water\" area so that sounds played in the water are redirected through an " "audio bus to make them sound like they are being played underwater." msgstr "" +"决定对混å“åŠéŸ³é¢‘总线效果有影å“çš„ [Area] 层。å¯ä½¿ç”¨åŒºåŸŸå¯¹ [AudioStream] 进行é‡" +"定å‘ï¼Œä½¿å…¶åœ¨ç‰¹å®šçš„éŸ³é¢‘æ€»çº¿ä¸æ’æ”¾ã€‚ä¸€ä¸ªä¾‹åæ˜¯å¯ä»¥ç”¨æ¥åˆ¶ä½œâ€œæ°´åŸŸâ€ï¼Œå°†æ°´ä¸æ’放的" +"声音é‡å®šå‘至å•独的音频总线,让声音å¬èµ·æ¥åƒæ˜¯åœ¨æ°´ä¸‹æ’放。" #: doc/classes/AudioStreamPlayer3D.xml msgid "" @@ -12854,7 +12865,6 @@ msgstr "" "象。" #: doc/classes/BakedLightmap.xml -#, fuzzy msgid "" "Bias value to reduce the amount of light propagation in the captured octree." msgstr "å置值,用于å‡å°‘æ•èŽ·çš„å…«å‰æ ‘ä¸çš„å…‰ä¼ æ’é‡ã€‚" @@ -12934,7 +12944,6 @@ msgid "The calculated light data." msgstr "计算出的光照数æ®ã€‚" #: doc/classes/BakedLightmap.xml -#, fuzzy msgid "" "Determines the amount of samples per texel used in indirect light baking. " "The amount of samples for each quality level can be configured in the " @@ -13302,17 +13311,16 @@ msgstr "" #: doc/classes/Basis.xml doc/classes/Transform.xml doc/classes/Transform2D.xml msgid "Matrices and transforms" -msgstr "" +msgstr "çŸ©é˜µä¸Žå˜æ¢" #: doc/classes/Basis.xml doc/classes/Quat.xml doc/classes/Transform.xml -#, fuzzy msgid "Using 3D transforms" -msgstr "使用 3D å˜æ¢æ—¶ä½¿ç”¨æ¤é€‰é¡¹ã€‚" +msgstr "使用 3D å˜æ¢" #: doc/classes/Basis.xml doc/classes/Line2D.xml doc/classes/Transform.xml #: doc/classes/Transform2D.xml doc/classes/Vector2.xml doc/classes/Vector3.xml msgid "Matrix Transform Demo" -msgstr "" +msgstr "çŸ©é˜µå˜æ¢æ¼”示" #: doc/classes/Basis.xml doc/classes/CylinderShape.xml #: doc/classes/Dictionary.xml doc/classes/DynamicFont.xml @@ -13324,12 +13332,12 @@ msgstr "" #: doc/classes/TextureRect.xml doc/classes/Thread.xml #: doc/classes/VBoxContainer.xml msgid "3D Voxel Demo" -msgstr "" +msgstr "3D ä½“ç´ æ¼”ç¤º" #: doc/classes/Basis.xml doc/classes/Line2D.xml doc/classes/Transform.xml #: doc/classes/Transform2D.xml msgid "2.5D Demo" -msgstr "" +msgstr "2.5D 演示" #: doc/classes/Basis.xml msgid "Constructs a pure rotation basis matrix from the given quaternion." @@ -13552,6 +13560,9 @@ msgid "" "are being converted into white pixels, and [code]false[/code] bits into " "black." msgstr "" +"返回与该ä½å›¾å°ºå¯¸ä¸€è‡´çš„图åƒï¼Œæ ¼å¼ [enum Image.Format] 为 [code]FORMAT_L8[/" +"code]。该ä½å›¾ä¸ä¸º [code]true[/code] çš„ä½ä¼šè¢«è½¬ä¸ºç™½è‰²åƒç´ ,为 [code]false[/" +"code] çš„ä½ä¼šè¢«è½¬ä¸ºé»‘色åƒç´ 。" #: doc/classes/BitMap.xml msgid "" @@ -13596,9 +13607,8 @@ msgstr "" "grow_mask] å½±å“。" #: doc/classes/BitMap.xml -#, fuzzy msgid "Resizes the image to [code]new_size[/code]." -msgstr "使用颜色 [code]color[/code] 填充图åƒã€‚" +msgstr "将图åƒä¿®æ”¹ä¸ºæ–°å°ºå¯¸ [code]new_size[/code]。" #: doc/classes/BitMap.xml msgid "" @@ -13940,14 +13950,14 @@ msgstr "3D ç›’å形状,å¯ä»¥æ˜¯ [PhysicsBody] 或 [Area] çš„å项。" #: doc/classes/RigidBody.xml doc/classes/SphereShape.xml #: doc/classes/StaticBody.xml msgid "3D Physics Tests Demo" -msgstr "" +msgstr "3D ç‰©ç†æµ‹è¯•演示" #: doc/classes/BoxShape.xml doc/classes/CollisionShape.xml #: modules/gridmap/doc_classes/GridMap.xml doc/classes/KinematicBody.xml #: doc/classes/Mesh.xml doc/classes/MeshInstance.xml #: doc/classes/MeshLibrary.xml msgid "3D Kinematic Character Demo" -msgstr "" +msgstr "3D 动力å¦è§’色演示" #: doc/classes/BoxShape.xml msgid "" @@ -14008,7 +14018,7 @@ msgstr "" #: doc/classes/PoolStringArray.xml doc/classes/ProjectSettings.xml #: doc/classes/ResourceLoader.xml doc/classes/RichTextLabel.xml msgid "OS Test Demo" -msgstr "" +msgstr "æ“作系统测试演示" #: doc/classes/Button.xml msgid "" @@ -14053,6 +14063,8 @@ msgid "" "button. Uses the same [enum TextAlign] constants as the text alignment. If " "centered, text will draw on top of the icon." msgstr "" +"æŒ‡å®šå›¾æ ‡åº”è¯¥åœ¨æŒ‰é’®ä¸Šå·¦å¯¹é½ã€å³å¯¹é½ã€è¿˜æ˜¯å±…ä¸ã€‚请使用与文本对é½ç›¸åŒçš„ [enum " +"TextAlign] 常é‡ã€‚如果居ä¸ï¼Œæ–‡æœ¬å°†ç»˜åˆ¶åœ¨å›¾æ ‡ä¸Šã€‚" #: doc/classes/Button.xml doc/classes/LinkButton.xml msgid "The button's text that will be displayed inside the button's area." @@ -14555,12 +14567,12 @@ msgstr "" #: doc/classes/Camera2D.xml doc/classes/TileMap.xml doc/classes/TileSet.xml msgid "2D Isometric Demo" -msgstr "" +msgstr "2D ç‰è½´æµ‹æ¼”示" #: doc/classes/Camera2D.xml doc/classes/Environment.xml #: doc/classes/WorldEnvironment.xml msgid "2D HDR Demo" -msgstr "" +msgstr "2D HDR 演示" #: doc/classes/Camera2D.xml msgid "Aligns the camera to the tracked node." @@ -15064,11 +15076,11 @@ msgstr "" #: doc/classes/CanvasItem.xml doc/classes/CanvasLayer.xml #: doc/classes/InputEvent.xml doc/classes/Viewport.xml msgid "Viewport and canvas transforms" -msgstr "" +msgstr "Viewport å’Œç”»å¸ƒå˜æ¢" #: doc/classes/CanvasItem.xml doc/classes/Control.xml doc/classes/Node2D.xml msgid "Custom drawing in 2D" -msgstr "" +msgstr "2D ä¸çš„自定义绘图" #: doc/classes/CanvasItem.xml msgid "" @@ -15330,6 +15342,8 @@ msgid "" "Returns the mouse's position in the [CanvasLayer] that this [CanvasItem] is " "in using the coordinate system of the [CanvasLayer]." msgstr "" +"返回该 [CanvasItem] 所在的 [CanvasLayer] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨è¯¥ [CanvasLayer] " +"çš„åæ ‡ç³»ã€‚" #: doc/classes/CanvasItem.xml msgid "Returns the global transform matrix of this item." @@ -15344,7 +15358,7 @@ msgstr "返回æ¤é¡¹ç›®ç›¸å¯¹äºŽç”»å¸ƒçš„å…¨å±€å˜æ¢çŸ©é˜µã€‚" msgid "" "Returns the mouse's position in this [CanvasItem] using the local coordinate " "system of this [CanvasItem]." -msgstr "" +msgstr "返回该 [CanvasItem] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨è¯¥ [CanvasItem] çš„å±€éƒ¨åæ ‡ç³»ã€‚" #: doc/classes/CanvasItem.xml msgid "Returns the transform matrix of this item." @@ -15688,15 +15702,32 @@ msgstr "" "(在 1+ 层或更高层ä¸ï¼‰æˆ–背景(在 -1 层或更低层ä¸ï¼‰éžå¸¸æœ‰ç”¨ã€‚" #: doc/classes/CanvasLayer.xml -#, fuzzy msgid "Canvas layers" -msgstr "画布绘图层。" +msgstr "画布层" #: doc/classes/CanvasLayer.xml msgid "Returns the RID of the canvas used by this layer." msgstr "返回æ¤å±‚使用的画布的 RID。" #: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" +"如果该 [CanvasItem] ç›®å‰æ˜¯å¯è§çš„,则将其éšè—。ç‰ä»·äºŽå°† [member visible] 设为 " +"[code]false[/code]。" + +#: doc/classes/CanvasLayer.xml +#, fuzzy +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" +"如果该 [CanvasItem] ç›®å‰æ˜¯å¯è§çš„,则将其éšè—。ç‰ä»·äºŽå°† [member visible] 设为 " +"[code]false[/code]。" + +#: doc/classes/CanvasLayer.xml msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." @@ -15750,11 +15781,14 @@ msgid "" "Unlike [member CanvasItem.visible], visibility of a [CanvasLayer] isn't " "propagated to underlying layers." msgstr "" +"为 [code]false[/code] 时,该 [CanvasLayer] 下的所有 [CanvasItem] 都会被éš" +"è—。\n" +"与 [member CanvasItem.visible] ä¸åŒï¼Œ[CanvasLayer] 的显示与å¦ä¸ä¼šä¼ æ’到其内部" +"的层。" #: doc/classes/CanvasLayer.xml -#, fuzzy msgid "Emitted when visibility of the layer is changed. See [member visible]." -msgstr "当VisibilityNotifier退出[Camera]的视图时触å‘。" +msgstr "当该层的å¯è§æ€§å‘生å˜åŒ–时触å‘。请å‚阅 [member visible]。" #: doc/classes/CanvasModulate.xml msgid "Tint the entire canvas." @@ -16118,49 +16152,49 @@ msgstr "用于[CheckButton]文本的[Font]。" #: doc/classes/CheckButton.xml msgid "The icon to display when the [CheckButton] is unchecked." -msgstr "未选ä¸[CheckButton]æ—¶æ˜¾ç¤ºçš„å›¾æ ‡ã€‚" +msgstr "当 [CheckButton] æœªå‹¾é€‰æ—¶ï¼Œæ˜¾ç¤ºçš„å›¾æ ‡ã€‚" #: doc/classes/CheckButton.xml msgid "The icon to display when the [CheckButton] is unchecked and disabled." -msgstr "未选ä¸å’Œç¦ç”¨[CheckButton]æ—¶æ˜¾ç¤ºçš„å›¾æ ‡ã€‚" +msgstr "当 [CheckButton] 未勾选且被ç¦ç”¨æ—¶ï¼Œæ˜¾ç¤ºçš„å›¾æ ‡ã€‚" #: doc/classes/CheckButton.xml msgid "The icon to display when the [CheckButton] is checked." -msgstr "选ä¸[CheckButton]æ—¶æ˜¾ç¤ºçš„å›¾æ ‡ã€‚" +msgstr "当 [CheckButton] å·²å‹¾é€‰æ—¶ï¼Œæ˜¾ç¤ºçš„å›¾æ ‡ã€‚" #: doc/classes/CheckButton.xml msgid "The icon to display when the [CheckButton] is checked and disabled." -msgstr "选ä¸å¹¶ç¦ç”¨[CheckButton]æ—¶æ˜¾ç¤ºçš„å›¾æ ‡ã€‚" +msgstr "当 [CheckButton] 已勾选且被ç¦ç”¨æ—¶ï¼Œæ˜¾ç¤ºçš„å›¾æ ‡ã€‚" #: doc/classes/CheckButton.xml msgid "" "The [StyleBox] to display as a background when the [CheckButton] is disabled." -msgstr "当[CheckButton]被ç¦ç”¨æ—¶ï¼Œä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„[StyleBox]。" +msgstr "当 [CheckButton] 被ç¦ç”¨æ—¶ï¼Œä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。" #: doc/classes/CheckButton.xml msgid "" "The [StyleBox] to display as a background when the [CheckButton] is focused." -msgstr "当[CheckButton]被èšç„¦æ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„[StyleBox]。" +msgstr "当 [CheckButton] 被èšç„¦æ—¶ï¼Œä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。" #: doc/classes/CheckButton.xml msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered." -msgstr "当[CheckButton]è¢«æ‚¬åœæ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„[StyleBox]。" +msgstr "当 [CheckButton] è¢«æ‚¬åœæ—¶ï¼Œä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。" #: doc/classes/CheckButton.xml msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered " "and pressed." -msgstr "当[CheckButton]被悬åœå’ŒæŒ‰ä¸‹æ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„[StyleBox]。" +msgstr "当 [CheckButton] 被悬åœä¸”被按下时,作为背景显示的 [StyleBox]。" #: doc/classes/CheckButton.xml msgid "" "The [StyleBox] to display as a background when the [CheckButton] is pressed." -msgstr "当[CheckButton]被按下时作为背景显示的[StyleBox]。" +msgstr "当 [CheckButton] 被按下时,作为背景显示的 [StyleBox]。" #: doc/classes/CircleShape2D.xml msgid "Circular shape for 2D collisions." -msgstr "用于2D碰撞的圆形。" +msgstr "用于 2D 碰撞的圆形。" #: doc/classes/CircleShape2D.xml msgid "" @@ -16168,8 +16202,8 @@ msgid "" "small characters and its collision detection with everything else is very " "fast." msgstr "" -"用于2D碰撞的圆形形状。这ç§å½¢çŠ¶å¯¹å¡‘é€ çƒæˆ–å°è§’色很有用,它与其他东西的碰撞检测" -"éžå¸¸å¿«ã€‚" +"用于 2D 碰撞的圆形形状。这ç§å½¢çŠ¶å¯¹å¡‘é€ çƒæˆ–å°è§’色很有用,它与其他东西的碰撞检" +"测éžå¸¸å¿«ã€‚" #: doc/classes/CircleShape2D.xml msgid "The circle's radius." @@ -16622,15 +16656,14 @@ msgstr "" "件。" #: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml -#, fuzzy msgid "" "If [code]true[/code], this object is pickable. A pickable object can detect " "the mouse pointer entering/leaving, and if the mouse is inside it, report " "input events. Requires at least one [member collision_layer] bit to be set." msgstr "" -"如果[code]true[/code]ï¼Œè¿™ä¸ªå¯¹è±¡æ˜¯å¯æ‹¾å–çš„ã€‚ä¸€ä¸ªå¯æ‹¾å–的对象å¯ä»¥æ£€æµ‹é¼ æ ‡æŒ‡é’ˆçš„" -"进入/ç¦»å¼€ï¼Œå¦‚æžœé¼ æ ‡åœ¨é‡Œé¢ï¼Œå°±æŠ¥å‘Šè¾“å…¥äº‹ä»¶ã€‚è¦æ±‚至少有一个 " -"[code]collision_layer[/code] ä½è¢«è®¾ç½®ã€‚" +"如果为 [code]true[/code]ï¼Œåˆ™è¯¥å¯¹è±¡æ˜¯å¯æ‹¾å–çš„ã€‚å¯æ‹¾å–的对象å¯ä»¥æ£€æµ‹é¼ æ ‡æŒ‡é’ˆçš„" +"进入/ç¦»å¼€ï¼Œé¼ æ ‡ä½äºŽå…¶ä¸æ—¶ï¼Œå°±ä¼šæŠ¥å‘Šè¾“å…¥äº‹ä»¶ã€‚è¦æ±‚至少设置一个 [member " +"collision_layer] ä½ã€‚" #: doc/classes/CollisionObject.xml msgid "" @@ -16917,9 +16950,8 @@ msgstr "" #: doc/classes/Physics2DDirectSpaceState.xml #: doc/classes/PhysicsDirectBodyState.xml #: doc/classes/PhysicsDirectSpaceState.xml doc/classes/RigidBody.xml -#, fuzzy msgid "Physics introduction" -msgstr "三次æ’值." +msgstr "物ç†ä»‹ç»" #: doc/classes/CollisionShape.xml msgid "" @@ -16963,7 +16995,7 @@ msgstr "" #: doc/classes/RectangleShape2D.xml doc/classes/TileMap.xml #: doc/classes/TileSet.xml msgid "2D Kinematic Character Demo" -msgstr "" +msgstr "2D è¿åЍå¦è§’色演示" #: doc/classes/CollisionShape2D.xml msgid "" @@ -17025,15 +17057,15 @@ msgstr "" #: doc/classes/Color.xml doc/classes/ColorPickerButton.xml msgid "2D GD Paint Demo" -msgstr "" +msgstr "2D GD 画图演示" #: doc/classes/Color.xml doc/classes/ColorPicker.xml msgid "Tween Demo" -msgstr "" +msgstr "Tween 演示" #: doc/classes/Color.xml doc/classes/ColorPickerButton.xml msgid "GUI Drag And Drop Demo" -msgstr "" +msgstr "GUI 拖放演示" #: doc/classes/Color.xml msgid "" @@ -18792,16 +18824,15 @@ msgstr "" #: doc/classes/Control.xml msgid "GUI tutorial index" -msgstr "" +msgstr "GUI 教程索引" #: doc/classes/Control.xml -#, fuzzy msgid "Control node gallery" -msgstr "Control 键。" +msgstr "控件节点一览" #: doc/classes/Control.xml msgid "All GUI Demos" -msgstr "" +msgstr "所有 GUI 演示" #: doc/classes/Control.xml msgid "" @@ -19167,12 +19198,14 @@ msgstr "" "rect_position]。" #: doc/classes/Control.xml +#, fuzzy msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -20218,6 +20251,25 @@ msgid "" msgstr "更改æ¤å±žæ€§å°†æ›¿æ¢è¯¥èŠ‚ç‚¹åŠå…¶æ‰€æœ‰[Control]å级使用的当å‰[Theme]资æºã€‚" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "在节点获得键盘焦点时å‘出。" @@ -21866,6 +21918,11 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"ä½ å¯ä»¥ä½¿ç”¨è¯¥èŠ‚ç‚¹åœ¨ CSG 系统ä¸åˆ›å»ºé•¿æ–¹ä½“。\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGBox.xml modules/csg/doc_classes/CSGCombiner.xml #: modules/csg/doc_classes/CSGCylinder.xml modules/csg/doc_classes/CSGMesh.xml @@ -21874,7 +21931,7 @@ msgstr "" #: modules/csg/doc_classes/CSGShape.xml modules/csg/doc_classes/CSGSphere.xml #: modules/csg/doc_classes/CSGTorus.xml msgid "Prototyping levels with CSG" -msgstr "" +msgstr "使用 CSG 设计关å¡åŽŸåž‹" #: modules/csg/doc_classes/CSGBox.xml msgid "Depth of the box measured from the center of the box." @@ -21897,7 +21954,6 @@ msgid "A CSG node that allows you to combine other CSG modifiers." msgstr "å…许您组åˆå…¶ä»– CSG 修改器的 CSG 节点。" #: modules/csg/doc_classes/CSGCombiner.xml -#, fuzzy msgid "" "For complex arrangements of shapes, it is sometimes needed to add structure " "to your CSG nodes. The CSGCombiner node allows you to create this structure. " @@ -21913,11 +21969,15 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" -"å¯¹äºŽå¤æ‚的形状排列,有时需è¦å‘CSGèŠ‚ç‚¹æ·»åŠ ç»“æž„ä½“ã€‚CSGCombiner节点å…è®¸ä½ åˆ›å»ºè¿™" -"ç§ç»“构体。该节点å°è£…了其å节点的CSGæ“ä½œçš„ç»“æžœã€‚é€šè¿‡è¿™ç§æ–¹å¼ï¼Œå¯ä»¥å¯¹ä½œä¸ºä¸€ä¸ª" -"CSGCombiner节点的å节点的一组形状进行æ“作,并对作为第二个CSGCombiner节点的å" -"节点的第二组形状进行å•独的æ“作,然åŽè¿›è¡Œæ“作,将两个最终结果作为其输入æ¥åˆ›å»º" -"最终形状。" +"å¯¹äºŽå¤æ‚的形状排列,有时需è¦å‘ CSG èŠ‚ç‚¹æ·»åŠ ç»“æž„ä½“ã€‚CSGCombiner 节点å…è®¸ä½ åˆ›å»º" +"è¿™ç§ç»“构体。该节点å°è£…了其å节点的 CSG æ“ä½œçš„ç»“æžœã€‚é€šè¿‡è¿™ç§æ–¹å¼ï¼Œå¯ä»¥å¯¹ä½œä¸ºä¸€" +"个 CSGCombiner 节点的å节点的一组形状进行æ“作,并对作为第二个 CSGCombiner 节" +"点的å节点的第二组形状进行å•独的æ“作,然åŽè¿›è¡Œæ“作,将两个最终结果作为其输入" +"æ¥åˆ›å»ºæœ€ç»ˆå½¢çŠ¶ã€‚\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGCylinder.xml msgid "A CSG Cylinder shape." @@ -21933,6 +21993,11 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"ä½ å¯ä»¥ä½¿ç”¨è¯¥èŠ‚ç‚¹åœ¨ CSG 系统ä¸åˆ›å»ºåœ†æŸ±ä½“(或圆锥体)。\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGCylinder.xml msgid "" @@ -21983,6 +22048,13 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"ä½ å¯ä»¥ä½¿ç”¨è¯¥èŠ‚ç‚¹å°†ä»»ä½•ç½‘æ ¼èµ„æºç”¨ä½œ CSG 形状,åªè¦è¯¥ç½‘æ ¼æ˜¯é—åˆçš„ã€æ²¡æœ‰è‡ªæˆ‘è´¯" +"ç©¿ã€ä¸åŒ…å«å†…部é¢ã€æ¯æ¡è¾¹æ‰€è¿žæŽ¥çš„é¢ä¸è¶…过两个。è¦å°† 2D 多边形挤出用作 CSG 节" +"点,请å‚阅 [CSGPolygon]。\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGMesh.xml msgid "The [Material] used in drawing the CSG shape." @@ -22016,6 +22088,12 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"å°† 2D 顶点数组快速挤出,创建å„ç§ 3D ç½‘æ ¼ã€‚è¦å°† 3D ç½‘æ ¼ç”¨ä½œ CSG 节点,请å‚阅 " +"[CSGMesh]。\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGPolygon.xml msgid "" @@ -22124,6 +22202,11 @@ msgid "" "[b]Note:[/b] If only 1 or 2 points are defined in [member polygon], no mesh " "will be generated." msgstr "" +"é¡¶ç‚¹æ•°ç»„ï¼Œç”¨äºŽå®šä¹‰è¦æŒ¤å‡ºçš„ 2D 多边形。需è¦åŒ…å« 3 个或更多顶点,å¯ä»¥æ˜¯å‡¸å¤šè¾¹å½¢" +"也å¯ä»¥æ˜¯å‡¹å¤šè¾¹å½¢ã€‚该多边形ä¸[i]ä¸èƒ½[/i]å˜åœ¨ç›¸äº¤çš„边。å¦åˆ™ï¼Œä¸‰è§’形化会失败,ä¸" +"会生æˆä»»ä½•ç½‘æ ¼ã€‚\n" +"[b]注æ„:[/b]如果 [member polygon] ä¸åªå®šä¹‰äº† 1 个或 2 个顶点,则ä¸ä¼šç”Ÿæˆç½‘" +"æ ¼ã€‚" #: modules/csg/doc_classes/CSGPolygon.xml msgid "If [code]true[/code], applies smooth shading to the extrusions." @@ -22213,6 +22296,12 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"å„ç§ CSG 图元的父类,包å«äº†å®ƒä»¬æ‰€éœ€çš„公共代ç å’ŒåŠŸèƒ½ã€‚æ— æ³•ç›´æŽ¥ä½¿ç”¨è¿™ä¸ªç±»ï¼Œè¯·ä½¿" +"用继承它的å„ç§ç±»ã€‚\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGPrimitive.xml msgid "Invert the faces of the mesh." @@ -22232,6 +22321,11 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"为 Godot ä¸çš„å„ç§ CSG 节点æä¾› CSG æ“作支æŒçš„ CSG 基类。\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGShape.xml doc/classes/RayCast2D.xml #: doc/classes/SoftBody.xml @@ -22359,6 +22453,11 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"ä½ å¯ä»¥ä½¿ç”¨è¯¥èŠ‚ç‚¹åœ¨ CSG 系统ä¸åˆ›å»ºçƒä½“。\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGSphere.xml msgid "The material used to render the sphere." @@ -22398,6 +22497,11 @@ msgid "" "node also has a significant CPU cost, so it should be avoided during " "gameplay." msgstr "" +"ä½ å¯ä»¥ä½¿ç”¨è¯¥èŠ‚ç‚¹åœ¨ CSG 系统ä¸åˆ›å»ºåœ†çŽ¯ä½“ã€‚\n" +"[b]注æ„:[/b]CSG 节点是为制作关å¡åŽŸåž‹å‡†å¤‡çš„ã€‚ä¸Žåˆ›å»ºä½¿ç”¨ [PrimitiveMesh] çš„ " +"[MeshInstance] 相比,创建 CSG 节点对 CPU 资æºçš„æ¶ˆè€—更显著。在一个 CSG 节点ä¸" +"移动å¦ä¸€ä¸ª CSG 节点也会产生显著的 CPU 消耗,所以应当在游æˆè¿‡ç¨‹ä¸é¿å…进行类似" +"æ“作。" #: modules/csg/doc_classes/CSGTorus.xml msgid "The inner radius of the torus." @@ -22639,6 +22743,8 @@ msgid "" "Setting this option to [code]false[/code] can be used to prevent an instance " "being merged." msgstr "" +"用于对 [RoomManager] çš„ç½‘æ ¼åˆå¹¶åŠŸèƒ½è¿›è¡Œå¾®è°ƒã€‚\n" +"将该选项设为 [code]false[/code] å¯ä»¥é¿å…实例被åˆå¹¶ã€‚" #: doc/classes/CullInstance.xml msgid "" @@ -23598,7 +23704,7 @@ msgstr "" #: doc/classes/Dictionary.xml msgid "GDScript basics: Dictionary" -msgstr "" +msgstr "GDScript 基础:å—å…¸" #: doc/classes/Dictionary.xml msgid "Clear the dictionary, removing all key/value pairs." @@ -23668,7 +23774,6 @@ msgid "" msgstr "如果å—典具有给定数组ä¸çš„æ‰€æœ‰é”®ï¼Œåˆ™è¿”回 [code]true[/code] 。" #: doc/classes/Dictionary.xml -#, fuzzy msgid "" "Returns a hashed 32-bit integer value representing the dictionary contents. " "This can be used to compare dictionaries by value:\n" @@ -23686,14 +23791,17 @@ msgid "" "values does [i]not[/i] imply the dictionaries are equal, because different " "dictionaries can have identical hash values due to hash collisions." msgstr "" -"返回一个代表å—典内容的哈希整数值。这å¯ä»¥ç”¨æ¥æ¯”较å—典的值。\n" +"返回代表该å—典内容的 32 使•´æ•°å“ˆå¸Œå€¼ã€‚å¯ç”¨äºŽæŒ‰å€¼æ¯”较å—典:\n" "[codeblock]\n" "var dict1 = {0: 10}\n" "var dict2 = {0: 10}\n" "# 下é¢è¿™ä¸€è¡Œä¼šè¾“出 `true`,而如果直接比较这两个å˜é‡å°±ä¼šè¾“出 `false`。\n" "print(dict1.hash() == dict2.hash())\n" "[/codeblock]\n" -"[b]注æ„:[/b]具有相åŒé”®/值但顺åºä¸åŒçš„å—典将有ä¸åŒçš„哈希值。" +"[b]注æ„:[/b]具有相åŒé”®/值但顺åºä¸åŒçš„å—典将有ä¸åŒçš„哈希值。\n" +"[b]注æ„:[/b]内容相åŒçš„å—典会得到一致的哈希值。然而,å之ä¸ç„¶ã€‚返回一致的哈希" +"值[i]å¹¶ä¸[/i]æ„味ç€å—典相ç‰ï¼Œå› 为ä¸åŒçš„å—å…¸å¯èƒ½å› 为哈希碰撞而得到一致的哈希" +"值。" #: doc/classes/Dictionary.xml msgid "Returns the list of keys in the [Dictionary]." @@ -25474,7 +25582,7 @@ msgstr "" #: doc/classes/EditorInspectorPlugin.xml msgid "Inspector plugins" -msgstr "" +msgstr "检查器æ’ä»¶" #: doc/classes/EditorInspectorPlugin.xml msgid "Adds a custom control, which is not necessarily a property editor." @@ -25804,10 +25912,10 @@ msgid "" "your custom control with [method remove_control_from_bottom_panel] and free " "it with [method Node.queue_free]." msgstr "" -"å°†æŽ§ä»¶æ·»åŠ åˆ°åº•éƒ¨é¢æ¿ï¼ˆä»¥åŠâ€œè¾“出â€ï¼Œâ€œè°ƒè¯•â€ï¼Œâ€œåŠ¨ç”»â€ç‰ï¼‰ã€‚è¿”å›žå¯¹æ·»åŠ çš„æŒ‰é’®çš„å¼•" -"用。您å¯ä»¥æ ¹æ®éœ€è¦éšè—/显示按钮。åœç”¨æ’ä»¶åŽï¼Œè¯·ç¡®ä¿ä½¿ç”¨[method " -"remove_control_from_bottom_panel]åˆ é™¤è‡ªå®šä¹‰æŽ§ä»¶ï¼Œå¹¶ä½¿ç”¨[method Node." -"queue_free]释放它。" +"å°†æŽ§ä»¶æ·»åŠ åˆ°åº•éƒ¨é¢æ¿ï¼ˆåŒ…å«â€œè¾“出â€â€œè°ƒè¯•â€â€œåŠ¨ç”»â€ç‰ï¼‰ã€‚è¿”å›žå¯¹æ·»åŠ çš„æŒ‰é’®çš„å¼•ç”¨ã€‚æ‚¨" +"å¯ä»¥æ ¹æ®éœ€è¦éšè—/显示按钮。åœç”¨æ’ä»¶åŽï¼Œè¯·ç¡®ä¿ä½¿ç”¨ [method " +"remove_control_from_bottom_panel] 移除自定义控件,并使用 [method Node." +"queue_free] 释放。" #: doc/classes/EditorPlugin.xml msgid "" @@ -27915,7 +28023,6 @@ msgstr "" "code] 是新文件ä¸çš„行数。" #: doc/classes/EditorVCSInterface.xml -#, fuzzy msgid "" "Helper function to create a [code]Dictionary[/code] for storing a line diff. " "[code]new_line_no[/code] is the line number in the new file (can be " @@ -27927,8 +28034,8 @@ msgstr "" "创建用于ä¿å˜è¡Œå·®å¼‚çš„ [code]Dictionary[/code] 的辅助函数。[code]new_line_no[/" "code] 是新文件ä¸çš„行å·ï¼ˆè¯¥è¡Œè¢«åˆ 除时å¯ä¸º [code]-1[/code])。" "[code]old_line_no[/code] 是旧文件ä¸çš„行å·ï¼ˆè¯¥è¡Œä¸ºæ–°å¢žæ—¶å¯ä¸º [code]-1[/" -"code])。[code]content[/code] 为差异文本。[code]content[/code] 为差异文本。" -"[code]status[/code] 为ä¿å˜è¯¥è¡ŒåŽŸç‚¹çš„å•å—符å—符串。" +"code])。[code]content[/code] 为差异文本。[code]status[/code] 为ä¿å˜è¯¥è¡ŒåŽŸç‚¹" +"çš„å•å—符å—符串。" #: doc/classes/EditorVCSInterface.xml msgid "" @@ -28351,7 +28458,6 @@ msgid "" msgstr "用于定义多个渲染选项的环境节点(如 [WorldEnvironment])的资æºã€‚" #: doc/classes/Environment.xml -#, fuzzy msgid "" "Resource for environment nodes (like [WorldEnvironment]) that define " "multiple environment operations (such as background [Sky] or [Color], " @@ -28381,24 +28487,29 @@ msgstr "" "- 辉光\n" "- è‰²è°ƒæ˜ å°„ï¼ˆè‡ªåŠ¨æ›å…‰ï¼‰\n" "- 调整\n" -"这些效果仅在 [Viewport] 的预期使用方法为“3Dâ€æˆ–者“3D Without Effectsâ€æ—¶ç”Ÿæ•ˆã€‚" +"å¦‚æžœç›®æ ‡ [Viewport] 被设为了“2D Without Samplingâ€ï¼Œåˆ™æ‰€æœ‰çš„åŽå¤„ç†ç‰¹æ•ˆéƒ½ä¸å¯" +"用。如果是 “3D Without Effectâ€ï¼Œåˆ™ä»¥ä¸‹é€‰é¡¹ä¸å¯ç”¨ï¼š\n" +"- Ssao(å±å¹•空间环境光é®è”½ï¼‰\n" +"- Ss Reflections(å±å¹•空间å射)\n" "æ ¹è§†çª—çš„é¢„æœŸä½¿ç”¨æ–¹æ³•å¯ä»¥é€šè¿‡ [member ProjectSettings.rendering/quality/" "intended_usage/framebuffer_allocation] 调整,其他视窗通过 [member Viewport." -"usage] 调整。" +"usage] 调整。\n" +"请注æ„,[member ProjectSettings.rendering/quality/intended_usage/" +"framebuffer_allocation] 的移动平å°è¦†ç›–项默认使用“3D Without Effectsâ€ã€‚è¿™æ ·å¯" +"以æå‡ç§»åŠ¨è®¾å¤‡ä¸Šçš„æ€§èƒ½ï¼Œä½†åŒæ—¶ä¼šå½±å“移动设备上的å±å¹•显示。" #: doc/classes/Environment.xml doc/classes/WorldEnvironment.xml -#, fuzzy msgid "Environment and post-processing" -msgstr "$DOCS_URL/tutorials/3d/environment_and_post_processing.html" +msgstr "çŽ¯å¢ƒå’ŒåŽæœŸå¤„ç†" #: doc/classes/Environment.xml msgid "Light transport in game engines" -msgstr "" +msgstr "游æˆå¼•擎ä¸çš„å…‰ä¼ é€’" #: doc/classes/Environment.xml doc/classes/Material.xml doc/classes/Mesh.xml #: doc/classes/MeshInstance.xml doc/classes/WorldEnvironment.xml msgid "3D Material Testers Demo" -msgstr "" +msgstr "3D æè´¨æµ‹è¯•演示" #: doc/classes/Environment.xml msgid "" @@ -28472,7 +28583,6 @@ msgid "" msgstr "环境光的能é‡ã€‚值越高,光照越强。" #: doc/classes/Environment.xml -#, fuzzy msgid "" "Defines the amount of light that the sky brings on the scene. A value of " "[code]0.0[/code] means that the sky's light emission has no effect on the " @@ -28483,9 +28593,11 @@ msgid "" "[b]Note:[/b] [member ambient_light_sky_contribution] is internally clamped " "between [code]0.0[/code] and [code]1.0[/code] (inclusive)." msgstr "" -"定义天空给场景带æ¥çš„光照é‡ã€‚值为 0 表示天空的å‘光对场景照明没有影å“ï¼Œå› æ¤æ‰€æœ‰" -"的环境照明都由环境光æä¾›ã€‚相å,值为 1 表示所有影å“场景的光线都由天空æä¾›ï¼Œå› " -"æ¤çŽ¯å¢ƒå…‰å‚æ•°å¯¹åœºæ™¯æ²¡æœ‰å½±å“。" +"定义天空给场景带æ¥çš„光照é‡ã€‚值为 [code]0.0[/code] 表示天空的å‘光对场景照明没" +"有影å“ï¼Œå› æ¤æ‰€æœ‰çš„环境照明都由环境光æä¾›ã€‚相å,值为 [code]1.0[/code] 表示[i]" +"所有[/i]å½±å“场景的光线都由天空æä¾›ï¼Œå› æ¤çŽ¯å¢ƒå…‰å‚æ•°å¯¹åœºæ™¯æ²¡æœ‰å½±å“。\n" +"[b]注æ„:[/b]内部会将 [member ambient_light_sky_contribution] é™åˆ¶åœ¨ " +"[code]0.0[/code] 到 [code]1.0[/code] 之间(é—区间)。" #: doc/classes/Environment.xml msgid "" @@ -28741,8 +28853,23 @@ msgstr "" "界相机的æˆåƒå·¥ä»¶ã€‚" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." -msgstr "如果为[code]true[/code],则å¯ç”¨glow效果。" +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." +msgstr "" #: doc/classes/Environment.xml msgid "" @@ -29301,7 +29428,7 @@ msgstr "" #: doc/classes/File.xml msgid "File system" -msgstr "" +msgstr "文件系统" #: doc/classes/File.xml msgid "" @@ -30076,18 +30203,12 @@ msgstr "" "code]。" #: doc/classes/float.xml -#, fuzzy msgid "Wikipedia: Double-precision floating-point format" -msgstr "" -"https://zh.wikipedia.org/zh-cn/" -"%E9%9B%99%E7%B2%BE%E5%BA%A6%E6%B5%AE%E9%BB%9E%E6%95%B8" +msgstr "维基百科:åŒç²¾åº¦æµ®ç‚¹æ•°æ ¼å¼" #: doc/classes/float.xml -#, fuzzy msgid "Wikipedia: Single-precision floating-point format" -msgstr "" -"https://zh.wikipedia.org/zh-cn/" -"%E5%96%AE%E7%B2%BE%E5%BA%A6%E6%B5%AE%E9%BB%9E%E6%95%B8" +msgstr "维基百科:å•ç²¾åº¦æµ®ç‚¹æ•°æ ¼å¼" #: doc/classes/float.xml msgid "" @@ -30122,9 +30243,8 @@ msgstr "" "[code]float(\"1e3a2\")[/code] 将返回 1000.0。" #: doc/classes/FlowContainer.xml -#, fuzzy msgid "Base class for flow containers." -msgstr "ç›’å¼å®¹å™¨çš„基类。" +msgstr "æµå¼å®¹å™¨çš„基类。" #: doc/classes/FlowContainer.xml msgid "" @@ -30133,11 +30253,13 @@ msgid "" "A line is filled with [Control] nodes until no more fit on the same line, " "similar to text in an autowrapped label." msgstr "" +"å°†å [Control] èŠ‚ç‚¹åž‚ç›´æˆ–æ°´å¹³æŽ’åˆ—ï¼ŒæŒ‰ç…§ä»Žå·¦åˆ°å³æˆ–ä»Žä¸Šåˆ°ä¸‹çš„é¡ºåºæ¢è¡Œã€‚\n" +"åŒä¸€è¡Œä¸æ— 法å†å®¹çº³æ›´å¤š [Control] 节点时会å¦èµ·ä¸€è¡Œï¼Œä¸Žè‡ªåЍæ¢è¡Œæ ‡ç¾ä¸çš„æ–‡æœ¬ç±»" +"似。" #: doc/classes/FlowContainer.xml -#, fuzzy msgid "Returns the current line count." -msgstr "返回当å‰çš„æ»šåЍä½ç½®ã€‚" +msgstr "返回当å‰çš„行数。" #: doc/classes/Font.xml msgid "Internationalized font and text drawing support." @@ -31360,13 +31482,15 @@ msgstr "" "一个空的 [PoolIntArray]。" #: doc/classes/Geometry.xml +#, fuzzy msgid "" "Triangulates the polygon specified by the points in [code]polygon[/code]. " "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" "对多边形 [code]polygon[/code] ä¸çš„点指定的多边形进行三角化。返回一个 " "[PoolIntArray]ï¼Œå…¶ä¸æ¯ä¸ªä¸‰è§’形由 [code]polygon[/code] ä¸ä¸‰ä¸ªè¿žç»çš„点索引组æˆ" @@ -31676,9 +31800,10 @@ msgstr "" #: doc/classes/GIProbe.xml msgid "GI probes" -msgstr "" +msgstr "GI 探针" #: doc/classes/GIProbe.xml +#, fuzzy msgid "" "Bakes the effect from all [GeometryInstance]s marked with [member " "GeometryInstance.use_in_baked_light] and [Light]s marked with either " @@ -31691,7 +31816,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" "çƒ˜ç„™æ‰€æœ‰æ ‡æœ‰ [member GeometryInstance.use_in_baked_light] çš„ " "[GeometryInstance] å’Œæ ‡æœ‰ [constant Light.BAKE_INDIRECT] 或 [constant Light." @@ -32884,7 +33014,7 @@ msgstr "" #: modules/gridmap/doc_classes/GridMap.xml msgid "Using gridmaps" -msgstr "" +msgstr "ä½¿ç”¨ç½‘æ ¼åœ°å›¾" #: modules/gridmap/doc_classes/GridMap.xml msgid "Clear all cells." @@ -32936,11 +33066,10 @@ msgid "" msgstr "返回一个包å«ç½‘æ ¼ä¸éžç©ºå•å…ƒæ ¼åæ ‡çš„ [Vector3] 数组。" #: modules/gridmap/doc_classes/GridMap.xml -#, fuzzy msgid "" "Returns an array of all cells with the given item index specified in " "[code]item[/code]." -msgstr "返回所有具有[code]id[/code]䏿Œ‡å®šçš„图å—索引的å•å…ƒæ ¼çš„æ•°ç»„ã€‚" +msgstr "返回所有具有 [code]item[/code] 䏿Œ‡å®šçš„项目索引的å•å…ƒæ ¼çš„æ•°ç»„ã€‚" #: modules/gridmap/doc_classes/GridMap.xml msgid "" @@ -33217,14 +33346,12 @@ msgid "" msgstr "高度图数æ®çš„宽度。更改æ¤è®¾ç½®å°†è°ƒæ•´ [member map_data] 的大å°ã€‚" #: doc/classes/HFlowContainer.xml -#, fuzzy msgid "Horizontal flow container." -msgstr "水平盒å¼å®¹å™¨ã€‚" +msgstr "æ°´å¹³æµå¼å®¹å™¨ã€‚" #: doc/classes/HFlowContainer.xml -#, fuzzy msgid "Horizontal version of [FlowContainer]." -msgstr "水平拆分容器。" +msgstr "[FlowContainer] 的水平版本。" #: doc/classes/HingeJoint.xml msgid "A hinge between two 3D PhysicsBodies." @@ -34898,7 +35025,7 @@ msgstr "" #: doc/classes/Image.xml doc/classes/ImageTexture.xml msgid "Importing images" -msgstr "" +msgstr "导入图åƒ" #: doc/classes/Image.xml msgid "" @@ -35821,9 +35948,8 @@ msgid "" msgstr "原始纹ç†ï¼ˆåœ¨åŽ‹ç¼©å‰ï¼‰æ˜¯æ³•线纹ç†ï¼ˆä¾‹å¦‚,å¯ä»¥åŽ‹ç¼©ä¸ºä¸¤ä¸ªé€šé“)。" #: doc/classes/Image.xml -#, fuzzy msgid "Source texture (before compression) is a [TextureLayered]." -msgstr "原始纹ç†ï¼ˆåœ¨åŽ‹ç¼©å‰ï¼‰ä½¿ç”¨ sRGB 空间。" +msgstr "原始纹ç†ï¼ˆåœ¨åŽ‹ç¼©å‰ï¼‰æ˜¯ [TextureLayered]。" #: doc/classes/ImageTexture.xml msgid "A [Texture] based on an [Image]." @@ -36080,7 +36206,7 @@ msgstr "" #: doc/classes/Input.xml msgid "Inputs tutorial index" -msgstr "" +msgstr "输入教程索引" #: doc/classes/Input.xml msgid "" @@ -36659,6 +36785,9 @@ msgid "" "limits of the game window if [enum MouseMode] is set to [constant " "MOUSE_MODE_CONFINED]." msgstr "" +"å°†é¼ æ ‡ä½ç½®è®¾ä¸ºæŒ‡å®šçš„å‘é‡ï¼Œå•ä½ä¸ºåƒç´ ,以游æˆçª—å£çš„左上角作为原点。\n" +"é¼ æ ‡ä½ç½®ä¼šè¢«é™åˆ¶åœ¨å±å¹•分辨率内,如果 [enum MouseMode] 为 [constant " +"MOUSE_MODE_CONFINED] 时则是é™åˆ¶åœ¨æ¸¸æˆçª—å£å†…。" #: doc/classes/Input.xml msgid "Emitted when a joypad device has been connected or disconnected." @@ -36812,7 +36941,7 @@ msgstr "å„ç§è¾“入事件的基类。请å‚阅 [method Node._input]。" #: doc/classes/InputEvent.xml msgid "InputEvent" -msgstr "" +msgstr "InputEvent" #: doc/classes/InputEvent.xml msgid "" @@ -36983,9 +37112,8 @@ msgstr "" "èœå•ä¸çš„[b]键使˜ å°„[/b]选项å¡ä¸åˆ›å»ºã€‚请å‚阅 [method Node._input]。" #: doc/classes/InputEventAction.xml -#, fuzzy msgid "InputEvent: Actions" -msgstr "动作的输入事件类型。" +msgstr "InputEvent:动作" #: doc/classes/InputEventAction.xml msgid "The action's name. Actions are accessed via this [String]." @@ -37204,18 +37332,15 @@ msgstr "" #: doc/classes/InputEventMIDI.xml msgid "MIDI Message Status Byte List" -msgstr "" +msgstr "MIDI 消æ¯çжæ€å—节列表" #: doc/classes/InputEventMIDI.xml msgid "Wikipedia General MIDI Instrument List" -msgstr "" +msgstr "维基百科通用 MIDI ä¹å™¨åˆ—表" #: doc/classes/InputEventMIDI.xml -#, fuzzy msgid "Wikipedia Piano Key Frequencies List" -msgstr "" -"https://zh.wikipedia.org/zh-cn/" -"%E9%8B%BC%E7%90%B4%E9%8D%B5%E9%A0%BB%E7%8E%87#%E5%88%97%E8%A1%A8" +msgstr "维基百科钢ç´ç´é”®é¢‘率列表" #: doc/classes/InputEventMIDI.xml msgid "" @@ -37327,6 +37452,10 @@ msgid "" "in the [CanvasLayer] that the [Control] is in using the coordinate system of " "the [CanvasLayer]." msgstr "" +"在 [method Node._input] 或 [method Node._unhandled_input] ä¸èŽ·å–æ—¶ï¼Œè¿”å›žæ ¹ " +"[Viewport] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨æ ¹ [Viewport] çš„åæ ‡ç³»ã€‚\n" +"在 [method Control._gui_input] ä¸èŽ·å–æ—¶ï¼Œè¿”回该 [Control] 所在的 " +"[CanvasLayer] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨è¯¥ [CanvasLayer] çš„åæ ‡ç³»ã€‚" #: doc/classes/InputEventMouse.xml msgid "" @@ -37336,6 +37465,10 @@ msgid "" "When received in [method Control._gui_input], returns the mouse's position " "in the [Control] using the local coordinate system of the [Control]." msgstr "" +"在 [method Node._input] 或 [method Node._unhandled_input] ä¸èŽ·å–æ—¶ï¼Œè¿”回该 " +"[Node] 所在 [Viewport] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨è¯¥ [Viewport] çš„åæ ‡ç³»ã€‚\n" +"在 [method Control._gui_input] ä¸èŽ·å–æ—¶ï¼Œè¿”回该 [Control] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨" +"该 [Control] çš„åæ ‡ç³»ã€‚" #: doc/classes/InputEventMouseButton.xml msgid "Input event type for mouse button events." @@ -37390,19 +37523,18 @@ msgid "" "Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to " "avoid visible gaps in lines if the user is moving the mouse quickly." msgstr "" -"包å«é¼ æ ‡å’Œç¬”çš„è¿åŠ¨ä¿¡æ¯ã€‚支æŒç›¸å¯¹ã€ç»å¯¹ä½ç½®å’Œé€Ÿåº¦ã€‚å‚阅[method Node." +"包å«é¼ æ ‡å’Œç¬”çš„è¿åŠ¨ä¿¡æ¯ã€‚支æŒç›¸å¯¹ã€ç»å¯¹ä½ç½®å’Œé€Ÿåº¦ã€‚请å‚阅 [method Node." "_input]。\n" "[b]注æ„:[/b]默认情况下,这个事件最多åªèƒ½åœ¨æ¯ä¸€å¸§æ¸²æŸ“ä¸å‘å‡ºä¸€æ¬¡ã€‚å¦‚æžœä½ éœ€è¦æ›´" -"精确的输入报告,请用[code]false[/code]调用[method Input." -"set_use_accumulated_input]æ¥ä½¿äº‹ä»¶å°½å¯èƒ½é¢‘ç¹åœ°å‘å°„ã€‚å¦‚æžœä½ ä½¿ç”¨" -"InputEventMouseMotionæ¥ç”»çº¿ï¼Œè¯·è€ƒè™‘åŒæ—¶å®žçް[url=https://en.wikipedia.org/" -"wiki/Bresenham%27s_line_algorithm]Bresenham的线æ¡ç®—法[/url],以é¿å…在用户快速" -"ç§»åŠ¨é¼ æ ‡æ—¶å‡ºçŽ°å¯è§çš„线æ¡ç©ºéš™ã€‚" +"精确的输入报告,请用 [code]false[/code] 调用 [method Input." +"set_use_accumulated_input] æ¥ä½¿äº‹ä»¶å°½å¯èƒ½é¢‘ç¹åœ°å‘å°„ã€‚å¦‚æžœä½ ä½¿ç”¨ " +"InputEventMouseMotion æ¥ç”»çº¿ï¼Œè¯·è€ƒè™‘åŒæ—¶å®žçް [url=https://en.wikipedia.org/" +"wiki/Bresenham%27s_line_algorithm]Bresenham 的线æ¡ç®—法[/url],以é¿å…在用户快" +"é€Ÿç§»åŠ¨é¼ æ ‡æ—¶å‡ºçŽ°å¯è§çš„线æ¡ç©ºéš™ã€‚" #: doc/classes/InputEventMouseMotion.xml -#, fuzzy msgid "Mouse and input coordinates" -msgstr "X åæ ‡ä¸Šçš„åŠå移。" +msgstr "é¼ æ ‡å’Œè¾“å…¥åæ ‡" #: doc/classes/InputEventMouseMotion.xml msgid "" @@ -38502,6 +38634,8 @@ msgid "" "waiting to be activated.\n" "[b]Note:[/b] Only relevant when exported as a Progressive Web App." msgstr "" +"如果该æ¸è¿›å¼ç½‘ç»œåº”ç”¨ç¨‹åºæœ‰æ–°ç‰ˆæœ¬ç‰å¾…激活,则返回 [code]true[/code]。\n" +"[b]注æ„:[/b]åªåœ¨å¯¼å‡ºä¸ºæ¸è¿›å¼ç½‘络应用程åºï¼ˆProgressive Web App)时相关。" #: doc/classes/JavaScript.xml msgid "" @@ -38511,6 +38645,10 @@ msgid "" "[b]Note:[/b] Only relevant when exported as a Progressive Web App and " "[method pwa_needs_update] returns [code]true[/code]." msgstr "" +"执行该æ¸è¿›å¼ç½‘络应用程åºçš„åœ¨çº¿æ›´æ–°ã€‚å¼ºåˆ¶å®‰è£…æ–°ç‰ˆæœ¬å¹¶é‡æ–°è½½å…¥è¯¥é¡µé¢ã€‚\n" +"[b]注æ„:[/b]ä½ çš„åº”ç”¨ç¨‹åºå°†[b]在所有æµè§ˆå™¨æ ‡ç¾é¡µä¸é‡æ–°è½½å…¥[/b]。\n" +"[b]注æ„:[/b]åªåœ¨å¯¼å‡ºä¸ºæ¸è¿›å¼ç½‘络应用程åºï¼ˆProgressive Web App)且 [method " +"pwa_needs_update] 返回 [code]true[/code] 时相关。" #: doc/classes/JavaScript.xml msgid "" @@ -38518,6 +38656,8 @@ msgid "" "waiting to be activated because a previous version is active. See [method " "pwa_update] to force the update to take place immediately." msgstr "" +"在检测到该æ¸è¿›å¼ç½‘络应用程åºçš„æ›´æ–°ï¼Œä½†å› 为å˜åœ¨æ´»åŠ¨çš„è¾ƒæ—©ç‰ˆæœ¬è€Œç‰å¾…激活时触" +"å‘。è¦å¼ºåˆ¶ç«‹å³æ‰§è¡Œæ›´æ–°ï¼Œè¯·å‚阅 [method pwa_update]。" #: doc/classes/JavaScriptObject.xml msgid "A wrapper class for native JavaScript objects." @@ -38620,7 +38760,7 @@ msgstr "" #: doc/classes/JNISingleton.xml msgid "Creating Android plugins" -msgstr "" +msgstr "创建 Android æ’ä»¶" #: doc/classes/Joint.xml msgid "Base class for all 3D joints." @@ -38638,7 +38778,7 @@ msgstr "" #: doc/classes/Joint.xml doc/classes/RigidBody.xml doc/classes/VehicleBody.xml #: doc/classes/VehicleWheel.xml msgid "3D Truck Town Demo" -msgstr "" +msgstr "3D 货车镇演示" #: doc/classes/Joint.xml msgid "" @@ -38715,7 +38855,6 @@ msgid "" msgstr "è§£æžä¸€ä¸ªJSONç¼–ç çš„å—符串并返回一个包å«ç»“果的[JSONParseResult]。" #: doc/classes/JSON.xml -#, fuzzy msgid "" "Converts a [Variant] var to JSON text and returns the result. Useful for " "serializing data to store or send over the network.\n" @@ -38767,12 +38906,14 @@ msgid "" "}\n" "[/codeblock]" msgstr "" -"å°† [Variant] var 转æ¢ä¸º JSON 文本并返回结果。用于åºåˆ—化数æ®ä»¥é€šè¿‡ç½‘络å˜å‚¨æˆ–å‘" -"é€ã€‚\n" -"[b]注:[/b] JSON 规范没有定义 integer 或 float 类型,而åªå®šä¹‰äº† [i]number[/" -"i] ç±»åž‹ã€‚å› æ¤ï¼Œå°† Variant 转æ¢ä¸º JSON 文本会将所有数值转æ¢ä¸º [float] 类型。\n" -"使用 [code]indent[/code] 傿•°æ¥ç¾Žè§‚地打å°è¾“出。\n" -"[b]示例输出:[/b]\n" +"å°† [Variant] å˜é‡è½¬æ¢ä¸º JSON 文本并返回结果。å¯ç”¨äºŽå°†æ•°æ®è¿›è¡Œåºåˆ—化ä¿å˜æˆ–通过" +"网络å‘é€ã€‚\n" +"[b]注æ„:[/b]JSON è§„èŒƒæ²¡æœ‰å®šä¹‰æ•´æ•°å’Œæµ®ç‚¹æ•°ç±»åž‹ï¼Œåªæœ‰ä¸€ä¸ª[i]æ•°å—[/i]ç±»åž‹ã€‚å› " +"æ¤ï¼Œå°† Variant 转æ¢ä¸º JSON 文本会将所有数å—值转æ¢ä¸º [float] 类型。\n" +"傿•° [code]indent[/code] 控制是å¦ä»¥åŠå¦‚何缩进,输出时需è¦è¿›è¡Œä¸€çº§ç¼©è¿›æ—¶ä¼šä½¿ç”¨" +"该å—ç¬¦ä¸²å‚æ•°ï¼Œç”šè‡³å¯ä»¥ä½¿ç”¨ç©ºæ ¼ [code]\" \"[/code]。也å¯ä»¥ä½¿ç”¨ [code]\\t[/" +"code] å’Œ [code]\\n[/code] æ¥è¿›è¡Œåˆ¶è¡¨ç¬¦ç¼©è¿›ï¼Œæˆ–è€…å°†æ¯æ¬¡ç¼©è¿›è½¬æ¢ä¸ºæ¢è¡Œã€‚\n" +"[b]Example output:[/b]\n" "[codeblock]\n" "## JSON.print(my_dictionary)\n" "{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":" @@ -38781,18 +38922,34 @@ msgstr "" "\n" "## JSON.print(my_dictionary, \"\\t\")\n" "{\n" -" \"name\": \"my_dictionary\",\n" -" \"version\": \"1.0.0\",\n" -" \"entities\": [\n" -" {\n" -" \"name\": \"entity_0\",\n" -" \"value\": \"value_0\"\n" -" },\n" -" {\n" -" \"name\": \"entity_1\",\n" -" \"value\": \"value_1\"\n" -" }\n" -" ]\n" +" \"name\": \"my_dictionary\",\n" +" \"version\": \"1.0.0\",\n" +" \"entities\": [\n" +" {\n" +" \"name\": \"entity_0\",\n" +" \"value\": \"value_0\"\n" +" },\n" +" {\n" +" \"name\": \"entity_1\",\n" +" \"value\": \"value_1\"\n" +" }\n" +" ]\n" +"}\n" +"\n" +"## JSON.print(my_dictionary, \"...\")\n" +"{\n" +"...\"name\": \"my_dictionary\",\n" +"...\"version\": \"1.0.0\",\n" +"...\"entities\": [\n" +"......{\n" +".........\"name\": \"entity_0\",\n" +".........\"value\": \"value_0\"\n" +"......},\n" +"......{\n" +".........\"name\": \"entity_1\",\n" +".........\"value\": \"value_1\"\n" +"......}\n" +"...]\n" "}\n" "[/codeblock]" @@ -38999,7 +39156,7 @@ msgstr "" #: doc/classes/KinematicBody.xml doc/classes/KinematicBody2D.xml msgid "Kinematic character (2D)" -msgstr "" +msgstr "è¿åЍå¦è§’色(2D)" #: doc/classes/KinematicBody.xml msgid "" @@ -39173,8 +39330,9 @@ msgstr "" "如果 [code]infinite_inertia[/code] 是 [code]true[/code],物体将能够推动 " "[RigidBody] 节点,但它也ä¸ä¼šæ£€æµ‹åˆ°ä»»ä½•与它们的碰撞。如果 [code]false[/code]," "它将与 [RigidBody] èŠ‚ç‚¹åƒ [StaticBody] ä¸€æ ·äº¤äº’ã€‚\n" -"返回 [code]linear_velocity[/code] å‘é‡ï¼Œå¦‚æžœå‘生滑动碰撞,则旋转和/或缩放。è¦" -"获得å‘生碰撞的详细信æ¯ï¼Œè¯·ä½¿ç”¨ [method get_slide_collision]。\n" +"返回 [code]linear_velocity[/code] å‘é‡ï¼Œå¦‚æžœå‘生滑动碰撞,则返回的å‘釿˜¯ç»è¿‡" +"了旋转和/或缩放的。è¦èŽ·å¾—å‘生碰撞的详细信æ¯ï¼Œè¯·ä½¿ç”¨ [method " +"get_slide_collision]。\n" "å½“ç‰©ä½“æŽ¥è§¦åˆ°ä¸€ä¸ªç§»åŠ¨çš„å¹³å°æ—¶ï¼Œå¹³å°çš„é€Ÿåº¦ä¼šè‡ªåŠ¨åŠ å…¥åˆ°ç‰©ä½“çš„è¿åЍä¸ã€‚如果由于平" "å°çš„è¿åŠ¨è€Œå‘生碰撞,它将始终是滑动碰撞ä¸çš„第一个。" @@ -39337,9 +39495,8 @@ msgstr "" "们在实现对世界进行碰撞,但ä¸éœ€è¦é«˜çº§ç‰©ç†çš„角色时éžå¸¸æœ‰ç”¨ã€‚" #: doc/classes/KinematicBody2D.xml -#, fuzzy msgid "Using KinematicBody2D" -msgstr "2D è¿åŠ¨ä½“èŠ‚ç‚¹ã€‚" +msgstr "使用 KinematicBody2D" #: doc/classes/KinematicBody2D.xml msgid "" @@ -39448,19 +39605,20 @@ msgstr "" "move_and_collide] ä¸åŒçš„æ˜¯ï¼Œä½ [i]ä¸åº”该[/i]将它乘以 [code]delta[/code]——物ç†" "引擎会处ç†åº”用速度。\n" "[code]up_direction[/code] 是å‘上的方å‘,用æ¥ç¡®å®šä»€ä¹ˆæ˜¯å¢™ï¼Œä»€ä¹ˆæ˜¯åœ°æ¿æˆ–天花" -"æ¿ã€‚如果设置为默认值 [code]Vector2(0, 0)[/code],一切都被认为是墙。这对于自上" -"而下的游æˆå¾ˆæœ‰ç”¨ã€‚\n" +"æ¿ã€‚如果设置为默认值 [code]Vector2(0, 0)[/code],一切都被认为是墙。这对于俯视" +"角的游æˆå¾ˆæœ‰ç”¨ã€‚\n" "如果 [code]stop_on_slope[/code] 是 [code]true[/code]ï¼Œå½“ä½ åœ¨ " "[code]linear_velocity[/code] ä¸åŒ…å«é‡åŠ›å¹¶ä¸”ç‰©ä½“é™æ¢æ—¶ï¼Œç‰©ä½“å°±ä¸ä¼šåœ¨æ–œå¡ä¸Šæ»‘" "动。\n" "如果物体å‘ç”Ÿç¢°æ’žï¼Œå®ƒæœ€å¤šä¼šæ”¹å˜æ–¹å‘ [code]max_slides[/code] 次æ‰ä¼šåœæ¢ã€‚\n" "[code]floor_max_angle[/code] 是一个最大的角度(弧度),在这个角度下,一个斜å¡" "ä»ç„¶è¢«è®¤ä¸ºæ˜¯åœ°æ¿æˆ–天花æ¿ï¼Œè€Œä¸æ˜¯å¢™ã€‚默认值ç‰äºŽ45度。\n" -"如果 [code]infinite_inertia[/code] 是 [code]true[/code],物体将能够推动" -"[RigidBody2D]节点,但它也ä¸ä¼šæ£€æµ‹åˆ°ä»»ä½•与它们的碰撞。如果 [code]false[/" +"如果 [code]infinite_inertia[/code] 是 [code]true[/code],物体将能够推动 " +"[RigidBody2D] 节点,但它也ä¸ä¼šæ£€æµ‹åˆ°ä»»ä½•与它们的碰撞。如果 [code]false[/" "code],它将与 [RigidBody2D] èŠ‚ç‚¹åƒ [StaticBody2D] ä¸€æ ·äº¤äº’ã€‚\n" -"返回 [code]linear_velocity[/code] å‘é‡ï¼Œå¦‚æžœå‘生滑动碰撞,则旋转和/或缩放。è¦" -"获得å‘生碰撞的详细信æ¯ï¼Œè¯·ä½¿ç”¨ [method get_slide_collision]。\n" +"返回 [code]linear_velocity[/code] å‘é‡ï¼Œå¦‚æžœå‘生滑动碰撞,则返回的å‘釿˜¯ç»è¿‡" +"了旋转和/或缩放的。è¦èŽ·å¾—å‘生碰撞的详细信æ¯ï¼Œè¯·ä½¿ç”¨ [method " +"get_slide_collision]。\n" "å½“ç‰©ä½“æŽ¥è§¦åˆ°ä¸€ä¸ªç§»åŠ¨çš„å¹³å°æ—¶ï¼Œå¹³å°çš„é€Ÿåº¦ä¼šè‡ªåŠ¨åŠ å…¥åˆ°ç‰©ä½“çš„è¿åЍä¸ã€‚如果由于平" "å°çš„è¿åŠ¨è€Œå‘生碰撞,它将始终是滑动碰撞ä¸çš„第一个。" @@ -39864,7 +40022,7 @@ msgstr "" #: doc/classes/Light.xml doc/classes/SpotLight.xml msgid "3D lights and shadows" -msgstr "" +msgstr "3D ç¯å…‰å’Œé˜´å½±" #: doc/classes/Light.xml msgid "Returns the value of the specified [enum Light.Param] parameter." @@ -39955,8 +40113,13 @@ msgid "The color of shadows cast by this light." msgstr "光线投射的阴影的颜色。" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." -msgstr "å°è¯•å‡å°‘ [member shadow_bias] å·®è·ã€‚" +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." +msgstr "" #: doc/classes/Light.xml msgid "If [code]true[/code], the light will cast shadows." @@ -40374,9 +40537,13 @@ msgstr "æž„æˆçº¿æ¡çš„ç‚¹ã€‚åœ¨æ¤æ•°ç»„ä¸è®¾ç½®çš„æ¯ä¸ªç‚¹ä¹‹é—´ç»˜åˆ¶çº¿ã€‚ #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." -msgstr "圆形接头和盖åçš„å¹³æ»‘åº¦ã€‚ä»…å½“ç›–åæˆ–接头设置为圆形时æ‰ä½¿ç”¨æ¤é€‰é¡¹ã€‚" +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." +msgstr "" #: doc/classes/Line2D.xml msgid "" @@ -42590,6 +42757,15 @@ msgstr "返回特定实例的 [Transform2D]。" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -42610,6 +42786,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -42660,6 +42848,16 @@ msgid "Mesh to be drawn." msgstr "å°†è¦ç»˜åˆ¶çš„ç½‘æ ¼ã€‚" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "ç”¨äºŽå˜æ¢ç½‘æ ¼çš„å˜æ¢æ ¼å¼ï¼Œå¯ä»¥æ˜¯2D或3D。" @@ -42721,6 +42919,18 @@ msgstr "" "ä¼ é€’ç»™ [method set_instance_custom_data] çš„ [Color] 将使用 4 个浮点数。使用它" "以获得最高精度。" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "实例化 [MultiMesh] 的节点。" @@ -43148,7 +43358,7 @@ msgstr "" #: doc/classes/Navigation.xml doc/classes/NavigationMesh.xml #: doc/classes/NavigationServer.xml msgid "3D Navmesh Demo" -msgstr "" +msgstr "3D å¯¼èˆªç½‘æ ¼æ¼”ç¤º" #: doc/classes/Navigation.xml doc/classes/Navigation2D.xml msgid "" @@ -43190,18 +43400,17 @@ msgid "" "agent properties associated with each [NavigationMesh] (radius, height, " "etc.) are considered in the path calculation, otherwise they are ignored." msgstr "" -"è¿”å›žä¸¤ä¸ªç»™å®šç‚¹ä¹‹é—´çš„è·¯å¾„ã€‚ç‚¹æ˜¯åœ¨å±€éƒ¨åæ ‡ç©ºé—´ä¸ã€‚如果 [code]optimize[/code] " -"是 [code]true[/code](默认),与æ¯ä¸ª [NavigationMesh] 相关的代ç†å±žæ€§ï¼ˆåŠå¾„ã€" -"高度ç‰ï¼‰åœ¨è·¯å¾„计算ä¸è¢«è€ƒè™‘,å¦åˆ™å…¶è¢«å¿½ç•¥ã€‚" +"è¿”å›žä¸¤ä¸ªç»™å®šç‚¹ä¹‹é—´çš„è·¯å¾„ã€‚ç‚¹éƒ½æ˜¯åœ¨å±€éƒ¨åæ ‡ç©ºé—´ä¸çš„。如果 [code]optimize[/" +"code] 为 [code]true[/code](默认),则计算路径时会考虑æ¯ä¸ª [NavigationMesh] " +"所关è”的代ç†çš„属性(åŠå¾„ã€é«˜åº¦ç‰ï¼‰ï¼Œå¦åˆ™ä¼šè¢«å¿½ç•¥ã€‚" #: doc/classes/Navigation.xml -#, fuzzy msgid "The cell height to use for fields." -msgstr "ç”¨äºŽå—æ®µYè½´å•元的尺寸。" +msgstr "ç”¨äºŽå—æ®µçš„ Y è½´å•元的尺寸。" #: doc/classes/Navigation.xml doc/classes/NavigationMesh.xml msgid "The XZ plane cell size to use for fields." -msgstr "ç”¨äºŽå—æ®µçš„XZå¹³é¢å•元尺寸。" +msgstr "ç”¨äºŽå—æ®µçš„ XZ å¹³é¢å•元尺寸。" #: doc/classes/Navigation.xml doc/classes/Navigation2D.xml msgid "" @@ -43233,7 +43442,7 @@ msgstr "" #: doc/classes/Navigation2D.xml doc/classes/Navigation2DServer.xml #: doc/classes/NavigationPolygon.xml msgid "2D Navigation Demo" -msgstr "" +msgstr "2D 导航演示" #: doc/classes/Navigation2D.xml msgid "" @@ -43250,7 +43459,7 @@ msgid "" "space. If [code]optimize[/code] is [code]true[/code] (the default), the path " "is smoothed by merging path segments where possible." msgstr "" -"è¿”å›žä¸¤ä¸ªç»™å®šç‚¹ä¹‹é—´çš„è·¯å¾„ã€‚ç‚¹æ˜¯åœ¨å±€éƒ¨åæ ‡ç©ºé—´ä¸ã€‚如果 [code]optimize[/code] " +"è¿”å›žä¸¤ä¸ªç»™å®šç‚¹ä¹‹é—´çš„è·¯å¾„ã€‚ç‚¹æ˜¯åœ¨å±€éƒ¨åæ ‡ç©ºé—´ä¸çš„。如果 [code]optimize[/code] " "为 [code]true[/code](默认值),路径将尽å¯èƒ½åœ°åˆå¹¶è·¯å¾„段,从而平滑。" #: doc/classes/Navigation2D.xml @@ -43588,7 +43797,6 @@ msgstr "" "å¯ã€‚" #: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml -#, fuzzy msgid "" "The minimal amount of time for which this agent's velocities, that are " "computed with the collision avoidance algorithm, are safe with respect to " @@ -44255,9 +44463,8 @@ msgstr "" "程ä¸è¯·æ±‚对地图进行任何修改。" #: doc/classes/NavigationServer.xml -#, fuzzy msgid "Returns the map cell height." -msgstr "返回地图的å•å…ƒæ ¼å¤§å°ã€‚" +msgstr "返回地图的å•å…ƒæ ¼é«˜åº¦ã€‚" #: doc/classes/NavigationServer.xml msgid "" @@ -44281,9 +44488,8 @@ msgid "Returns the map's up direction." msgstr "返回地图的上方å‘。" #: doc/classes/NavigationServer.xml -#, fuzzy msgid "Set the map cell height used to weld the navigation mesh polygons." -msgstr "è®¾ç½®ç”¨äºŽç„ŠæŽ¥å¯¼èˆªç½‘æ ¼å¤šè¾¹å½¢çš„åœ°å›¾å•å…ƒæ ¼å¤§å°ã€‚" +msgstr "è®¾ç½®ç”¨äºŽç„ŠæŽ¥å¯¼èˆªç½‘æ ¼å¤šè¾¹å½¢çš„åœ°å›¾å•å…ƒæ ¼é«˜åº¦ã€‚" #: doc/classes/NavigationServer.xml msgid "Sets the map up direction." @@ -44659,13 +44865,12 @@ msgstr "" "ä½¿ç”¨ã€‚æ”¹å˜æ—¶æ•ä¸å¦è¡Œé€šçŸ¥ã€‚" #: doc/classes/NetworkedMultiplayerPeer.xml -#, fuzzy msgid "High-level multiplayer" -msgstr "高级多人游æˆAPI。" +msgstr "高级多人游æˆ" #: doc/classes/NetworkedMultiplayerPeer.xml msgid "WebRTC Signaling Demo" -msgstr "" +msgstr "WebRTC ä¿¡å·æ¼”示" #: doc/classes/NetworkedMultiplayerPeer.xml msgid "" @@ -45042,11 +45247,11 @@ msgstr "" #: doc/classes/Node.xml msgid "Nodes and Scenes" -msgstr "" +msgstr "节点与场景" #: doc/classes/Node.xml msgid "All Demos" -msgstr "" +msgstr "所有演示" #: doc/classes/Node.xml msgid "" @@ -45095,7 +45300,6 @@ msgstr "" "å½“éœ€è¦æ›´æ–°è¿™ä¸ªèŠ‚ç‚¹çš„è¦å‘Šæ—¶ï¼Œè°ƒç”¨[method update_configuration_warning]。" #: doc/classes/Node.xml -#, fuzzy msgid "" "Called when there is an input event. The input event propagates up through " "the node tree until a node consumes it.\n" @@ -45121,7 +45325,6 @@ msgstr "" "éžâ€œå¤å„¿â€ï¼‰ã€‚" #: doc/classes/Node.xml -#, fuzzy msgid "" "Called during the physics processing step of the main loop. Physics " "processing means that the frame rate is synced to the physics, i.e. the " @@ -45145,7 +45348,6 @@ msgstr "" "是“å¤å„¿â€ï¼‰ã€‚" #: doc/classes/Node.xml -#, fuzzy msgid "" "Called during the processing step of the main loop. Processing happens at " "every frame and as fast as possible, so the [code]delta[/code] time since " @@ -45167,7 +45369,6 @@ msgstr "" "是“å¤å„¿â€ï¼‰ã€‚" #: doc/classes/Node.xml -#, fuzzy msgid "" "Called when the node is \"ready\", i.e. when both the node and its children " "have entered the scene tree. If the node has children, their [method _ready] " @@ -45184,18 +45385,17 @@ msgid "" "call with [method request_ready], which may be called anywhere before adding " "the node again." msgstr "" -"当节点 \"就绪 \"时被调用。å节点的[method _ready]回调会首先被触å‘,而父节点会" -"åœ¨ä¹‹åŽæ”¶åˆ°å°±ç»ªé€šçŸ¥ã€‚\n" -"对应于[method Object._notification]ä¸çš„[constant NOTIFICATION_READY]通知。也" -"请å‚阅å˜é‡çš„[code]onready[/code]关键å—。\n" -"通常用于åˆå§‹åŒ–。对于更早的åˆå§‹åŒ–,å¯ä»¥ä½¿ç”¨[method Object._init]。也请å‚阅" +"å½“èŠ‚ç‚¹â€œå°±ç»ªâ€æ—¶è¢«è°ƒç”¨ã€‚å节点的 [method _ready] 回调会首先被触å‘,而父节点会在" +"ä¹‹åŽæ”¶åˆ°å°±ç»ªé€šçŸ¥ã€‚\n" +"对应于 [method Object._notification] ä¸çš„ [constant NOTIFICATION_READY] 通" +"知。也请å‚阅å˜é‡çš„ [code]onready[/code] 关键å—。\n" +"通常用于åˆå§‹åŒ–。对于更早的åˆå§‹åŒ–,å¯ä»¥ä½¿ç”¨ [method Object._init]。也请å‚阅 " "[method _enter_tree]。\n" -"[b]注æ„:[/b] [method _ready] 对于æ¯ä¸ªèŠ‚ç‚¹åªèƒ½è°ƒç”¨ä¸€æ¬¡ã€‚åœ¨ä»Žåœºæ™¯æ ‘ä¸åˆ 除一个" -"èŠ‚ç‚¹å¹¶å†æ¬¡æ·»åŠ åŽï¼Œ[code]_ready[/code]å°†ä¸ä¼šè¢«ç¬¬äºŒæ¬¡è°ƒç”¨ã€‚è¿™å¯ä»¥é€šè¿‡è¯·æ±‚冿¬¡è°ƒ" -"用[method request_ready]æ¥ç»•过,它å¯ä»¥åœ¨å†æ¬¡æ·»åŠ èŠ‚ç‚¹ä¹‹å‰çš„任何地方调用。" +"[b]注æ„:[/b][method _ready] 对于æ¯ä¸ªèŠ‚ç‚¹åªä¼šè°ƒç”¨ä¸€æ¬¡ã€‚åœ¨ä»Žåœºæ™¯æ ‘ä¸åˆ 除一个节" +"ç‚¹å¹¶å†æ¬¡æ·»åŠ åŽï¼Œ[code]_ready[/code] å°†ä¸ä¼šè¢«ç¬¬äºŒæ¬¡è°ƒç”¨ã€‚è¿™å¯ä»¥é€šè¿‡è¯·æ±‚冿¬¡è°ƒ" +"用 [method request_ready] æ¥ç»•过,它å¯ä»¥åœ¨å†æ¬¡æ·»åŠ èŠ‚ç‚¹ä¹‹å‰çš„任何地方调用。" #: doc/classes/Node.xml -#, fuzzy msgid "" "Called when an [InputEvent] hasn't been consumed by [method _input] or any " "GUI [Control] item. The input event propagates up through the node tree " @@ -45211,8 +45411,8 @@ msgid "" "[b]Note:[/b] This method is only called if the node is present in the scene " "tree (i.e. if it's not an orphan)." msgstr "" -"当 [InputEvent] 还未被 [method _input] 或任何 GUI 消耗时调用。输入事件通过节" -"ç‚¹æ ‘å‘ä¸Šä¼ æ’,直到一个节点消耗它。\n" +"当 [InputEvent] 还未被 [method _input] 或任何 GUI [Control] 项目消耗时调用。" +"è¾“å…¥äº‹ä»¶é€šè¿‡èŠ‚ç‚¹æ ‘å‘ä¸Šä¼ æ’,直到一个节点消耗它。\n" "åªæœ‰åœ¨å¯ç”¨äº†æœªå¤„ç†çš„è¾“å…¥å¤„ç†æ—¶æ‰ä¼šè¢«è°ƒç”¨ï¼Œå¦‚果这个方法被é‡å†™ï¼Œå®ƒå°±ä¼šè‡ªåŠ¨å®Œ" "æˆï¼Œå¹¶ä¸”å¯ä»¥ç”¨ [method set_process_unhandled_input] æ¥åˆ‡æ¢ã€‚\n" "è¦æ¶ˆè€—输入事件并阻æ¢å®ƒè¿›ä¸€æ¥ä¼ æ’到其他节点,å¯ä»¥è°ƒç”¨ [method SceneTree." @@ -45223,7 +45423,6 @@ msgstr "" "是“å¤å„¿â€ï¼‰ã€‚" #: doc/classes/Node.xml -#, fuzzy msgid "" "Called when an [InputEventKey] hasn't been consumed by [method _input] or " "any GUI [Control] item. The input event propagates up through the node tree " @@ -45239,8 +45438,8 @@ msgid "" "[b]Note:[/b] This method is only called if the node is present in the scene " "tree (i.e. if it's not an orphan)." msgstr "" -"当 [InputEventKey] 没有被 [method _input] 或任何 GUI 消耗时被调用。输入事件通" -"è¿‡èŠ‚ç‚¹æ ‘å‘ä¸Šä¼ æ’,直到一个节点消耗它。\n" +"当 [InputEventKey] 没有被 [method _input] 或任何 GUI [Control] 项目消耗时被调" +"ç”¨ã€‚è¾“å…¥äº‹ä»¶é€šè¿‡èŠ‚ç‚¹æ ‘å‘ä¸Šä¼ æ’,直到一个节点消耗它。\n" "åªæœ‰åœ¨å¯ç”¨äº†æœªå¤„ç†çš„é”®è¾“å…¥å¤„ç†æ—¶æ‰ä¼šè¢«è°ƒç”¨ï¼Œå¦‚果这个方法被é‡å†™ï¼Œå®ƒå°±ä¼šè‡ªåŠ¨å®Œ" "æˆï¼Œå¹¶ä¸”å¯ä»¥ç”¨ [method set_process_unhandled_key_input] æ¥åˆ‡æ¢ã€‚\n" "è¦æ¶ˆè€—输入事件并阻æ¢å®ƒè¿›ä¸€æ¥ä¼ æ’到其他节点,å¯ä»¥è°ƒç”¨ [method SceneTree." @@ -45683,6 +45882,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -45919,6 +46137,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -46057,6 +46290,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -46242,12 +46483,16 @@ msgid "" "Emitted when a child node enters the scene tree, either because it entered " "on its own or because this node entered with it." msgstr "" +"在åèŠ‚ç‚¹è¿›å…¥åœºæ™¯æ ‘æ—¶è§¦å‘,å¯ä»¥æ˜¯å› 为该å节点自行进入,也å¯ä»¥æ˜¯å› 为本节点带ç€" +"该å节点一起进入。" #: doc/classes/Node.xml msgid "" "Emitted when a child node exits the scene tree, either because it exited on " "its own or because this node exited." msgstr "" +"在åèŠ‚ç‚¹ç¦»å¼€åœºæ™¯æ ‘æ—¶è§¦å‘,å¯ä»¥æ˜¯å› 为该å节点自行离开,也å¯ä»¥æ˜¯å› 为本节点离" +"开。" #: doc/classes/Node.xml msgid "Emitted when the node is ready." @@ -46367,6 +46612,13 @@ msgstr "" "åŒï¼Œå®ƒæ¯æ¬¡èŠ‚ç‚¹è¿›å…¥æ ‘æ—¶éƒ½ä¼šå‘é€ï¼Œè€Œä¸æ˜¯åªå‘é€ä¸€æ¬¡ã€‚" #: doc/classes/Node.xml +#, fuzzy +msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "在父节点ä¸ç§»åŠ¨èŠ‚ç‚¹æ—¶æ”¶åˆ°è¯¥é€šçŸ¥ã€‚" + +#: doc/classes/Node.xml msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." @@ -46422,7 +46674,7 @@ msgstr "" #: doc/classes/Node2D.xml doc/classes/Vector2.xml msgid "All 2D Demos" -msgstr "" +msgstr "所有 2D 演示" #: doc/classes/Node2D.xml msgid "Multiplies the current scale by the [code]ratio[/code] vector." @@ -46634,7 +46886,7 @@ msgstr "" #: doc/classes/PanelContainer.xml doc/classes/TileMap.xml #: doc/classes/TileSet.xml msgid "2D Role Playing Game Demo" -msgstr "" +msgstr "2D è§’è‰²æ‰®æ¼”æ¸¸æˆæ¼”示" #: doc/classes/NodePath.xml msgid "" @@ -46954,11 +47206,11 @@ msgstr "" #: doc/classes/Object.xml doc/classes/Reference.xml doc/classes/Resource.xml msgid "When and how to avoid using nodes for everything" -msgstr "" +msgstr "何时以åŠå¦‚何é¿å…为任何事情使用节点" #: doc/classes/Object.xml msgid "Advanced exports using _get_property_list()" -msgstr "" +msgstr "使用 _get_property_list() 进行高级导出" #: doc/classes/Object.xml msgid "" @@ -47418,7 +47670,6 @@ msgid "" msgstr "从对象的元数æ®ä¸åˆ 除给定æ¡ç›®ã€‚å¦è§ [method set_meta]。" #: doc/classes/Object.xml -#, fuzzy msgid "" "Assigns a new value to the given property. If the [code]property[/code] does " "not exist or the given value's type doesn't match, nothing will happen.\n" @@ -47427,8 +47678,8 @@ msgid "" "properties where you should use the same convention as in the C# source " "(typically PascalCase)." msgstr "" -"为给定的属性赋一个新值。如果 [code]property[/code] ä¸å˜åœ¨ï¼Œåˆ™ä¸ä¼šå‘生任何事" -"情。\n" +"为给定的属性赋一个新值。如果 [code]property[/code] ä¸å˜åœ¨ï¼Œæˆ–者给定的值的类型" +"与之ä¸åŒ¹é…时,则ä¸ä¼šå‘生任何事情。\n" "[b]注æ„:[/b]在 C# ä¸ï¼Œå¦‚果属性å由内置的 Godot 节点定义,则必须将其指定为 " "snake_case。这ä¸é€‚用于用户定义的属性,在这些属性ä¸ï¼Œæ‚¨åº”该使用与 C# æºä¸ç›¸åŒ" "的约定(通常是 PascalCase)。" @@ -47661,12 +47912,11 @@ msgstr "用于[Occluder]èŠ‚ç‚¹è¿›è¡Œé®æŒ¡å‰”除的形状的基类。" #: doc/classes/OccluderShape.xml msgid "[Occluder]s can use any primitive shape derived from [OccluderShape]." -msgstr "[Occluder] å¯ä»¥ä½¿ç”¨ä»Ž [OccluderShape] 派生的任何原始形状。" +msgstr "[Occluder] å¯ä»¥ä½¿ç”¨ä»Ž [OccluderShape] 派生的任何图元。" #: doc/classes/OccluderShapePolygon.xml -#, fuzzy msgid "Polygon occlusion primitive for use with the [Occluder] node." -msgstr "与 [Occluder] 节点一起使用的çƒå½¢é®æŒ¡åŸºæœ¬å•元。" +msgstr "用于 [Occluder] èŠ‚ç‚¹çš„å¤šè¾¹å½¢é®æŒ¡å›¾å…ƒã€‚" #: doc/classes/OccluderShapePolygon.xml msgid "" @@ -47683,32 +47933,37 @@ msgid "" "the system will operate at runtime, so in most cases you will want to use 4 " "points for each." msgstr "" +"[OccluderShape] 是 [Occluder] 节点所使用的资æºï¼Œç”¨äºŽå‡ 何鮿Œ¡å‰”除。\n" +"è¯¥å¤šè¾¹å½¢å¿…é¡»æ˜¯å‡¸å¤šè¾¹å½¢ã€‚å¤šè¾¹å½¢é¡¶ç‚¹çš„åˆ›å»ºä¸Žåˆ é™¤å¯ä»¥åœ¨ç¼–辑器的检查器ä¸è¿›è¡Œï¼Œä¹Ÿ" +"å¯ä»¥é€šè¿‡è°ƒç”¨ [code]set_polygon_points[/code] 实现。æ¯ä¸€æ¡è¾¹çš„顶点都å¯ä»¥é€šè¿‡åœ¨" +"ç¼–è¾‘å™¨è§†çª—ä¸æ‹–æ‹½å¥æŸ„设置。\n" +"å¦å¤–,æ¯ä¸€ä¸ªå¤šè¾¹å½¢é®æŒ¡å™¨éƒ½å¯ä»¥æ”¯æŒå•ä¸ªç©ºæ´žã€‚å¦‚æžœä½ åœ¨ç¼–è¾‘å™¨çš„æ£€æŸ¥å™¨ä¸ä¸ºç©ºæ´žæ·»" +"åŠ è‡³å°‘ä¸‰ä¸ªé¡¶ç‚¹ï¼Œå°±å¯ä»¥åœ¨ç¼–è¾‘å™¨è§†çª—ä¸æ‹–æ‹½ç©ºæ´žè¾¹ç¼˜é¡¶ç‚¹çš„å¥æŸ„。\n" +"一般而言,多边形以åŠç©ºæ´žçš„边数越少,è¿è¡Œæ—¶ç³»ç»Ÿçš„处ç†é€Ÿåº¦å°±è¶Šå¿«ï¼Œæ‰€ä»¥åœ¨å¤§å¤šæ•°" +"æƒ…å†µä¸‹ä½ éƒ½åªä¼šè®¾ç½® 4 个顶点。" #: doc/classes/OccluderShapePolygon.xml -#, fuzzy msgid "Sets an individual hole point position." -msgstr "设置å•个çƒä½“çš„ä½ç½®ã€‚" +msgstr "设置å•独的空洞顶点ä½ç½®ã€‚" #: doc/classes/OccluderShapePolygon.xml -#, fuzzy msgid "Sets an individual polygon point position." -msgstr "设置å•个çƒä½“çš„ä½ç½®ã€‚" +msgstr "设置å•独的多边形顶点ä½ç½®ã€‚" #: doc/classes/OccluderShapePolygon.xml -#, fuzzy msgid "Allows changing the hole geometry from code." -msgstr "通过代ç 绘制简å•çš„å‡ ä½•å½¢çŠ¶ã€‚" +msgstr "å…许通过代ç 修改空洞形状。" #: doc/classes/OccluderShapePolygon.xml -#, fuzzy msgid "Allows changing the polygon geometry from code." -msgstr "通过代ç 绘制简å•çš„å‡ ä½•å½¢çŠ¶ã€‚" +msgstr "å…许通过代ç 修改多边形形状。" #: doc/classes/OccluderShapePolygon.xml +#, fuzzy msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." -msgstr "" +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." +msgstr "æŒ‡å®šè¯¥é®æŒ¡å™¨æ˜¯åº”该为å•å‘还是åŒå‘。" #: doc/classes/OccluderShapeSphere.xml msgid "Spherical occlusion primitive for use with the [Occluder] node." @@ -48306,7 +48561,6 @@ msgstr "" "在文件的末尾是所有已使用资æºç±»åž‹çš„统计数æ®ã€‚" #: doc/classes/OS.xml -#, fuzzy msgid "" "Execute the file at the given path with the arguments passed as an array of " "strings. Platform path resolution will take place. The resolved file must " @@ -48393,7 +48647,16 @@ msgstr "" "[codeblock]\n" "OS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% && dir\"], true, output)\n" "[/codeblock]\n" -"[b]注æ„:[/b]æ¤æ–¹æ³•仅在 Androidã€iOSã€Linuxã€macOS å’Œ Windows 上实现。" +"[b]注æ„:[/b]æ¤æ–¹æ³•仅在 Androidã€iOSã€Linuxã€macOS å’Œ Windows 上实现。\n" +"[b]注æ„:[/b]å¦‚æžœè¦æ‰§è¡Œ Windows 命令解释器的内置命令,请将 [code]path[/code] " +"指定为 [code]cmd.exe[/code]ï¼Œå°†ç¬¬ä¸€ä¸ªå‚æ•°è®¾ä¸º [code]/c[/code]ï¼Œç¬¬äºŒä¸ªå‚æ•°è®¾ä¸º" +"想è¦çš„命令。\n" +"[b]注æ„:[/b]å¦‚æžœè¦æ‰§è¡Œ PowerShell 的内置命令,请将 [code]path[/code] 指定为 " +"[code]powershell.exe[/code]ï¼Œå°†ç¬¬ä¸€ä¸ªå‚æ•°è®¾ä¸º [code]-Command[/code],第二个å‚" +"数设为想è¦çš„命令。\n" +"[b]注æ„:[/b]å¦‚æžœè¦æ‰§è¡Œ Unix Shell 的内置命令,请将 [code]path[/code] 指定为 " +"Shell 坿‰§è¡Œæ–‡ä»¶çš„åç§°ï¼Œå°†ç¬¬ä¸€ä¸ªå‚æ•°è®¾ä¸º [code]-c[/code]ï¼Œç¬¬äºŒä¸ªå‚æ•°è®¾ä¸ºæƒ³è¦" +"的命令。" #: doc/classes/OS.xml msgid "Returns the scancode of the given string (e.g. \"Escape\")." @@ -48751,8 +49014,20 @@ msgstr "" "[b]注æ„:[/b]æ¤æ–¹æ³•在Androidã€iOSã€Linuxã€macOSå’ŒWindows上实现。" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." -msgstr "返回宿主机上å¯ç”¨çš„线程数。" +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." +msgstr "" #: doc/classes/OS.xml msgid "Returns the window size including decorations like window borders." @@ -48881,10 +49156,10 @@ msgid "" "differentiate between app specific and shared directories. Shared " "directories have additional restrictions on Android." msgstr "" -"返回ä¸åŒå¹³å°ä¸Šå¸¸ç”¨æ–‡ä»¶å¤¹çš„实际路径。å¯ç”¨çš„ä½ç½®åœ¨[enum SystemDir]䏿Œ‡å®šã€‚\n" -"[b]注æ„:[/b] 这个方法在Androidã€Linuxã€macOSå’ŒWindows上实现。\n" -"[b]注æ„:[/b] 共享å˜å‚¨åœ¨Android上实现,并å…许区分应用程åºç‰¹å®šç›®å½•和共享目录。" -"共享目录在Android上有é¢å¤–çš„é™åˆ¶ã€‚" +"返回ä¸åŒå¹³å°ä¸Šå¸¸ç”¨æ–‡ä»¶å¤¹çš„实际路径。å¯ç”¨çš„ä½ç½®åœ¨ [enum SystemDir] 䏿Œ‡å®šã€‚\n" +"[b]注æ„:[/b]这个方法在 Androidã€Linuxã€macOS å’Œ Windows 上实现。\n" +"[b]注æ„:[/b]共享å˜å‚¨åœ¨ Android 上实现,并å…许区分应用程åºç‰¹å®šç›®å½•和共享目" +"录。共享目录在 Android 上有é¢å¤–çš„é™åˆ¶ã€‚" #: doc/classes/OS.xml msgid "Returns the epoch time of the operating system in milliseconds." @@ -49105,9 +49380,8 @@ msgstr "" "[b]注æ„:[/b] 这个方法在macOS上实现。" #: doc/classes/OS.xml -#, fuzzy msgid "Returns [code]true[/code] if there is content on the clipboard." -msgstr "如果文件当å‰è¢«æ‰“开,返回[code]true[/code]。" +msgstr "如果剪贴æ¿ä¸Šå˜åœ¨å†…容,则返回 [code]true[/code]。" #: doc/classes/OS.xml msgid "" @@ -49252,14 +49526,14 @@ msgstr "" "[b]注æ„:[/b] 本方法å¯åœ¨Linuxã€macOSå’ŒWindows上实现。" #: doc/classes/OS.xml -#, fuzzy msgid "" "Converts a physical (US QWERTY) [code]scancode[/code] to one in the active " "keyboard layout.\n" "[b]Note:[/b] This method is implemented on Linux, macOS and Windows." msgstr "" -"设置活动键盘布局。\n" -"[b]注:[/b]æ¤æ–¹æ³•å¯åœ¨Linuxã€macOSå’ŒWindows上实现。" +"将物ç†ï¼ˆç¾Žå¼ QWERTY)扫æç [code]scancode[/code] 转æ¢ä¸ºå½“剿´»åŠ¨é”®ç›˜å¸ƒå±€çš„æ‰«" +"æç 。\n" +"[b]注æ„:[/b]æ¤æ–¹æ³•在 Linuxã€macOS å’Œ Windows 上实现。" #: doc/classes/OS.xml msgid "" @@ -50500,11 +50774,11 @@ msgstr "" #: doc/classes/Panel.xml msgid "2D Finite State Machine Demo" -msgstr "" +msgstr "2D 有é™çŠ¶æ€æœºæ¼”示" #: doc/classes/Panel.xml doc/classes/Skeleton.xml doc/classes/SkeletonIK.xml msgid "3D Inverse Kinematics Demo" -msgstr "" +msgstr "3D 逆è¿åЍ妿¼”示" #: doc/classes/Panel.xml msgid "The style of this [Panel]." @@ -50697,7 +50971,7 @@ msgstr "" #: doc/classes/Particles.xml msgid "Controlling thousands of fish with Particles" -msgstr "" +msgstr "ç”¨ç²’åæŽ§åˆ¶æ•°åƒæ¡é±¼" #: doc/classes/Particles.xml msgid "" @@ -50844,7 +51118,7 @@ msgstr "" #: doc/classes/Particles2D.xml msgid "Particle systems (2D)" -msgstr "" +msgstr "ç²’å系统(2D)" #: doc/classes/Particles2D.xml msgid "Returns a rectangle containing the positions of all existing particles." @@ -51736,7 +52010,7 @@ msgstr "" #: doc/classes/PhysicsDirectBodyState.xml #: doc/classes/PhysicsDirectSpaceState.xml doc/classes/RayCast.xml msgid "Ray-casting" -msgstr "" +msgstr "å‘射射线" #: doc/classes/Physics2DDirectBodyState.xml doc/classes/RigidBody2D.xml msgid "Adds a constant directional force without affecting rotation." @@ -54735,7 +55009,7 @@ msgstr "" #: doc/classes/PoolVector2Array.xml doc/classes/TileMap.xml #: doc/classes/TileSet.xml msgid "2D Navigation Astar Demo" -msgstr "" +msgstr "2D A 星导航演示" #: doc/classes/PoolVector2Array.xml msgid "" @@ -55267,9 +55541,8 @@ msgstr "" "[b]注:[/b]被移除项åŽçš„项的索引将被移ä½1。" #: doc/classes/PopupMenu.xml -#, fuzzy msgid "Sets the currently focused item as the given [code]index[/code]." -msgstr "设置在索引[code]idx[/code]å¤„é¡¹çš„å›¾æ ‡ã€‚" +msgstr "将当å‰èšç„¦é¡¹ç›®è®¾ç½®ä¸ºç»™å®šçš„索引 [code]index[/code]。" #: doc/classes/PopupMenu.xml msgid "Hides the [PopupMenu] when the window loses focus." @@ -58369,6 +58642,18 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +#, fuzzy +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -58379,8 +58664,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" "æŽ§åˆ¶ç‰©ç†æ—¶é’Ÿå®žæ—¶åŒæ¥çš„程度。如果是0æˆ–æ›´å°‘ï¼Œæ—¶é’Ÿæ˜¯åŒæ¥çš„ã€‚è¿™æ ·çš„å€¼å»ºè®®ç”¨äºŽç½‘ç»œ" "游æˆï¼Œå› ä¸ºæ—¶é’Ÿçš„åŒæ¥æ€§å¾ˆé‡è¦ã€‚较高的值会导致游æˆä¸çš„æ—¶é’Ÿå’ŒçœŸå®žæ—¶é’Ÿçš„å差较" @@ -58831,7 +59118,6 @@ msgstr "" "义。" #: doc/classes/ProjectSettings.xml -#, fuzzy msgid "" "If set to [code]Asynchronous[/code] and available on the target device, " "asynchronous compilation of shaders is enabled (in contrast to " @@ -58867,10 +59153,12 @@ msgstr "" "超级ç€è‰²å™¨æ˜¯ä¸€ä¸ªéžå¸¸å¤æ‚çš„ç€è‰²å™¨ï¼Œè™½ç„¶æ…¢ä½†æ˜¯å¯ä»¥ç”¨äºŽä»»ä½•渲染环境。引擎会在内" "部生æˆè¿™ä¸ªç€è‰²å™¨ï¼Œè¿™æ ·åœ¨ä¸€å¼€å§‹å°±èƒ½ä½¿ç”¨ï¼Œè€Œä¼ ç»Ÿçš„æ ¹æ®ä¸åŒæ¡ä»¶ä¼˜åŒ–的版本则需è¦" "进行编译。\n" -"为了节çœåŠ è½½æ—¶é—´ï¼Œä½ å¯ä»¥ä½¿ç”¨ [code]Asynchronous + Cache[/code],会让超级ç€è‰²" -"器也被缓å˜åˆ°å˜å‚¨ä¹‹ä¸ï¼Œè¿™æ ·ä¸‹ä¸€æ¬¡ä½¿ç”¨æ—¶å‡†å¤‡èµ·æ¥å°±ä¼šæ›´å¿«ï¼ˆå‰ææ˜¯å¹³å°æ”¯æŒè¿™ä¹ˆ" -"åšï¼‰ã€‚\n" -"[b]è¦å‘Šï¼š[/b] 异æ¥ç¼–译目å‰åªæ”¯æŒç©ºé—´å’Œç²’åæè´¨/ç€è‰²å™¨ã€‚" +"如果想è¦åœ¨é¡¹ç›®è¿è¡Œè‡³å°‘一次åŽå‡å°‘åŠ è½½æ—¶é—´ï¼Œä½ å¯ä»¥ä½¿ç”¨ [code]Asynchronous + " +"Cache[/code]ã€‚è¿™æ ·ä¼šè®©è¶…çº§ç€è‰²å™¨ä¹Ÿè¢«ç¼“å˜åˆ°å˜å‚¨ä¹‹ä¸ï¼Œè¿™æ ·ä¸‹ä¸€æ¬¡ä½¿ç”¨æ—¶å‡†å¤‡èµ·æ¥" +"å°±ä¼šæ›´å¿«ï¼ˆå‰ææ˜¯å¹³å°æ”¯æŒè¿™ä¹ˆåšï¼‰ã€‚\n" +"[b]注æ„:[/b] 异æ¥ç¼–译目å‰åªæ”¯æŒç©ºé—´ï¼ˆ3D)和粒åæè´¨/ç€è‰²å™¨ã€‚å³ä½¿è¯¥è®¾ç½®ä¸º " +"[code]Asynchronous[/code] 或 [code]Asynchronous + Cache[/code],画布项(2D)" +"ç€è‰²å™¨ä¹Ÿä¸ä¼šä½¿ç”¨å¼‚æ¥ç¼–译。" #: doc/classes/ProjectSettings.xml msgid "" @@ -58987,7 +59275,6 @@ msgstr "" "用于交错属性数æ®ã€‚如果用于移动设备,建议å¯ç”¨ã€‚切æ¢åŽéœ€è¦æ‰‹åЍ釿–°å¯¼å…¥ç½‘æ ¼ã€‚" #: doc/classes/ProjectSettings.xml -#, fuzzy msgid "" "Determines the maximum number of polygon occluders that will be used at any " "one time.\n" @@ -58999,7 +59286,8 @@ msgid "" msgstr "" "确定将在任何时候使用的çƒä½“鮿Œ¡å™¨çš„æœ€å¤§æ•°é‡ã€‚\n" "尽管一个场景ä¸å¯ä»¥æœ‰è®¸å¤šé®æŒ¡ç‰©ï¼Œä½†ç³»ç»Ÿä¼šæ ¹æ®å±å¹•空间度é‡ä»Žè¿™äº›é®æŒ¡ç‰©ä¸é€‰æ‹©æœ€" -"相关的æ¯ä¸€å¸§ï¼Œä»¥æä¾›æœ€ä½³çš„æ•´ä½“性能。" +"相关的æ¯ä¸€å¸§ï¼Œä»¥æä¾›æœ€ä½³çš„æ•´ä½“性能。\n" +"大é‡çš„多边形å¯èƒ½å‰”除更多的对象,但是剔除计算的消耗也会éšé®æŒ¡ç‰©çš„æ•°é‡å¢žåŠ ã€‚" #: doc/classes/ProjectSettings.xml msgid "" @@ -59080,10 +59368,13 @@ msgstr "" "时,æ‰åº”该使用该选项。" #: doc/classes/ProjectSettings.xml +#, fuzzy msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" "如果为 [code]true[/code]ï¼Œåˆ†é…æ ¹ [Viewport] 的帧缓冲时将使用高动æ€èŒƒå›´ã€‚高动" @@ -59093,10 +59384,11 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" -"由于性能问题或驱动支æŒï¼Œç§»åŠ¨è®¾å¤‡ä¸Šçš„ [member rendering/quality/depth/hdr] çš„" -"低端覆盖。" #: doc/classes/ProjectSettings.xml msgid "" @@ -59135,7 +59427,6 @@ msgstr "" "和照明时,这会æé«˜é«˜é€æ”¯åœºæ™¯çš„æ€§èƒ½ã€‚" #: doc/classes/ProjectSettings.xml -#, fuzzy msgid "" "The directional shadow's size in pixels. Higher values will result in " "sharper shadows, at the cost of performance. The value will be rounded up to " @@ -59143,7 +59434,8 @@ msgid "" "will be applied immediately." msgstr "" "æ–¹å‘æ€§é˜´å½±çš„大å°ï¼Œä»¥åƒç´ 为å•ä½ã€‚更高的值会导致更清晰的阴影,但会以性能为代" -"价。该值将被四èˆäº”入到最接近的2次方。" +"价。该值将被四èˆäº”入到最接近的 2 次方。该设置å¯ä»¥åœ¨è¿è¡Œæ—¶ä¿®æ”¹ï¼›ä¿®æ”¹ä¼šç«‹å³ç”Ÿ" +"效。" #: doc/classes/ProjectSettings.xml msgid "" @@ -59268,13 +59560,14 @@ msgstr "" "称为“三线性过滤â€ï¼‰ã€‚" #: doc/classes/ProjectSettings.xml +#, fuzzy msgid "" "Strategy used for framebuffer allocation. The simpler it is, the less " "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" "用于帧缓冲区的分é…ç–略。它越简å•,使用的资æºå°±è¶Šå°‘(但支æŒçš„功能也越少)。如" "果设置为“2D Without Samplingâ€ï¼ˆ2D æ— é‡‡æ ·ï¼‰æˆ–â€œ3D Without Effectsâ€ï¼ˆ3D æ— ç‰¹" @@ -59714,7 +60007,7 @@ msgstr "" msgid "" "Objects can use this signal to restrict reading of settings only to " "situations where a change has been made." -msgstr "" +msgstr "对象å¯ä»¥åˆ©ç”¨è¯¥ä¿¡å·ï¼Œåªåœ¨å‘生修改时æ‰è¯»å–设置。" #: doc/classes/ProximityGroup.xml msgid "General-purpose proximity detection node." @@ -59738,7 +60031,7 @@ msgstr "" #: doc/classes/QuadMesh.xml doc/classes/Viewport.xml #: doc/classes/ViewportTexture.xml msgid "2D in 3D Demo" -msgstr "" +msgstr "3D ä¸çš„ 2D 演示" #: doc/classes/QuadMesh.xml msgid "Offset of the generated Quad. Useful for particles." @@ -59978,9 +60271,8 @@ msgstr "" "䏿˜¯å®žé™…的默认ç§å。" #: doc/classes/RandomNumberGenerator.xml -#, fuzzy msgid "Random number generation" -msgstr "è®¾ç½®éšæœºæ•°ç”Ÿæˆå™¨çš„ç§å。" +msgstr "éšæœºæ•°ç”Ÿæˆ" #: doc/classes/RandomNumberGenerator.xml msgid "" @@ -60324,7 +60616,7 @@ msgstr "" #: doc/classes/RayCast.xml doc/classes/RayCast2D.xml msgid "" "The ray's destination point, relative to the RayCast's [code]position[/code]." -msgstr "光线相对于光线投射的 [code]position[/code]çš„ç›®æ ‡ç‚¹ï¼Œã€‚" +msgstr "å…‰çº¿çš„ç›®æ ‡ç‚¹ï¼Œç›¸å¯¹äºŽè¯¥ RayCast çš„ [code]position[/code]。" #: doc/classes/RayCast.xml msgid "If [code]true[/code], collision with [Area]s will be reported." @@ -60528,9 +60820,8 @@ msgstr "" "[/codeblock]" #: doc/classes/Rect2.xml -#, fuzzy msgid "Returns the area of the [Rect2]. See also [method has_no_area]." -msgstr "返回 [Rect2] é¢ç§¯ã€‚" +msgstr "返回该 [Rect2] çš„é¢ç§¯ã€‚å¦è¯·å‚阅 [method has_no_area]。" #: doc/classes/Rect2.xml msgid "" @@ -60557,18 +60848,16 @@ msgid "" msgstr "返回[Rect2]å‘[enum Margin]æ–¹å‘增长给定数é‡å•ä½çš„副本。" #: doc/classes/Rect2.xml -#, fuzzy msgid "" "Returns [code]true[/code] if the [Rect2] is flat or empty, [code]false[/" "code] otherwise. See also [method get_area].\n" "[b]Note:[/b] If the [Rect2] has a negative size and is not flat or empty, " "[method has_no_area] will return [code]true[/code]." msgstr "" -"如果对象从给定的 [code]class[/code] ä¸ç»§æ‰¿ï¼Œåˆ™è¿”回 [code]true[/code]。å¦è¯·å‚" -"阅 [method get_class]。\n" -"[b]注:[/b] [method is_class] 没有考虑 [code]class_name[/code] 声明。如果对象" -"有 [code]class_name[/code] 定义,[method is_class] 将为该å称返回 " -"[code]false[/code] 。" +"如果该 [Rect2] 为线段或为空,则返回 [code]true[/code],å¦åˆ™è¿”回 [code]false[/" +"code]。å¦è¯·å‚阅 [method get_area]。\n" +"[b]注æ„:[/b]如果该 [Rect2] 的大å°ä¸ºè´Ÿæ•°ï¼Œä¸”æ—¢ä¸æ˜¯çº¿æ®µä¹Ÿä¸ä¸ºç©ºï¼Œåˆ™ [method " +"has_no_area] 会返回 [code]true[/code]。" #: doc/classes/Rect2.xml msgid "" @@ -60848,7 +61137,6 @@ msgstr "" "[code]internal_ambient_*[/code]属性控制。" #: doc/classes/ReflectionProbe.xml -#, fuzzy msgid "" "The maximum distance away from the [ReflectionProbe] an object can be before " "it is culled. Decrease this to improve performance, especially when using " @@ -60859,7 +61147,10 @@ msgid "" "[member extents] are already large." msgstr "" "设置对象在被剔除å‰ä¸Žè¯¥ [ReflectionProbe] 的最大è·ç¦»ã€‚调低å¯ä»¥æå‡æ€§èƒ½ï¼Œå°¤å…¶æ˜¯" -"使用 [constant UPDATE_ALWAYS] 作为 [member update_mode] 时。" +"使用 [constant UPDATE_ALWAYS] 作为 [member update_mode] 时。\n" +"[b]注æ„:[/b]最大åå°„è·ç¦»æ€»æ˜¯è‡³å°‘ç‰äºŽ [member extents] 的。这æ„味ç€å‡å° " +"[member max_distance] 并䏿€»èƒ½å°†å¯¹è±¡å‰”除出å射,尤其是在å射探针的 [member " +"extents] 相当大时。" #: doc/classes/ReflectionProbe.xml msgid "" @@ -61297,7 +61588,7 @@ msgstr "" #: doc/classes/Resource.xml msgid "Resources" -msgstr "" +msgstr "资æº" #: doc/classes/Resource.xml msgid "" @@ -61599,7 +61890,7 @@ msgstr "" #: doc/classes/ResourceImporter.xml msgid "Import plugins" -msgstr "" +msgstr "导入æ’ä»¶" #: doc/classes/ResourceImporter.xml msgid "The default import order." @@ -62007,11 +62298,11 @@ msgstr "" #: doc/classes/RichTextLabel.xml msgid "BBCode in RichTextLabel" -msgstr "" +msgstr "RichTextLabel ä¸çš„ BBCode" #: doc/classes/RichTextLabel.xml msgid "GUI Rich Text/BBcode Demo" -msgstr "" +msgstr "GUI 富文本/BBcode 演示" #: doc/classes/RichTextLabel.xml msgid "" @@ -62240,7 +62531,6 @@ msgstr "" "置为 [code]false[/code]。改用 [method append_bbcode] æ¥ä¿ç•™ BBCode æ ¼å¼ã€‚" #: doc/classes/RichTextLabel.xml -#, fuzzy msgid "" "The label's text in BBCode format. Is not representative of manual " "modifications to the internal tag stack. Erases changes made by other " @@ -62254,10 +62544,11 @@ msgid "" msgstr "" "BBCode æ ¼å¼çš„æ ‡ç¾æ–‡æœ¬ã€‚ä¸ä»£è¡¨å¯¹å†…éƒ¨æ ‡ç¾æ ˆçš„æ‰‹åŠ¨ä¿®æ”¹ã€‚ç¼–è¾‘æ—¶æ“¦é™¤é€šè¿‡å…¶ä»–æ–¹æ³•æ‰€" "åšçš„æ›´æ”¹ã€‚\n" -"[b]注æ„:[/b] ä¸å»ºè®®å°† [code]+=[/code] è¿ç®—符与 [code]bbcode_text[/code] 一起" +"[b]注æ„:[/b]ä¸å»ºè®®å°† [code]+=[/code] è¿ç®—符与 [code]bbcode_text[/code] 一起" "使用(例如 [code]bbcode_text += \"some string\"[/code]ï¼‰ï¼Œå› ä¸ºå®ƒä¼šæ›¿æ¢æ•´ä¸ªæ–‡" -"本并å¯èƒ½å¯¼è‡´é€Ÿåº¦å˜æ…¢ã€‚使用 [method append_bbcode] ä»£æ›¿æ·»åŠ æ–‡æœ¬ï¼Œé™¤éžä½ 必须关" -"é—åœ¨å…ˆå‰æ–¹æ³•è°ƒç”¨ä¸æ‰“å¼€çš„æ ‡ç¾ã€‚" +"本并å¯èƒ½å¯¼è‡´é€Ÿåº¦å˜æ…¢ã€‚它还会清除所有使用 [code]push_*[/code] æ–¹æ³•å…¥æ ˆçš„ " +"BBCode。使用 [method append_bbcode] ä»£æ›¿æ·»åŠ æ–‡æœ¬ï¼Œé™¤éžä½ 必须关é—åœ¨å…ˆå‰æ–¹æ³•è°ƒ" +"ç”¨ä¸æ‰“å¼€çš„æ ‡ç¾ã€‚" #: doc/classes/RichTextLabel.xml msgid "" @@ -63012,11 +63303,11 @@ msgstr "" #: doc/classes/RigidBody2D.xml msgid "2D Physics Platformer Demo" -msgstr "" +msgstr "2D 物ç†å¹³å°è·³è·ƒæ¼”示" #: doc/classes/RigidBody2D.xml doc/classes/Sprite.xml msgid "Instancing Demo" -msgstr "" +msgstr "实例化演示" #: doc/classes/RigidBody2D.xml msgid "" @@ -63866,7 +64157,7 @@ msgstr "" #: doc/classes/RootMotionView.xml msgid "Using AnimationTree - Root motion" -msgstr "" +msgstr "使用 AnimationTree - æ ¹è¿åЍ" #: doc/classes/RootMotionView.xml msgid "Path to an [AnimationTree] node to use as a basis for root motion." @@ -64454,6 +64745,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -65873,6 +66171,9 @@ msgid "" "recommended to use them for things that can affect gameplay (such as a " "player character made entirely out of soft bodies)." msgstr "" +"å¯å‘生形å˜çš„物ç†ä½“ã€‚ç”¨äºŽåˆ›å»ºå¸ƒæ–™ã€æ©¡èƒ¶ç‰æŸ”性æè´¨çš„坿‹‰ä¼¸æˆ–å˜å½¢çš„对象。\n" +"[b]注æ„:[/b][SoftBody] å˜åœ¨å¾ˆå¤šå·²çŸ¥çš„é—®é¢˜ã€‚å› æ¤ï¼Œå»ºè®®ä¸è¦ç”¨äºŽå¯¹æ¸¸æˆæ€§æœ‰å½±å“" +"的地方(例如完全由柔体制作的玩家角色)。" #: doc/classes/SoftBody.xml msgid "Returns local translation of a vertex in the surface array." @@ -65981,10 +66282,22 @@ msgstr "" #: doc/classes/Spatial.xml msgid "Introduction to 3D" -msgstr "" +msgstr "3D 简介" #: doc/classes/Spatial.xml doc/classes/Vector3.xml msgid "All 3D Demos" +msgstr "所有 3D 演示" + +#: doc/classes/Spatial.xml +msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." msgstr "" #: doc/classes/Spatial.xml @@ -66068,6 +66381,14 @@ msgid "" "[code]up[/code] vector.\n" "Operations take place in global space." msgstr "" +"旋转该节点,让å‘å‰çš„å±€éƒ¨åæ ‡è½´ï¼ˆ-Z)指å‘ç›®æ ‡ä½ç½® [code]target[/code]。\n" +"å‘ä¸Šçš„å±€éƒ¨åæ ‡è½´ï¼ˆ+Y)在与å‘å‰çš„å±€éƒ¨åæ ‡è½´ä¿æŒåž‚ç›´çš„å‰æä¸‹ï¼ŒæŒ‡å‘å°½é‡æŽ¥è¿‘ " +"[code]up[/code] å‘é‡çš„æ–¹å‘ã€‚æœ€ç»ˆçš„å˜æ¢æ˜¯æ£äº¤çš„,ä½ç½®åŽŸæœ‰ç¼©æ”¾ã€‚å¦‚æžœæ˜¯éžç»Ÿä¸€ç¼©" +"放,å¯èƒ½æ— 法æ£å¸¸å·¥ä½œã€‚\n" +"ç›®æ ‡ä½ç½® [code]target[/code] ä¸èƒ½ä¸Žè¯¥èŠ‚ç‚¹çš„ä½ç½®ç›¸åŒï¼Œ[code]up[/code] å‘é‡ä¸èƒ½" +"是零,从该节点的ä½ç½®åˆ° [code]target[/code] å‘é‡çš„æ–¹å‘ä¸èƒ½ä¸Ž [code]up[/code] " +"平行。\n" +"æ“作å‘生在全局空间。" #: doc/classes/Spatial.xml msgid "" @@ -68141,7 +68462,7 @@ msgstr "返回表示æ¤ç²¾çµçš„矩形。" #: doc/classes/SpriteBase3D.xml msgid "If [code]true[/code], the specified flag will be enabled." -msgstr "如果[code]true[/code]ï¼ŒæŒ‡å®šçš„æ ‡å¿—å°†è¢«å¯ç”¨ã€‚" +msgstr "如果为 [code]true[/code]ï¼ŒæŒ‡å®šçš„æ ‡å¿—å°†è¢«å¯ç”¨ã€‚" #: doc/classes/SpriteBase3D.xml msgid "The direction in which the front of the texture faces." @@ -68152,10 +68473,11 @@ msgid "" "If [code]true[/code], texture can be seen from the back as well, if " "[code]false[/code], it is invisible when looking at it from behind." msgstr "" -"如果[code]true[/code],从åŽé¢ä¹Ÿå¯ä»¥çœ‹åˆ°çº¹ç†ï¼Œå¦‚æžœ[code]false[/code],从åŽé¢çœ‹" -"它是ä¸å¯è§çš„。" +"如果为 [code]true[/code],则从åŽé¢ä¹Ÿå¯ä»¥çœ‹åˆ°çº¹ç†ï¼Œå¦‚果为 [code]false[/code]," +"则从åŽé¢çœ‹å®ƒæ˜¯ä¸å¯è§çš„。" #: doc/classes/SpriteBase3D.xml +#, fuzzy msgid "" "A color value used to [i]multiply[/i] the texture's colors. Can be used for " "mood-coloring or to simulate the color of light.\n" @@ -68164,11 +68486,19 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" +"用于与该纹ç†é¢œè‰²[i]相乘[/i]的颜色值。å¯ç”¨äºŽæ¸²æŸ“情绪,或者模拟ç¯å…‰çš„颜色。\n" +"[b]注æ„:[/b]如果 [SpriteBase3D] 定义了 [member GeometryInstance." +"material_override],则必须对该æè´¨è¦†ç›–项进行é…置,让其在å照率ä¸è€ƒè™‘顶点颜" +"色。å¦åˆ™ä¼šå¿½ç•¥ [member modulate] 䏿‰€å®šä¹‰çš„颜色。对于 [SpatialMaterial],必须" +"让 [member SpatialMaterial.vertex_color_use_as_albedo] 为 [code]true[/code]。" +"对于 [ShaderMaterial],ç€è‰²å™¨çš„ [code]fragment()[/code] 函数ä¸å¿…é¡»æ’å…¥ " +"[code]ALBEDO *= COLOR.rgb;[/color]。" #: doc/classes/SpriteBase3D.xml +#, fuzzy msgid "" "The texture's visibility on a scale from [code]0[/code] (fully invisible) to " "[code]1[/code] (fully visible). [member opacity] is a multiplier for the " @@ -68178,9 +68508,17 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" +"该纹ç†çš„å¯è§æ€§ï¼Œä»Ž [code]0[/code](完全ä¸å¯è§ï¼‰åˆ° [code]1[/code](完全å¯" +"è§ï¼‰ã€‚[member opacity] 是 [member modulate] 颜色的 Alpha 通é“。\n" +"[b]注æ„:[/b]如果 [SpriteBase3D] 定义了 [member GeometryInstance." +"material_override],则必须对该æè´¨è¦†ç›–项进行é…置,让其在å照率ä¸è€ƒè™‘顶点颜" +"色。å¦åˆ™ä¼šå¿½ç•¥ [member opacity] 䏿‰€å®šä¹‰çš„ä¸é€æ˜Žåº¦ã€‚对于 [SpatialMaterial]," +"必须让 [member SpatialMaterial.vertex_color_use_as_albedo] 为 [code]true[/" +"code]。对于 [ShaderMaterial],ç€è‰²å™¨çš„ [code]fragment()[/code] 函数ä¸å¿…é¡»æ’" +"å…¥ [code]ALPHA *= COLOR.a;[/color]。" #: doc/classes/SpriteBase3D.xml msgid "The size of one pixel's width on the sprite to scale it in 3D." @@ -68622,9 +68960,8 @@ msgid "" msgstr "为 [code]true[/code] 时,该 [StreamPeer] è¿›è¡Œç¼–è§£ç æ—¶ä¼šä½¿ç”¨å¤§ç«¯æ ¼å¼ã€‚" #: doc/classes/StreamPeerBuffer.xml -#, fuzzy msgid "Data buffer stream peer." -msgstr "SSLæµå¯¹ç‰ä½“。" +msgstr "æ•°æ®ç¼“冲区æµå¯¹ç‰ä½“。" #: doc/classes/StreamPeerBuffer.xml msgid "" @@ -68635,43 +68972,47 @@ msgid "" "bytes to the start of the buffer. Get and put operations are performed at " "the cursor position and will move the cursor accordingly." msgstr "" +"使用å—节数组作为æµçš„æ•°æ®ç¼“冲区æµå¯¹ç‰ä½“。该对象å¯ç”¨äºŽå¤„ç†æ¥è‡ªç½‘络会è¯çš„二进制" +"æ•°æ®ã€‚è¦å¤„ç†ä¿å˜åœ¨æ–‡ä»¶ä¸çš„二进制数æ®ï¼Œå¯ä»¥ç›´æŽ¥ä½¿ç”¨ [File]。\n" +"[StreamPeerBuffer] 对象会ä¿å˜ä¸€ä¸ªå†…部指针,是è·ç¦»è¯¥ç¼“冲区开头的å—节åç§»é‡ã€‚" +"Get å’Œ put æ“作都在该指针处进行,并会将其进行对应的移动。" #: doc/classes/StreamPeerBuffer.xml msgid "Clears the [member data_array] and resets the cursor." -msgstr "" +msgstr "清除 [member data_array] å¹¶é‡ç½®æŒ‡é’ˆã€‚" #: doc/classes/StreamPeerBuffer.xml msgid "" "Returns a new [StreamPeerBuffer] with the same [member data_array] content." -msgstr "" +msgstr "返回新的 [StreamPeerBuffer],具有相åŒçš„ [member data_array] 内容。" #: doc/classes/StreamPeerBuffer.xml -#, fuzzy msgid "Returns the current cursor position." -msgstr "返回当å‰çš„æ»šåЍä½ç½®ã€‚" +msgstr "返回当å‰çš„æŒ‡é’ˆä½ç½®ã€‚" #: doc/classes/StreamPeerBuffer.xml -#, fuzzy msgid "Returns the size of [member data_array]." -msgstr "è¿”å›žå‚æ•°çš„æ£å¼¦å€¼ã€‚" +msgstr "返回 [member data_array] 的大å°ã€‚" #: doc/classes/StreamPeerBuffer.xml msgid "Resizes the [member data_array]. This [i]doesn't[/i] update the cursor." -msgstr "" +msgstr "调整 [member data_array] 的大å°ã€‚[i]ä¸ä¼š[/i]更新指针。" #: doc/classes/StreamPeerBuffer.xml msgid "" "Moves the cursor to the specified position. [code]position[/code] must be a " "valid index of [member data_array]." msgstr "" +"将指针移动到指定的ä½ç½®ã€‚[code]position[/code] 必须是 [member data_array] 的有" +"效索引。" #: doc/classes/StreamPeerBuffer.xml msgid "The underlying data buffer. Setting this value resets the cursor." -msgstr "" +msgstr "内部的数æ®ç¼“冲。设置该值会é‡ç½®æŒ‡é’ˆã€‚" #: doc/classes/StreamPeerSSL.xml msgid "SSL stream peer." -msgstr "SSLæµå¯¹ç‰ä½“。" +msgstr "SSL æµå¯¹ç‰ä½“。" #: doc/classes/StreamPeerSSL.xml msgid "" @@ -68945,8 +69286,13 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "该å—符串以指定å—符串开头时,返回 [code]true[/code]。" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." -msgstr "返回æ¤å—符串的二元组(连ç»å—æ¯å¯¹ï¼‰ã€‚" +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "" @@ -69182,6 +69528,10 @@ msgid "" "does [i]not[/i] imply the strings are equal, because different strings can " "have identical hash values due to hash collisions." msgstr "" +"返回代表该å—符串内容的 32 ä½å“ˆå¸Œå€¼ã€‚\n" +"[b]注æ„:[/b]内容相åŒçš„ [String] 会得到一致的哈希值。然而,å之ä¸ç„¶ã€‚返回一致" +"的哈希值[i]å¹¶ä¸[/i]æ„味ç€å—符串相ç‰ï¼Œå› 为ä¸åŒçš„å—符串å¯èƒ½å› 为哈希碰撞而得到一" +"致的哈希值。" #: doc/classes/String.xml msgid "" @@ -69308,8 +69658,17 @@ msgstr "" "[code]: / \\ ? * \" | % < >[/code]" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." -msgstr "该å—ç¬¦ä¸²åŒ…å«æœ‰æ•ˆæµ®ç‚¹æ•°æ—¶ï¼Œè¿”回 [code]true[/code]。" +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "" @@ -69334,17 +69693,31 @@ msgstr "" "[code]false[/code]。" #: doc/classes/String.xml +#, fuzzy msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" "该å—ç¬¦ä¸²ä¸ºæœ‰æ•ˆæ ‡è¯†ç¬¦æ—¶ï¼Œè¿”å›ž [code]true[/code]ã€‚æœ‰æ•ˆæ ‡è¯†ç¬¦ä»…èƒ½å¤ŸåŒ…å«å—æ¯ã€æ•°" "å—ã€ä¸‹åˆ’线([code]_[/code]),并且ä¸èƒ½ä»¥æ•°å—开头。" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." -msgstr "该å—ç¬¦ä¸²åŒ…å«æœ‰æ•ˆæ•´æ•°æ—¶ï¼Œè¿”回 [code]true[/code]。" +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "" @@ -69402,19 +69775,23 @@ msgstr "" "一的å‰ç¼€å—符串,请å‚阅 [method trim_prefix]。" #: doc/classes/String.xml +#, fuzzy msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" "判æ–è¡¨è¾¾å¼æ˜¯å¦åŒ¹é…(区分大å°å†™)ï¼Œå…¶ä¸ [code]\"*\"[/code] 匹é…零个或多个任æ„å—" "符并且 [code]\"?\"[/code] 匹é…除å¥ç‚¹( [code]\".\"[/code] )外的任æ„å—符。" #: doc/classes/String.xml +#, fuzzy msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" "判æ–è¡¨è¾¾å¼æ˜¯å¦åŒ¹é…(ä¸åŒºåˆ†å¤§å°å†™)ï¼Œå…¶ä¸ [code]\"*\"[/code] 匹é…零个或多个任æ„" "å—符并且 [code]\"?\"[/code] 匹é…除å¥ç‚¹( [code]\".\"[/code] )外的任æ„å—符。" @@ -69637,9 +70014,17 @@ msgstr "以å—符串形å¼è¿”回å—符串的 SHA-256 哈希值。" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." -msgstr "返回与æ¤å—符串相比的文本的相似度指数。 1表示完全相似,0表示完全ä¸åŒã€‚" +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" +msgstr "" #: doc/classes/String.xml msgid "Returns a simplified canonical path." @@ -69743,6 +70128,15 @@ msgid "" "print(\"1e3\".to_float()) # 1000\n" "[/codeblock]" msgstr "" +"将包å«å进制数å—çš„å—符串转æ¢ä¸º [code]float[/code]ã€‚è¯¥æ–¹æ³•ä¼šåœ¨é¦–ä¸ªéžæ•°å—å—符处" +"åœæ¢ï¼Œé™¤éžæ˜¯é¦–次é‡åˆ° [code].[/code]ï¼ˆå°æ•°ç‚¹ï¼‰ä»¥åŠè¡¨ç¤ºæŒ‡æ•°çš„ [code]e[/" +"code]。\n" +"[codeblock]\n" +"print(\"12.3\".to_float()) # 12.3\n" +"print(\"1.2.3\".to_float()) # 1.2\n" +"print(\"12ab3\".to_float()) # 12\n" +"print(\"1e3\".to_float()) # 1000\n" +"[/codeblock]" #: doc/classes/String.xml msgid "" @@ -69755,6 +70149,13 @@ msgid "" "print(\"1.2.3\".to_int()) # 1\n" "[/codeblock]" msgstr "" +"将包å«è¯ä¹¦çš„å—符串转æ¢ä¸º [code]int[/code]ã€‚è¯¥æ–¹æ³•ä¼šåˆ é™¤ä»»ä½•éžæ•°å—å—符,并在é‡" +"到 [code].[/code] åŽåœæ¢ã€‚\n" +"[codeblock]\n" +"print(\"123\".to_int()) # 123\n" +"print(\"a1b2c3\".to_int()) # 123\n" +"print(\"1.2.3\".to_int()) # 1\n" +"[/codeblock]" #: doc/classes/String.xml msgid "Returns the string converted to lowercase." @@ -71440,6 +71841,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "返回所有æ ä½åŠå†…部边è·çš„æ€»å®½åº¦ã€‚" #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "返回该 Label 的文本行数。" + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "返回å¯è§è¡Œæ•°ã€‚" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "返回一个 [String] 文本,该文本ä¸çš„å•è¯ä½äºŽ caretï¼ˆæ–‡æœ¬å…‰æ ‡ï¼‰çš„ä½ç½®ã€‚" @@ -72674,6 +73085,12 @@ msgstr "" "[code]data_type[/code] 主题项。" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "将主题的å–值设置为默认主题的副本。" @@ -72728,14 +73145,14 @@ msgstr "" "get_constant]å’Œ/或[method get_constant_list]使用。" #: doc/classes/Theme.xml -#, fuzzy msgid "" "Returns the [Font] at [code]name[/code] if the theme has [code]node_type[/" "code]. If such item does not exist and [member default_font] is set on the " "theme, the default font will be returned." msgstr "" -"如果主题有[code]node_type[/code],则将[code]old_name[/code]çš„[Font]é‡å‘½å为" -"[code]name[/code]。如果[code]name[/code]å·²ç»è¢«å ç”¨ï¼Œåˆ™æ¤æ–¹æ³•失败。" +"如果主题有 [code]node_type[/code],则返回å为 [code]name[/code] çš„ [Font]。如" +"æžœä¸å˜åœ¨è¿™æ ·çš„项目,而该主题设置了 [member default_font],则会返回该默认å—" +"体。" #: doc/classes/Theme.xml msgid "" @@ -72857,6 +73274,19 @@ msgstr "" "[b]注æ„:[/b][code]node_type[/code]没有生效,在未æ¥çš„版本ä¸ä¼šè¢«åˆ 除。" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "返回æ£åœ¨æ’放的场景åç§°ã€‚å¦‚æžœå½“å‰æ²¡æœ‰åœºæ™¯æ£åœ¨æ’放,返回一个空å—符串。" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "返回给定[code]signal[/code]的连接的[Array]。" + +#: doc/classes/Theme.xml msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" @@ -72924,6 +73354,14 @@ msgstr "" "如果该主题没有[code]node_type[/code],则返回[code]false[/code]。" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "" +"å¦‚æžœé¢„åŠ è½½å™¨åŒ…å«ä¸€ä¸ªä¸Ž[code]name[/code]相关的资æºï¼Œåˆ™è¿”回[code]true[/code]。" + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -73055,6 +73493,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -73107,11 +73559,11 @@ msgstr "" #: doc/classes/Thread.xml msgid "Using multiple threads" -msgstr "" +msgstr "使用多线程" #: doc/classes/Thread.xml msgid "Thread-safe APIs" -msgstr "" +msgstr "线程安全的 API" #: doc/classes/Thread.xml msgid "" @@ -73213,11 +73665,11 @@ msgstr "" #: doc/classes/TileMap.xml doc/classes/TileSet.xml msgid "Using Tilemaps" -msgstr "" +msgstr "使用图å—地图" #: doc/classes/TileMap.xml doc/classes/TileSet.xml msgid "2D Hexagonal Demo" -msgstr "" +msgstr "2D å…边形演示" #: doc/classes/TileMap.xml msgid "Clears all cells." @@ -73922,6 +74374,10 @@ msgid "" "code] (which instead accesses the [TileMap]'s [member CanvasItem.modulate] " "property)." msgstr "" +"设置该图å—的调制颜色。\n" +"[b]注æ„:[/b]调制是通过设置该图å—的顶点颜色实现的。è¦åœ¨ç€è‰²å™¨ä¸è®¿é—®ï¼Œè¯·ä½¿ç”¨ " +"[code]COLOR[/code] è€Œä¸æ˜¯ [code]MODULATE[/code](访问的是 [TileMap] çš„ " +"[member CanvasItem.modulate] 属性)。" #: doc/classes/TileSet.xml msgid "Sets the tile's name." @@ -75063,7 +75519,6 @@ msgid "Clears the tree. This removes all items." msgstr "æ¸…é™¤æ ‘ã€‚è¿™å°†åˆ é™¤æ‰€æœ‰é¡¹ç›®ã€‚" #: doc/classes/Tree.xml -#, fuzzy msgid "" "Creates an item in the tree and adds it as a child of [code]parent[/code], " "which can be either a valid [TreeItem] or [code]null[/code].\n" @@ -75072,11 +75527,12 @@ msgid "" "The new item will be the [code]idx[/code]th child of parent, or it will be " "the last child if there are not enough siblings." msgstr "" -"åœ¨æ ‘ä¸åˆ›å»ºä¸€ä¸ªé¡¹ç›®ï¼Œå¹¶å°†å…¶ä½œä¸º[code]parent[/code]的一个å项。\n" -"如果[code]parent[/code]是[code]null[/code]ï¼Œæ ¹é¡¹å°†æ˜¯çˆ¶é¡¹ï¼Œå¦‚æžœæ ‘æ˜¯ç©ºçš„ï¼Œæ–°é¡¹" -"å°†æ˜¯æ ¹æœ¬èº«ã€‚\n" -"新项将是父项的[code]idx[/code]个å顶,如果没有足够的兄弟å§å¦¹ï¼Œå®ƒå°†æ˜¯æœ€åŽä¸€ä¸ª" -"å项。" +"åœ¨æ ‘ä¸åˆ›å»ºä¸€ä¸ªé¡¹ç›®ï¼Œå¹¶å°†å…¶ä½œä¸ºçˆ¶é¡¹ [code]parent[/code] çš„å项。该父项å¯ä»¥æ˜¯æœ‰" +"效的 [TreeItem] 或 [code]null[/code]。\n" +"如果 [code]parent[/code] 是 [code]null[/code]ï¼Œå°†ä½¿ç”¨æ ¹é¡¹ä½œä¸ºçˆ¶é¡¹ï¼Œå¦‚æžœæ ‘æ˜¯ç©º" +"çš„ï¼Œæ–°é¡¹å°†æ˜¯æ ¹æœ¬èº«ã€‚\n" +"新项将是父项的第 [code]idx[/code] 个å项目,如果没有足够的兄弟å§å¦¹ï¼Œå®ƒå°†æ˜¯æœ€" +"åŽä¸€ä¸ªå项。" #: doc/classes/Tree.xml msgid "" @@ -75103,15 +75559,14 @@ msgstr "" "SELECT_MULTI] 模å¼ä¸‹å¯è§ã€‚" #: doc/classes/Tree.xml -#, fuzzy msgid "" "Returns the button id at [code]position[/code], or -1 if no button is there." -msgstr "返回在[code]position[/code]的列索引,如果那里没有项目,则返回-1。" +msgstr "返回在 [code]position[/code] 的按钮 ID,如果那里没有按钮,则返回 -1。" #: doc/classes/Tree.xml msgid "" "Returns the column index at [code]position[/code], or -1 if no item is there." -msgstr "返回在[code]position[/code]的列索引,如果那里没有项目,则返回-1。" +msgstr "返回在 [code]position[/code] 的列索引,如果那里没有项目,则返回 -1。" #: doc/classes/Tree.xml msgid "Returns the column's title." @@ -75170,14 +75625,13 @@ msgid "Returns the column for the currently edited item." msgstr "返回当å‰ç¼–辑项的列。" #: doc/classes/Tree.xml -#, fuzzy msgid "" "Returns the rectangle area for the specified [TreeItem]. If [code]column[/" "code] is specified, only get the position and size of that column, otherwise " "get the rectangle containing all columns." msgstr "" -"返回指定项目的矩形区域。如果[code]column[/code]被指定,åªå¾—到该列的ä½ç½®å’Œå¤§" -"å°ï¼Œå¦åˆ™å¾—åˆ°åŒ…å«æ‰€æœ‰åˆ—的矩形。" +"返回指定 [TreeItem] 的矩形区域。如果指定了 [code]column[/code],则åªå¾—到该列" +"çš„ä½ç½®å’Œå¤§å°ï¼Œå¦åˆ™ä¼šå¾—åˆ°åŒ…å«æ‰€æœ‰åˆ—的矩形。" #: doc/classes/Tree.xml msgid "" @@ -75186,15 +75640,15 @@ msgid "" msgstr "返回指定ä½ç½®ï¼Œå³ç›¸å¯¹äºŽæ ‘的原点ä½ç½®çš„æ ‘ä¸é¡¹ã€‚" #: doc/classes/Tree.xml -#, fuzzy msgid "" "Returns the next selected [TreeItem] after the given one, or [code]null[/" "code] if the end is reached.\n" "If [code]from[/code] is [code]null[/code], this returns the first selected " "item." msgstr "" -"返回指定项åŽçš„下一个选择项,如果到达终点则返回[code]null[/code]。\n" -"如果[code]from[/code]是[code]null[/code],将返回第一个被选ä¸çš„项。" +"返回指定的 [TreeItem] 之åŽçš„下一个选ä¸é¡¹ï¼Œå¦‚果到达终点则返回 [code]null[/" +"code]。\n" +"如果 [code]from[/code] 是 [code]null[/code],将返回第一个被选ä¸çš„项。" #: doc/classes/Tree.xml msgid "Returns the last pressed button's index." @@ -75240,9 +75694,8 @@ msgstr "" "è¦åˆ¤æ–一个项的æŸä¸€åˆ—是å¦è¢«é€‰ä¸ï¼Œè¯·ä½¿ç”¨[method TreeItem.is_selected]。" #: doc/classes/Tree.xml -#, fuzzy msgid "Causes the [Tree] to jump to the specified [TreeItem]." -msgstr "使 [Tree] 跳转到指定的项。" +msgstr "使 [Tree] 跳转到指定的 [TreeItem]。" #: doc/classes/Tree.xml msgid "" @@ -75661,13 +76114,13 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" "在 [code]column[/code] åˆ—æ·»åŠ ä¸€ä¸ªå¸¦æœ‰ [Texture] [code]button[/code] 的按钮。 " -"[code]button_idx[/code] ç´¢å¼•ç”¨äºŽåœ¨è°ƒç”¨å…¶ä»–æ–¹æ³•æ—¶æ ‡è¯†æŒ‰é’®ã€‚å¦‚æžœæœªæŒ‡å®šï¼Œåˆ™ä½¿ç”¨" -"下一个å¯ç”¨ç´¢å¼•,å¯ä»¥é€šè¿‡åœ¨æ¤æ–¹æ³•之åŽè°ƒç”¨ [method get_button_count] æ¥æ£€ç´¢è¯¥ç´¢" -"引。å¯é€‰ï¼Œè¯¥æŒ‰é’®å¯ä»¥ [code]disabled[/code] 和具有 [code]tooltip[/code]。" +"[code]id[/code] ç”¨äºŽæ ‡è¯†æŒ‰é’®ã€‚å¦‚æžœæœªæŒ‡å®šï¼Œåˆ™ä½¿ç”¨ä¸‹ä¸€ä¸ªå¯ç”¨ç´¢å¼•,å¯ä»¥é€šè¿‡åœ¨æ¤" +"方法之åŽè°ƒç”¨ [method get_button_count] æ¥æ£€ç´¢è¯¥ç´¢å¼•。å¯é€‰ï¼Œè¯¥æŒ‰é’®å¯ä»¥ " +"[code]disabled[/code] 和具有 [code]tooltip[/code]。" #: doc/classes/TreeItem.xml msgid "" @@ -75700,38 +76153,36 @@ msgid "" "Returns the [Texture] of the button at index [code]button_idx[/code] in " "column [code]column[/code]." msgstr "" -"返回在[code]column[/code]ä¸ç´¢å¼•[code]button_idx[/code]按钮的[Texture]。" +"返回在 [code]column[/code] 列ä¸ç´¢å¼•为 [code]button_idx[/code] 的按钮的 " +"[Texture]。" #: doc/classes/TreeItem.xml -#, fuzzy msgid "" "Returns the button index if there is a button with id [code]id[/code] in " "column [code]column[/code], otherwise returns -1." msgstr "" -"返回在[code]column[/code]ä¸ç´¢å¼•[code]button_idx[/code]按钮的æç¤ºä¿¡æ¯å—符串。" +"如果在 [code]column[/code] 列ä¸å˜åœ¨ ID 为 [code]id[/code] 的按钮,则返回其索" +"引å·ï¼Œå¦åˆ™è¿”回 -1。" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" -"返回[code]column[/code]䏿Œ‰é’®çš„æ•°é‡ã€‚如果没有指定索引,å¯ä»¥ç”¨æ¥èŽ·å–æœ€è¿‘æ·»åŠ çš„" -"按钮的索引。" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "返回列[code]column[/code]的自定义颜色。" #: doc/classes/TreeItem.xml -#, fuzzy msgid "" "Returns the id for the button at index [code]button_idx[/code] in column " "[code]column[/code]." msgstr "" -"返回在[code]column[/code]ä¸ç´¢å¼•[code]button_idx[/code]按钮的æç¤ºä¿¡æ¯å—符串。" +"返回在 [code]column[/code] 列ä¸ç´¢å¼•为 [code]button_idx[/code] 的按钮的 ID。" #: doc/classes/TreeItem.xml msgid "" "Returns the tooltip string for the button at index [code]button_idx[/code] " "in column [code]column[/code]." msgstr "" -"返回在[code]column[/code]ä¸ç´¢å¼•[code]button_idx[/code]按钮的æç¤ºä¿¡æ¯å—符串。" +"返回在 [code]column[/code] 列ä¸ç´¢å¼•为 [code]button_idx[/code] 的按钮的æç¤ºä¿¡" +"æ¯å—符串。" #: doc/classes/TreeItem.xml msgid "Returns the column's cell mode." @@ -75740,7 +76191,7 @@ msgstr "返回该列的å•å…ƒæ ¼æ¨¡å¼ã€‚" #: doc/classes/TreeItem.xml msgid "" "Returns the TreeItem's first child item or a null object if there is none." -msgstr "返回TreeItemæ ‘é¡¹çš„ç¬¬ä¸€ä¸ªå项,如果没有,则返回一个空对象。" +msgstr "返回 TreeItem æ ‘é¡¹çš„ç¬¬ä¸€ä¸ªå项,如果没有,则返回一个空对象。" #: doc/classes/TreeItem.xml msgid "Returns the custom background color of column [code]column[/code]." @@ -77497,7 +77948,7 @@ msgstr "" #: doc/classes/Vector2.xml doc/classes/Vector3.xml msgid "3Blue1Brown Essence of Linear Algebra" -msgstr "" +msgstr "3Blue1Brown《线性代数的本质》" #: doc/classes/Vector2.xml msgid "" @@ -77858,7 +78309,7 @@ msgid "" "will always evaluate to [code]true[/code]." msgstr "" "å¯ç”¨äºŽè¡¨ç¤º 3D 空间ä¸çš„ä½ç½®æˆ–任何其他数值对的 3 å…ƒç´ ç»“æž„ã€‚\n" -"[b]注æ„:[/b] 在布尔上下文ä¸ï¼Œå¦‚æžœ Vector3 ç‰äºŽ [code]Vector3(0, 0, 0)[/" +"[b]注æ„:[/b]在布尔上下文ä¸ï¼Œå¦‚æžœ Vector3 ç‰äºŽ [code]Vector3(0, 0, 0)[/" "code],将评估为 [code]false[/code]。å¦åˆ™ï¼Œ Vector3 将始终评估为 [code]true[/" "code]。" @@ -78305,14 +78756,12 @@ msgstr "" "阻æ¢è½¦èº«ä¾§å€¾ã€‚" #: doc/classes/VFlowContainer.xml -#, fuzzy msgid "Vertical flow container." -msgstr "垂直盒å¼å®¹å™¨ã€‚" +msgstr "垂直æµå¼å®¹å™¨ã€‚" #: doc/classes/VFlowContainer.xml -#, fuzzy msgid "Vertical version of [FlowContainer]." -msgstr "[Separator]的垂直版本。" +msgstr "[FlowContainer] 的垂直版本。" #: doc/classes/VideoPlayer.xml msgid "Control for playing video streams." @@ -78580,23 +79029,23 @@ msgstr "" #: doc/classes/Viewport.xml msgid "Viewports tutorial index" -msgstr "" +msgstr "视窗教程索引" #: doc/classes/Viewport.xml doc/classes/ViewportTexture.xml msgid "3D in 2D Demo" -msgstr "" +msgstr "2D ä¸çš„ 3D 演示" #: doc/classes/Viewport.xml msgid "Screen Capture Demo" -msgstr "" +msgstr "å±å¹•æ•æ‰æ¼”示" #: doc/classes/Viewport.xml msgid "Dynamic Split Screen Demo" -msgstr "" +msgstr "动æ€åˆ†å±æ¼”示" #: doc/classes/Viewport.xml doc/classes/ViewportTexture.xml msgid "3D Viewport Scaling Demo" -msgstr "" +msgstr "3D Viewport 缩放演示" #: doc/classes/Viewport.xml msgid "" @@ -78627,11 +79076,10 @@ msgid "Returns the topmost modal in the stack." msgstr "è¿”å›žå †æ ˆä¸æœ€é¡¶å±‚的模型。" #: doc/classes/Viewport.xml -#, fuzzy msgid "" "Returns the mouse's position in this [Viewport] using the coordinate system " "of this [Viewport]." -msgstr "è¿”å›žç›¸å¯¹äºŽè§†çª—çš„é¼ æ ‡ä½ç½®ã€‚" +msgstr "返回该 [Viewport] ä¸é¼ æ ‡çš„ä½ç½®ï¼Œä½¿ç”¨è¯¥ [Viewport] çš„åæ ‡ç³»ã€‚" #: doc/classes/Viewport.xml msgid "Returns information about the viewport from the rendering pipeline." @@ -78743,6 +79191,7 @@ msgid "" "Moves the mouse pointer to the specified position in this [Viewport] using " "the coordinate system of this [Viewport]." msgstr "" +"å°†é¼ æ ‡æŒ‡é’ˆç§»åŠ¨åˆ°è¯¥ [Viewport] ä¸çš„æŒ‡å®šä½ç½®ï¼Œä½¿ç”¨è¯¥ [Viewport] çš„åæ ‡ç³»ã€‚" #: doc/classes/Viewport.xml msgid "If [code]true[/code], the viewport will be used in AR/VR process." @@ -82408,6 +82857,10 @@ msgid "" "shaders), this function takes an optional argument to query either low or " "high priority changes, or any changes." msgstr "" +"如果 VisualServer 的数æ®å˜åœ¨ä¿®æ”¹ï¼Œåˆ™è¿”回 [code]true[/code]。å‘生该情况时,通" +"常会调用 [method draw]。\n" +"å› ä¸ºä¿®æ”¹ä¼šè¢«æ³¨å†Œä¸ºé«˜ä¼˜å…ˆçº§æˆ–ä½Žä¼˜å…ˆçº§ï¼ˆä¾‹å¦‚åŠ¨æ€ç€è‰²å™¨ï¼‰ï¼Œè¯¥å‡½æ•°æŽ¥å—å¯é€‰çš„å‚" +"数,用于查询低优先级或高优先级的修改,或者任何修改。" #: doc/classes/VisualServer.xml msgid "Not yet implemented. Always returns [code]false[/code]." @@ -85043,7 +85496,7 @@ msgstr "对SSAO输出执行3x3模糊。使用它å¯ä»¥èŽ·å¾—æœ€å¹³æ»‘çš„SSAO。" #: doc/classes/VisualServer.xml msgid "" "Used to query for any changes that request a redraw, whatever the priority." -msgstr "" +msgstr "ç”¨äºŽæŸ¥è¯¢ä»»ä½•è¦æ±‚é‡ç»˜çš„ä¿®æ”¹ï¼Œæ— è®ºä¼˜å…ˆçº§ã€‚" #: doc/classes/VisualServer.xml msgid "" @@ -85051,10 +85504,12 @@ msgid "" "causing editor redraws. Examples might include dynamic shaders (typically " "using the [code]TIME[/code] built-in)." msgstr "" +"注册为低优先级的修改,å¯ä»¥è¢«å±è”½é˜²æ¢é€ æˆç¼–辑器é‡ç»˜ã€‚例如动æ€ç€è‰²å™¨ï¼ˆä¸€èˆ¬ä¼šä½¿" +"用 [code]TIME[/code] 内置å˜é‡ï¼‰ã€‚" #: doc/classes/VisualServer.xml msgid "Registered changes which can cause a redraw default to high priority." -msgstr "" +msgstr "注册为高优先级的修改,会引起é‡ç»˜ã€‚" #: doc/classes/VisualShader.xml msgid "A custom shader program with a visual editor." @@ -87817,8 +88272,8 @@ msgid "" "[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level " "multiplayer peer." msgstr "" -"当收到WebSocketæ¶ˆæ¯æ—¶è§¦å‘。\n" -"[b]注æ„:[/b]当作为高级别的多人对ç‰ä½“使用时,这个信å·[i]not[/i]ä¸å‘射。" +"当收到 WebSocket æ¶ˆæ¯æ—¶è§¦å‘。\n" +"[b]注æ„:[/b]当被用作高级多人对ç‰ä½“使用时,[i]ä¸ä¼š[/i]触å‘这个信å·ã€‚" #: modules/websocket/doc_classes/WebSocketClient.xml msgid "" @@ -87832,19 +88287,20 @@ msgstr "" #: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml msgid "Base class for WebSocket server and client." -msgstr "WebSocketæœåŠ¡å™¨å’Œå®¢æˆ·ç«¯çš„åŸºç±»ã€‚" +msgstr "WebSocket æœåŠ¡å™¨å’Œå®¢æˆ·ç«¯çš„åŸºç±»ã€‚" #: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml msgid "" "Base class for WebSocket server and client, allowing them to be used as " "network peer for the [MultiplayerAPI]." msgstr "" -"WebSocketæœåŠ¡å™¨å’Œå®¢æˆ·ç«¯çš„åŸºç±»ï¼Œå…许它们作为[MultiplayerAPI]的网络对ç‰ä½“使用。" +"WebSocket æœåŠ¡å™¨å’Œå®¢æˆ·ç«¯çš„åŸºç±»ï¼Œå…许它们作为 [MultiplayerAPI] 的网络对ç‰ä½“使" +"用。" #: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml msgid "" "Returns the [WebSocketPeer] associated to the given [code]peer_id[/code]." -msgstr "返回与给定[code]peer_id[/code]å…³è”çš„[WebSocketPeer]。" +msgstr "返回与给定 [code]peer_id[/code] å…³è”çš„ [WebSocketPeer]。" #: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml msgid "" @@ -88128,7 +88584,6 @@ msgid "AR/VR interface using WebXR." msgstr "使用 WebXR çš„ AR/VR 接å£ã€‚" #: modules/webxr/doc_classes/WebXRInterface.xml -#, fuzzy msgid "" "WebXR is an open standard that allows creating VR and AR applications that " "run in the web browser.\n" @@ -88253,15 +88708,15 @@ msgid "" "a wider or narrower set of devices and input methods, or to allow more " "advanced interactions with more advanced devices." msgstr "" -"WebXRæ˜¯ä¸€ä¸ªå¼€æ”¾æ ‡å‡†ï¼Œå…许创建在网络æµè§ˆå™¨ä¸è¿è¡Œçš„VRå’ŒAR应用程åºã€‚\n" -"å› æ¤ï¼Œè¿™ä¸ªç•Œé¢åªæœ‰åœ¨HTML5导出ä¸è¿è¡Œæ—¶æ‰èƒ½ä½¿ç”¨ã€‚\n" -"WebXR支æŒå¹¿æ³›çš„设备,从能力很强的设备(如Valve Indexã€HTC Viveã€Oculus Riftå’Œ" -"Quest)到能力较弱的设备(如Google Cardboardã€Oculus Goã€GearVR或普通智能手" -"机)。\n" -"由于WebXR是基于Javascript的,它大é‡ä½¿ç”¨å›žè°ƒï¼Œè¿™æ„味ç€[WebXRInterface]被迫使用" -"ä¿¡å·ï¼Œè€Œå…¶ä»–AR/VR界é¢ä¼šä½¿ç”¨ç«‹å³è¿”回结果的函数。这使得[WebXRInterface]çš„åˆå§‹åŒ–" -"比其他AR/VR接å£è¦å¤æ‚很多。\n" -"䏋颿˜¯å¯åŠ¨ä¸€ä¸ªæ²‰æµ¸å¼VRä¼šè¯æ‰€éœ€çš„æœ€å°ä»£ç 。\n" +"WebXR æ˜¯ä¸€ä¸ªå¼€æ”¾æ ‡å‡†ï¼Œå…许创建在网络æµè§ˆå™¨ä¸è¿è¡Œçš„ VR å’Œ AR 应用程åºã€‚\n" +"å› æ¤ï¼Œè¿™ä¸ªç•Œé¢åªæœ‰åœ¨ HTML5 导出ä¸è¿è¡Œæ—¶æ‰èƒ½ä½¿ç”¨ã€‚\n" +"WebXR 支æŒå¹¿æ³›çš„设备,从能力很强的设备(如 Valve Indexã€HTC Viveã€Oculus " +"Rift å’Œ Quest)到能力较弱的设备(如 Google Cardboardã€Oculus Goã€GearVR 或普" +"通智能手机)。\n" +"由于 WebXR 是基于 Javascript 的,它大é‡ä½¿ç”¨å›žè°ƒï¼Œè¿™æ„å‘³ç€ [WebXRInterface] 被" +"迫使用信å·ï¼Œè€Œå…¶ä»– AR/VR 界é¢ä¼šä½¿ç”¨ç«‹å³è¿”回结果的函数。这使得 " +"[WebXRInterface] çš„åˆå§‹åŒ–比其他 AR/VR 接å£è¦å¤æ‚很多。\n" +"䏋颿˜¯å¯åŠ¨ä¸€ä¸ªæ²‰æµ¸å¼ VR ä¼šè¯æ‰€éœ€çš„æœ€å°ä»£ç 。\n" "[codeblock]\n" "extends Spatial\n" "\n" @@ -88344,27 +88799,28 @@ msgstr "" "func _webxr_session_failed(message):\n" " OS.alert(\"Failed to initialize: \" + message)\n" "[/codeblock]\n" -"æœ‰å‡ ç§æ–¹æ³•æ¥å¤„ç† \"controller\" 控制器的输入。\n" -"- 使用[ARVRController]节点和它们的[signal ARVRController.button_pressed]å’Œ" -"[signal ARVRController.button_release]ä¿¡å·ã€‚这是Godotçš„AR/VR应用ä¸é€šå¸¸å¤„ç†æŽ§" -"制器的方å¼ï¼Œç„¶è€Œï¼Œè¿™åªé€‚用于高级VR控制器,例如Oculus Touch或Index控制器。按钮" -"代ç ç”±[url=https://immersive-web.github.io/webxr-gamepads-module/#xr-" -"standard-gamepad-mapping]WebXR Gamepads模å—[/url]çš„3.3节定义。\n" -"- 使用[method Node._unhandled_input]å’Œ[InputEventJoypadButton]或" -"[InputEventJoypadMotion]ã€‚è¿™å’Œæ™®é€šçš„æ¸¸æˆæ‰‹æŸ„工作原ç†ä¸€æ ·ï¼Œåªæ˜¯[member " -"InputEvent.device]从100开始,所以左边的控制器是100,å³è¾¹çš„æŽ§åˆ¶å™¨æ˜¯101,按钮代" -"ç ç”±[url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-" -"gamepad-mapping]WebXR Gamepads模å—[/url]çš„3.3节定义。\n" -"- 使用[signal select]ã€[signal squeeze]和相关信å·ã€‚è¿™ç§æ–¹æ³•既适用于高级的VR控" -"制器,也适用于éžä¼ 统的 \"controller\" 控制器,如在å±å¹•上的点击ã€å£è¯åŒ–çš„è¯éŸ³" -"å‘½ä»¤æˆ–è®¾å¤‡æœ¬èº«çš„æŒ‰é”®ã€‚ä¼ é€’ç»™è¿™äº›ä¿¡å·çš„[code]controller_id[/code]是与[member " -"ARVRController.controller_id]ä¸ä½¿ç”¨çš„id相åŒã€‚\n" +"æœ‰å‡ ç§æ–¹æ³•æ¥å¤„ç†â€œcontrollerâ€æŽ§åˆ¶å™¨çš„è¾“å…¥ã€‚\n" +"- 使用 [ARVRController] 节点和它们的 [signal ARVRController.button_pressed] " +"å’Œ [signal ARVRController.button_release] ä¿¡å·ã€‚这是 Godot çš„ AR/VR 应用ä¸é€š" +"å¸¸å¤„ç†æŽ§åˆ¶å™¨çš„æ–¹å¼ï¼Œç„¶è€Œï¼Œè¿™åªé€‚用于高级 VR 控制器,例如 Oculus Touch 或 " +"Index 控制器。按钮代ç ç”± [url=https://immersive-web.github.io/webxr-gamepads-" +"module/#xr-standard-gamepad-mapping]WebXR Gamepads 模å—[/url]çš„ 3.3 节定" +"义。\n" +"- 使用 [method Node._unhandled_input]å’Œ[InputEventJoypadButton]或" +"[InputEventJoypadMotion]ã€‚è¿™å’Œæ™®é€šçš„æ¸¸æˆæ‰‹æŸ„工作原ç†ä¸€æ ·ï¼Œåªæ˜¯ [member " +"InputEvent.device] 从 100 开始,所以左边的控制器是 100,å³è¾¹çš„æŽ§åˆ¶å™¨æ˜¯ 101," +"按钮代ç ç”± [url=https://immersive-web.github.io/webxr-gamepads-module/#xr-" +"standard-gamepad-mapping]WebXR Gamepads模å—[/url]çš„ 3.3 节定义。\n" +"- 使用 [signal select]ã€[signal squeeze] 和相关信å·ã€‚è¿™ç§æ–¹æ³•既适用于高级的VR" +"控制器,也适用于éžä¼ 统的“controllerâ€æŽ§åˆ¶å™¨ï¼Œå¦‚åœ¨å±å¹•上的点击ã€å£è¯åŒ–çš„è¯éŸ³å‘½" +"ä»¤æˆ–è®¾å¤‡æœ¬èº«çš„æŒ‰é”®ã€‚ä¼ é€’ç»™è¿™äº›ä¿¡å·çš„ [code]controller_id[/code] 是与 [member " +"ARVRController.controller_id] ä¸ä½¿ç”¨çš„ id 相åŒã€‚\n" "ä½ å¯ä»¥ä½¿ç”¨è¿™äº›æ–¹æ³•ä¸çš„ä¸€ä¸ªæˆ–å…¨éƒ¨ï¼Œè®©ä½ çš„æ¸¸æˆæˆ–åº”ç”¨ç¨‹åºæ”¯æŒæ›´å¹¿æ³›æˆ–更窄的设备" "和输入方法,或者å…许与更高级的设备进行更高级的交互。" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "How to make a VR game for WebXR with Godot" -msgstr "" +msgstr "如何使用 Godot 制作 WebXR çš„ VR 游æˆ" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "" @@ -88404,6 +88860,10 @@ msgid "" "[url=https://developer.mozilla.org/en-US/docs/Web/API/XRInputSource/" "targetRayMode]XRInputSource.targetRayMode[/url] for more information." msgstr "" +"返回给定的 [code]controller_id[/code] æŽ§åˆ¶å™¨çš„ç›®æ ‡å°„çº¿æ¨¡å¼ã€‚\n" +"å¯ç”¨äºŽå¸®åŠ©è§£æžæ¥è‡ªè¯¥æŽ§åˆ¶å™¨çš„输入。详情请å‚阅 [url=https://developer.mozilla." +"org/en-US/docs/Web/API/XRInputSource/targetRayMode]XRInputSource." +"targetRayMode[/url]。" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "" @@ -88669,21 +89129,21 @@ msgstr "当[member visibility_state]已更改时触å‘。" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "We don't know the the target ray mode." -msgstr "" +msgstr "ä¸çŸ¥é“ç›®æ ‡å°„çº¿çš„æ¨¡å¼ã€‚" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "" "Target ray originates at the viewer's eyes and points in the direction they " "are looking." -msgstr "" +msgstr "ç›®æ ‡å°„çº¿ä»Žè§‚å¯Ÿè€…çš„çœ¼ç›å‡ºå‘ï¼ŒæŒ‡å‘æ‰€è§‚察的方å‘。" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "Target ray from a handheld pointer, most likely a VR touch controller." -msgstr "" +msgstr "ç›®æ ‡å°„çº¿ç”±æ‰‹æŒæŒ‡ç¤ºå™¨å‘射,很å¯èƒ½æ˜¯ VR 触摸控制器。" #: modules/webxr/doc_classes/WebXRInterface.xml msgid "Target ray from touch screen, mouse or other tactile input device." -msgstr "" +msgstr "ç›®æ ‡å°„çº¿ç”±è§¦æ‘¸å±ã€é¼ æ ‡ç‰è§¦è§‰è¾“入设备å‘射。" #: doc/classes/WindowDialog.xml msgid "Base class for window dialogs." diff --git a/doc/translations/zh_TW.po b/doc/translations/zh_TW.po index 6fb4ff9eb2..9a4f44af62 100644 --- a/doc/translations/zh_TW.po +++ b/doc/translations/zh_TW.po @@ -3435,6 +3435,15 @@ msgstr "" #: doc/classes/@GlobalScope.xml msgid "" +"Hints that a string property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM] a property with this hint still accepts " +"arbitrary values and can be empty. The list of values serves to suggest " +"possible values." +msgstr "" + +#: doc/classes/@GlobalScope.xml +msgid "" "Hints that a float property should be edited via an exponential easing " "function. The hint string can include [code]\"attenuation\"[/code] to flip " "the curve horizontally and/or [code]\"inout\"[/code] to also include in/out " @@ -4946,8 +4955,9 @@ msgid "" msgstr "" #: doc/classes/AnimationNode.xml -msgid "Returns [code]true[/code] whether a given path is filtered." -msgstr "" +#, fuzzy +msgid "Returns whether the given path is filtered." +msgstr "å›žå‚³åƒæ•¸çš„æ£åˆ‡å€¼ã€‚" #: doc/classes/AnimationNode.xml msgid "" @@ -4971,7 +4981,7 @@ msgstr "" #: doc/classes/AnimationNode.xml msgid "" -"Sets a custom parameter. These are used as local storage, because resources " +"Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -4980,7 +4990,7 @@ msgid "If [code]true[/code], filtering is enabled." msgstr "" #: doc/classes/AnimationNode.xml -msgid "Called when the node was removed from the graph." +msgid "Emitted when the node was removed from the graph." msgstr "" #: doc/classes/AnimationNode.xml @@ -9595,26 +9605,10 @@ msgid "" msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Name of the current device for audio input (see [method " -"capture_get_device_list]). The value [code]\"Default\"[/code] means that the " -"system-wide default audio input is currently used." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Returns the names of all audio input devices detected on the system." msgstr "" #: doc/classes/AudioServer.xml -msgid "" -"Sets which audio input device is used for audio capture. On systems with " -"multiple audio inputs (such as analog and USB), this can be used to select " -"the audio input device. Setting the value [code]\"Default\"[/code] will " -"record audio from the system-wide default audio input. If an invalid device " -"name is set, the value will be reverted back to [code]\"Default\"[/code]." -msgstr "" - -#: doc/classes/AudioServer.xml msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "" @@ -9772,6 +9766,16 @@ msgstr "" #: doc/classes/AudioServer.xml msgid "" +"Name of the current device for audio input (see [method get_device_list]). " +"On systems with multiple audio inputs (such as analog, USB and HDMI audio), " +"this can be used to select the audio input device. The value " +"[code]\"Default\"[/code] will record audio on the system-wide default audio " +"input. If an invalid device name is set, the value will be reverted back to " +"[code]\"Default\"[/code]." +msgstr "" + +#: doc/classes/AudioServer.xml +msgid "" "Name of the current device for audio output (see [method get_device_list]). " "On systems with multiple audio outputs (such as analog, USB and HDMI audio), " "this can be used to select the audio output device. The value " @@ -12855,6 +12859,18 @@ msgstr "" #: doc/classes/CanvasLayer.xml msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" + +#: doc/classes/CanvasLayer.xml +msgid "" "The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" "code], uses the default viewport instead." msgstr "" @@ -15692,8 +15708,9 @@ msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [code]name[/code] and " "[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class " -"name of the current control is used as the type. If the type is a class name " -"its parent classes are also checked, in order of inheritance.\n" +"name of the current control is used as the type, or [member " +"theme_type_variation] if it is defined. If the type is a class name its " +"parent classes are also checked, in order of inheritance.\n" "For the current control its local overrides are considered first (see " "[method add_color_override]), then its assigned [member theme]. After the " "current control, each parent control and its assigned [member theme] are " @@ -16450,6 +16467,25 @@ msgid "" msgstr "" #: doc/classes/Control.xml +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. " +"[code]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_*[/code] " +"methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-" +"level Theme and the default Theme are checked last." +msgstr "" + +#: doc/classes/Control.xml msgid "Emitted when the node gains keyboard focus." msgstr "" @@ -23129,7 +23165,22 @@ msgid "" msgstr "" #: doc/classes/Environment.xml -msgid "If [code]true[/code], the glow effect is enabled." +msgid "" +"If [code]true[/code], the glow effect is enabled.\n" +"[b]Note:[/b] Only effective if [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] is [b]3D[/b] ([i]not[/i] [b]3D " +"Without Effects[/b]). On mobile, [member ProjectSettings.rendering/quality/" +"intended_usage/framebuffer_allocation] defaults to [b]3D Without Effects[/b] " +"by default, so its [code].mobile[/code] override needs to be changed to " +"[b]3D[/b].\n" +"[b]Note:[/b] When using GLES3 on mobile, HDR rendering is disabled by " +"default for performance reasons. This means glow will only be visible if " +"[member glow_hdr_threshold] is decreased below [code]1.0[/code] or if " +"[member glow_bloom] is increased above [code]0.0[/code]. Also consider " +"increasing [member glow_intensity] to [code]1.5[/code]. If you want glow to " +"behave on mobile like it does on desktop (at a performance cost), enable " +"[member ProjectSettings.rendering/quality/depth/hdr]'s [code].mobile[/code] " +"override." msgstr "" #: doc/classes/Environment.xml @@ -25233,8 +25284,9 @@ msgid "" "Returns a [PoolIntArray] where each triangle consists of three consecutive " "point indices into [code]polygon[/code] (i.e. the returned array will have " "[code]n * 3[/code] elements, with [code]n[/code] being the number of found " -"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is " -"returned." +"triangles). Output triangles will always be counter clockwise, and the " +"contour will be flipped if it's clockwise. If the triangulation did not " +"succeed, an empty [PoolIntArray] is returned." msgstr "" #: doc/classes/Geometry.xml @@ -25504,7 +25556,12 @@ msgid "" "[b]Note:[/b] [method bake] works from the editor and in exported projects. " "This makes it suitable for procedurally generated or user-built levels. " "Baking a [GIProbe] generally takes from 5 to 20 seconds in most scenes. " -"Reducing [member subdiv] can speed up baking." +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance]s and [Light]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [GIProbe], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." msgstr "" #: doc/classes/GIProbe.xml @@ -32053,7 +32110,12 @@ msgid "The color of shadows cast by this light." msgstr "" #: doc/classes/Light.xml -msgid "Attempts to reduce [member shadow_bias] gap." +msgid "" +"Attempts to reduce [member shadow_bias] gap by rendering screen-space " +"contact shadows. This has a performance impact, especially at higher " +"values.\n" +"[b]Note:[/b] Contact shadows can look broken, so leaving this property to " +"[code]0.0[/code] is recommended." msgstr "" #: doc/classes/Light.xml @@ -32433,8 +32495,12 @@ msgstr "" #: doc/classes/Line2D.xml msgid "" -"The smoothness of the rounded joints and caps. This is only used if a cap or " -"joint is set as round." +"The smoothness of the rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update. This is only " +"used if a cap or joint is set as round.\n" +"[b]Note:[/b] The default value is tuned for lines with the default [member " +"width]. For thin lines, this value should be reduced to a number between " +"[code]2[/code] and [code]4[/code] to improve performance." msgstr "" #: doc/classes/Line2D.xml @@ -34275,6 +34341,15 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"When using [i]physics interpolation[/i], this function allows you to prevent " +"interpolation on an instance in the current physics tick.\n" +"This allows you to move instances instantaneously, and should usually be " +"used when initially placing an instance such as a bullet to prevent " +"graphical glitches." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets all data related to the instances in one go. This is especially useful " "when loading the data from disk or preparing the data from GDNative.\n" "All data is packed in one large float array. An array may look like this: " @@ -34288,6 +34363,18 @@ msgstr "" #: doc/classes/MultiMesh.xml msgid "" +"An alternative version of [method MultiMesh.set_as_bulk_array] which can be " +"used with [i]physics interpolation[/i]. This method takes two arrays, and " +"can set the data for the current and previous tick in one go. The renderer " +"will automatically interpolate the data at each frame.\n" +"This is useful for situations where the order of instances may change from " +"physics tick to tick, such as particle systems.\n" +"When the order of instances is coherent, the simpler [method MultiMesh." +"set_as_bulk_array] can still be used with interpolation." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" "Sets the color of a specific instance by [i]multiplying[/i] the mesh's " "existing vertex colors.\n" "For the color to take effect, ensure that [member color_format] is non-" @@ -34330,6 +34417,16 @@ msgid "Mesh to be drawn." msgstr "" #: doc/classes/MultiMesh.xml +msgid "" +"Choose whether to use an interpolation method that favors speed or quality.\n" +"When using low physics tick rates (typically below 20) or high rates of " +"object rotation, you may get better results from the high quality setting.\n" +"[b]Note:[/b] Fast quality does not equate to low quality. Except in the " +"special cases mentioned above, the quality should be comparable to high " +"quality." +msgstr "" + +#: doc/classes/MultiMesh.xml msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "" @@ -34381,6 +34478,18 @@ msgid "" "Use this for highest precision." msgstr "" +#: doc/classes/MultiMesh.xml +msgid "" +"Always interpolate using Basis lerping, which can produce warping artifacts " +"in some situations." +msgstr "" + +#: doc/classes/MultiMesh.xml +msgid "" +"Attempt to interpolate using Basis slerping (spherical linear interpolation) " +"where possible, otherwise fall back to lerping." +msgstr "" + #: doc/classes/MultiMeshInstance.xml msgid "Node that instances a [MultiMesh]." msgstr "" @@ -36704,6 +36813,25 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Returns [code]true[/code] if the physics interpolated flag is set for this " +"Node (see [method set_physics_interpolated]).\n" +"[b]Note:[/b] Interpolation will only be active is both the flag is set " +"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can " +"be tested using [method is_physics_interpolated_and_enabled]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" +"Returns [code]true[/code] if physics interpolation is enabled (see [method " +"set_physics_interpolated]) [b]and[/b] enabled in the [SceneTree].\n" +"This is a convenience version of [method is_physics_interpolated] that also " +"checks whether physics interpolation is enabled globally.\n" +"See [member SceneTree.physics_interpolation] and [member ProjectSettings." +"physics/common/physics_interpolation]." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -36874,6 +37002,21 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"When physics interpolation is active, moving a node to a radically different " +"transform (such as placement within a level) can result in a visible glitch " +"as the object is rendered moving from the old to new position over the " +"physics tick.\n" +"This glitch can be prevented by calling [code]reset_physics_interpolation[/" +"code], which temporarily turns off interpolation until the physics tick is " +"complete.\n" +"[constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the " +"node and all children recursively.\n" +"[b]Note:[/b] This function should be called [b]after[/b] moving the node, " +"rather than before." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Sends a remote procedure call request for the given [code]method[/code] to " "peers on the network (and locally), optionally sending all additional " "arguments as arguments to the method called by the RPC. The call request " @@ -36974,6 +37117,14 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Enables or disables physics interpolation per node, offering a finer grain " +"of control than turning physics interpolation on and off globally.\n" +"[b]Note:[/b] This can be especially useful for [Camera]s, where custom " +"interpolation can sometimes give superior results." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node " "is being processed, it will receive a [constant " "NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine." @@ -37224,6 +37375,12 @@ msgstr "" #: doc/classes/Node.xml msgid "" +"Notification received when [method reset_physics_interpolation] is called on " +"the node or parent nodes." +msgstr "" + +#: doc/classes/Node.xml +msgid "" "Inherits pause mode from the node's parent. For the root node, it is " "equivalent to [constant PAUSE_MODE_STOP]. Default." msgstr "" @@ -38211,8 +38368,8 @@ msgstr "" #: doc/classes/OccluderShapePolygon.xml msgid "" -"Specifies whether the occluder should operate one way only, or from both " -"sides." +"Specifies whether the occluder should operate from both sides. If " +"[code]false[/code], the occluder will operate one way only." msgstr "" #: doc/classes/OccluderShapeSphere.xml @@ -39005,7 +39162,19 @@ msgid "" msgstr "" #: doc/classes/OS.xml -msgid "Returns the number of threads available on the host machine." +msgid "" +"Returns the number of [i]logical[/i] CPU cores available on the host " +"machine. On CPUs with HyperThreading enabled, this number will be greater " +"than the number of [i]physical[/i] CPU cores." +msgstr "" + +#: doc/classes/OS.xml +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, HTML5 and UWP, [method get_processor_name] returns an empty " +"string." msgstr "" #: doc/classes/OS.xml @@ -46870,6 +47039,17 @@ msgstr "" #: doc/classes/ProjectSettings.xml msgid "" +"If [code]true[/code], the renderer will interpolate the transforms of " +"physics objects between the last two transforms, such that smooth motion is " +"seen when physics ticks do not coincide with rendered frames.\n" +"[b]Note:[/b] When moving objects to new positions (rather than the usual " +"physics motion) you may want to temporarily turn off interpolation to " +"prevent a visible glitch. You can do this using the [method Node." +"reset_physics_interpolation] function." +msgstr "" + +#: doc/classes/ProjectSettings.xml +msgid "" "Controls how much physics ticks are synchronized with real time. For 0 or " "less, the ticks are synchronized. Such values are recommended for network " "games, where clock synchronization matters. Higher values cause higher " @@ -46880,8 +47060,10 @@ msgid "" "[b]Note:[/b] For best results, when using a custom physics interpolation " "solution, the physics jitter fix should be disabled by setting [member " "physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member " +"physics/common/physics_interpolation] is enabled.\n" "[b]Note:[/b] This property is only read when the project starts. To change " -"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +"the value at runtime, set [member Engine.physics_jitter_fix] instead." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47394,14 +47576,19 @@ msgstr "" msgid "" "If [code]true[/code], allocates the root [Viewport]'s framebuffer with high " "dynamic range. High dynamic range allows the use of [Color] values greater " -"than 1.\n" +"than 1. This must be set to [code]true[/code] for glow rendering to work if " +"[member Environment.glow_hdr_threshold] is greater than or equal to " +"[code]1.0[/code].\n" "[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml msgid "" "Lower-end override for [member rendering/quality/depth/hdr] on mobile " -"devices, due to performance concerns or driver support." +"devices, due to performance concerns or driver support. This must be set to " +"[code]true[/code] for glow rendering to work if [member Environment." +"glow_hdr_threshold] is greater than or equal to [code]1.0[/code].\n" +"[b]Note:[/b] Only available on the GLES3 backend." msgstr "" #: doc/classes/ProjectSettings.xml @@ -47530,8 +47717,8 @@ msgid "" "resources it uses (but the less features it supports). If set to \"2D " "Without Sampling\" or \"3D Without Effects\", sample buffers will not be " "allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/" -"code] will not be available in shaders and post-processing effects will not " -"be available in the [Environment]." +"code] will not be available in shaders and post-processing effects such as " +"glow will not be available in [Environment]." msgstr "" #: doc/classes/ProjectSettings.xml @@ -51469,6 +51656,13 @@ msgstr "" #: doc/classes/SceneTree.xml msgid "" +"Although physics interpolation would normally be globally turned on and off " +"using [member ProjectSettings.physics/common/physics_interpolation], this " +"property allows control over interpolation at runtime." +msgstr "" + +#: doc/classes/SceneTree.xml +msgid "" "If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new " "incoming connections." msgstr "" @@ -52723,6 +52917,18 @@ msgstr "" #: doc/classes/Spatial.xml msgid "" +"When using physics interpolation, there will be circumstances in which you " +"want to know the interpolated (displayed) transform of a node rather than " +"the standard transform (which may only be accurate to the most recent " +"physics tick).\n" +"This is particularly important for frame-based operations that take place in " +"[method Node._process], rather than [method Node._physics_process]. Examples " +"include [Camera]s focusing on a node, or finding where to fire lasers from " +"on a frame rather than physics tick." +msgstr "" + +#: doc/classes/Spatial.xml +msgid "" "Returns the parent [Spatial], or an empty [Object] if no parent exists or " "parent is not of type [Spatial]." msgstr "" @@ -54559,7 +54765,7 @@ msgid "" "colors into account for albedo. Otherwise, the color defined in [member " "modulate] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -54573,7 +54779,7 @@ msgid "" "colors into account for albedo. Otherwise, the opacity defined in [member " "opacity] will be ignored. For a [SpatialMaterial], [member SpatialMaterial." "vertex_color_use_as_albedo] must be [code]true[/code]. For a " -"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/color] must be inserted in the " +"[ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the " "shader's [code]fragment()[/code] function." msgstr "" @@ -55248,7 +55454,12 @@ msgid "Returns [code]true[/code] if the string begins with the given string." msgstr "" #: doc/classes/String.xml -msgid "Returns the bigrams (pairs of consecutive letters) of this string." +msgid "" +"Returns an array containing the bigrams (pairs of consecutive letters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Bigrams\".bigrams()) # Prints \"[Bi, ig, gr, ra, am, ms]\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55511,7 +55722,16 @@ msgid "" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid float." +msgid "" +"Returns [code]true[/code] if this string contains a valid float. This is " +"inclusive of integers, and also supports exponents:\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"7e3\".is_valid_float()) # Prints \"true\"\n" +"print(\"24\".is_valid_float()) # Prints \"true\"\n" +"print(\"Hello\".is_valid_float()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55534,11 +55754,24 @@ msgstr "" msgid "" "Returns [code]true[/code] if this string is a valid identifier. A valid " "identifier may contain only letters, digits and underscores ([code]_[/code]) " -"and the first character may not be a digit." +"and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"good_ident_1\".is_valid_identifier()) # Prints \"true\"\n" +"print(\"1st_bad_ident\".is_valid_identifier()) # Prints \"false\"\n" +"print(\"bad_ident_#2\".is_valid_identifier()) # Prints \"false\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml -msgid "Returns [code]true[/code] if this string contains a valid integer." +msgid "" +"Returns [code]true[/code] if this string contains a valid integer.\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints \"true\"\n" +"print(\"14.6\".is_valid_int()) # Prints \"false\"\n" +"print(\"L\".is_valid_int()) # Prints \"false\"\n" +"print(\"+3\".is_valid_int()) # Prints \"true\"\n" +"print(\"-12\".is_valid_int()) # Prints \"true\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -55587,14 +55820,16 @@ msgstr "" msgid "" "Does a simple case-sensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml msgid "" "Does a simple case-insensitive expression match, where [code]\"*\"[/code] " "matches zero or more arbitrary characters and [code]\"?\"[/code] matches any " -"single character except a period ([code]\".\"[/code])." +"single character except a period ([code]\".\"[/code]). An empty string or " +"empty expression always evaluates to [code]false[/code]." msgstr "" #: doc/classes/String.xml @@ -55764,8 +55999,16 @@ msgstr "" #: doc/classes/String.xml msgid "" -"Returns the similarity index of the text compared to this string. 1 means " -"totally similar and 0 means totally dissimilar." +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this " +"string compared to another. 1.0 means totally similar and 0.0 means totally " +"dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints \"1\"\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints \"0\"\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints \"0.8\"\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints \"0.4\"\n" +"[/codeblock]" msgstr "" #: doc/classes/String.xml @@ -57260,6 +57503,16 @@ msgid "Returns the total width of all gutters and internal padding." msgstr "å›žå‚³åƒæ•¸çš„æ£åˆ‡å€¼ã€‚" #: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the total amount of lines that could be drawn." +msgstr "å›žå‚³åƒæ•¸çš„相å值。" + +#: doc/classes/TextEdit.xml +#, fuzzy +msgid "Returns the number of visible lines, including wrapped text." +msgstr "å›žå‚³åƒæ•¸çš„æ£å¼¦å€¼ã€‚" + +#: doc/classes/TextEdit.xml msgid "" "Returns a [String] text with the word under the caret (text cursor) location." msgstr "" @@ -58298,6 +58551,12 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +msgid "" +"Unmarks [code]theme_type[/code] as being a variation of another theme type. " +"See [method set_type_variation]." +msgstr "" + +#: doc/classes/Theme.xml msgid "Sets the theme's values to a copy of the default theme values." msgstr "" @@ -58439,6 +58698,18 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Returns the name of the base theme type if [code]theme_type[/code] is a " +"valid variation type. Returns an empty string otherwise." +msgstr "" + +#: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns a list of all type variations for the given [code]base_type[/code]." +msgstr "計算兩個å‘é‡çš„外ç©ã€‚" + +#: doc/classes/Theme.xml +msgid "" "Returns [code]true[/code] if [Color] with [code]name[/code] is in " "[code]node_type[/code].\n" "Returns [code]false[/code] if the theme does not have [code]node_type[/code]." @@ -58486,6 +58757,13 @@ msgid "" msgstr "" #: doc/classes/Theme.xml +#, fuzzy +msgid "" +"Returns [code]true[/code] if [code]theme_type[/code] is marked as a " +"variation of [code]base_type[/code]." +msgstr "計算兩個å‘é‡çš„外ç©ã€‚" + +#: doc/classes/Theme.xml msgid "" "Adds missing and overrides existing definitions with values from the " "[code]other[/code] [Theme].\n" @@ -58582,6 +58860,20 @@ msgstr "" #: doc/classes/Theme.xml msgid "" +"Marks [code]theme_type[/code] as a variation of [code]base_type[/code].\n" +"This adds [code]theme_type[/code] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [code]base_type[/code] " +"class.\n" +"Variations can also be nested, i.e. [code]base_type[/code] can be another " +"variation. If a chain of variations ends with a [code]base_type[/code] " +"matching the class of the [Control], the whole chain is going to be " +"suggested as options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" + +#: doc/classes/Theme.xml +msgid "" "The default font of this [Theme] resource. Used as a fallback value for font " "items defined in this theme, but having invalid values. If this value is " "also invalid, the global default value is used.\n" @@ -60758,7 +61050,7 @@ msgid "" "Adds a button with [Texture] [code]button[/code] at column [code]column[/" "code]. The [code]id[/code] is used to identify the button. If not specified, " "the next available index is used, which may be retrieved by calling [method " -"get_button_count] immediately after this method. Optionally, the button can " +"get_button_count] immediately before this method. Optionally, the button can " "be [code]disabled[/code] and have a [code]tooltip[/code]." msgstr "" @@ -60800,10 +61092,9 @@ msgid "" msgstr "計算兩個å‘é‡çš„外ç©ã€‚" #: doc/classes/TreeItem.xml -msgid "" -"Returns the number of buttons in column [code]column[/code]. May be used to " -"get the most recently added button's index, if no index was specified." -msgstr "" +#, fuzzy +msgid "Returns the number of buttons in column [code]column[/code]." +msgstr "計算兩個å‘é‡çš„外ç©ã€‚" #: doc/classes/TreeItem.xml #, fuzzy diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 088525647c..3b5e1bf91d 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -439,12 +439,12 @@ Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle } if (!FileAccess::exists(path)) { - //this code exists so gdnative can load .so files from within the executable path + // This code exists so GDExtension can load .so files from within the executable path. path = get_executable_path().get_base_dir().plus_file(p_path.get_file()); } if (!FileAccess::exists(path)) { - //this code exists so gdnative can load .so files from a standard unix location + // This code exists so GDExtension can load .so files from a standard unix location. path = get_executable_path().get_base_dir().plus_file("../lib").plus_file(p_path.get_file()); } diff --git a/editor/SCsub b/editor/SCsub index 87153f3b2b..35c215b663 100644 --- a/editor/SCsub +++ b/editor/SCsub @@ -76,7 +76,7 @@ if env["tools"]: # Editor translations to_include = ( - "ar,bg,bn,ca,cs,de,el,eo,es_AR,es,fi,fr,gl,he,hu,id,it,ja,ko,lv,ms,nb,nl,pl,pt_BR,pt,ro,ru,sk,sv,th,tr,uk,vi,zh_CN,zh_TW" + "ar,bg,bn,ca,cs,de,el,eo,es_AR,es,fi,fr,gl,he,hu,id,it,ja,ko,lv,ms,nb,nl,pl,pt_BR,pt,ro,ru,sk,sv,th,tl,tr,uk,vi,zh_CN,zh_TW" ).split(",") tlist = [env.Dir("#editor/translations").abspath + "/" + f + ".po" for f in to_include] env.Depends("#editor/editor_translations.gen.h", tlist) diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 6586fcd5ce..e5a596f5f2 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -606,8 +606,7 @@ public: } break; case Animation::TYPE_METHOD: { p_list->push_back(PropertyInfo(Variant::STRING_NAME, "name")); - static_assert(VARIANT_ARG_MAX == 8, "PROPERTY_HINT_RANGE needs to be updated if VARIANT_ARG_MAX != 8"); - p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,8,1")); + p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,32,1,or_greater")); Dictionary d = animation->track_get_key_value(track, key); ERR_FAIL_COND(!d.has("args")); @@ -1287,8 +1286,8 @@ public: } break; case Animation::TYPE_METHOD: { p_list->push_back(PropertyInfo(Variant::STRING_NAME, "name")); - static_assert(VARIANT_ARG_MAX == 8, "PROPERTY_HINT_RANGE needs to be updated if VARIANT_ARG_MAX != 8"); - p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,8,1")); + + p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,32,1,or_greater")); Dictionary d = animation->track_get_key_value(first_track, first_key); ERR_FAIL_COND(!d.has("args")); @@ -3189,7 +3188,7 @@ AnimationTrackEdit *AnimationTrackEditPlugin::create_value_track_edit(Object *p_ }; Callable::CallError ce; - return Object::cast_to<AnimationTrackEdit>(get_script_instance()->call("create_value_track_edit", (const Variant **)&argptrs, 6, ce).operator Object *()); + return Object::cast_to<AnimationTrackEdit>(get_script_instance()->callp("create_value_track_edit", (const Variant **)&argptrs, 6, ce).operator Object *()); } return nullptr; } @@ -5554,31 +5553,35 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) { } } + String track_type; switch (animation->track_get_type(i)) { case Animation::TYPE_POSITION_3D: - text += " (Position)"; + track_type = TTR("Position"); break; case Animation::TYPE_ROTATION_3D: - text += " (Rotation)"; + track_type = TTR("Rotation"); break; case Animation::TYPE_SCALE_3D: - text += " (Scale)"; + track_type = TTR("Scale"); break; case Animation::TYPE_BLEND_SHAPE: - text += " (BlendShape)"; + track_type = TTR("BlendShape"); break; case Animation::TYPE_METHOD: - text += " (Methods)"; + track_type = TTR("Methods"); break; case Animation::TYPE_BEZIER: - text += " (Bezier)"; + track_type = TTR("Bezier"); break; case Animation::TYPE_AUDIO: - text += " (Audio)"; + track_type = TTR("Audio"); break; default: { }; } + if (!track_type.is_empty()) { + text += vformat(" (%s)", track_type); + } TreeItem *it = track_copy_select->create_item(troot); it->set_editable(0, true); diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index df2a66f182..0f8667f81a 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -180,9 +180,6 @@ void ConnectDialog::_unbind_count_changed(double p_count) { * Adds a new parameter bind to connection. */ void ConnectDialog::_add_bind() { - if (cdbinds->params.size() >= VARIANT_ARG_MAX) { - return; - } Variant::Type vt = (Variant::Type)type_list->get_item_id(type_list->get_selected()); Variant value; diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp index d5a4f5d138..1a7b11d888 100644 --- a/editor/debugger/editor_debugger_node.cpp +++ b/editor/debugger/editor_debugger_node.cpp @@ -610,12 +610,12 @@ void EditorDebuggerNode::_save_node_requested(ObjectID p_id, const String &p_fil } // Remote inspector/edit. -void EditorDebuggerNode::_method_changeds(void *p_ud, Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE) { +void EditorDebuggerNode::_method_changeds(void *p_ud, Object *p_base, const StringName &p_name, const Variant **p_args, int p_argcount) { if (!singleton) { return; } _for_all(singleton->tabs, [&](ScriptEditorDebugger *dbg) { - dbg->_method_changed(p_base, p_name, VARIANT_ARG_PASS); + dbg->_method_changed(p_base, p_name, p_args, p_argcount); }); } diff --git a/editor/debugger/editor_debugger_node.h b/editor/debugger/editor_debugger_node.h index 6fcdbf5f73..36f99113ad 100644 --- a/editor/debugger/editor_debugger_node.h +++ b/editor/debugger/editor_debugger_node.h @@ -171,7 +171,7 @@ public: // Remote inspector/edit. void request_remote_tree(); - static void _method_changeds(void *p_ud, Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE); + static void _method_changeds(void *p_ud, Object *p_base, const StringName &p_name, const Variant **p_args, int p_argcount); static void _property_changeds(void *p_ud, Object *p_base, const StringName &p_property, const Variant &p_value); // LiveDebug diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index 0b9631c816..453e9e3a0c 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -1064,18 +1064,16 @@ int ScriptEditorDebugger::_get_res_path_cache(const String &p_path) { return last_path_id; } -void ScriptEditorDebugger::_method_changed(Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE) { +void ScriptEditorDebugger::_method_changed(Object *p_base, const StringName &p_name, const Variant **p_args, int p_argcount) { if (!p_base || !live_debug || !is_session_active() || !EditorNode::get_singleton()->get_edited_scene()) { return; } Node *node = Object::cast_to<Node>(p_base); - VARIANT_ARGPTRS - - for (int i = 0; i < VARIANT_ARG_MAX; i++) { + for (int i = 0; i < p_argcount; i++) { //no pointers, sorry - if (argptr[i] && (argptr[i]->get_type() == Variant::OBJECT || argptr[i]->get_type() == Variant::RID)) { + if (p_args[i]->get_type() == Variant::OBJECT || p_args[i]->get_type() == Variant::RID) { return; } } @@ -1087,9 +1085,9 @@ void ScriptEditorDebugger::_method_changed(Object *p_base, const StringName &p_n Array msg; msg.push_back(pathid); msg.push_back(p_name); - for (int i = 0; i < VARIANT_ARG_MAX; i++) { + for (int i = 0; i < p_argcount; i++) { //no pointers, sorry - msg.push_back(*argptr[i]); + msg.push_back(*p_args[i]); } _put_msg("scene:live_node_call", msg); @@ -1105,9 +1103,9 @@ void ScriptEditorDebugger::_method_changed(Object *p_base, const StringName &p_n Array msg; msg.push_back(pathid); msg.push_back(p_name); - for (int i = 0; i < VARIANT_ARG_MAX; i++) { + for (int i = 0; i < p_argcount; i++) { //no pointers, sorry - msg.push_back(*argptr[i]); + msg.push_back(*p_args[i]); } _put_msg("scene:live_res_call", msg); diff --git a/editor/debugger/script_editor_debugger.h b/editor/debugger/script_editor_debugger.h index e4d3a2fa09..486ac26ef7 100644 --- a/editor/debugger/script_editor_debugger.h +++ b/editor/debugger/script_editor_debugger.h @@ -187,7 +187,7 @@ private: void _live_edit_set(); void _live_edit_clear(); - void _method_changed(Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE); + void _method_changed(Object *p_base, const StringName &p_name, const Variant **p_args, int p_argcount); void _property_changed(Object *p_base, const StringName &p_property, const Variant &p_value); void _error_activated(); diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp index 281d614ea9..829948d3cb 100644 --- a/editor/editor_autoload_settings.cpp +++ b/editor/editor_autoload_settings.cpp @@ -52,7 +52,7 @@ void EditorAutoloadSettings::_notification(int p_what) { file_dialog->add_filter("*." + E); } - for (const AutoLoadInfo &info : autoload_cache) { + for (const AutoloadInfo &info : autoload_cache) { if (info.node && info.in_editor) { get_tree()->get_root()->call_deferred(SNAME("add_child"), info.node); } @@ -122,7 +122,7 @@ bool EditorAutoloadSettings::_autoload_name_is_valid(const String &p_name, Strin for (const String &E : keywords) { if (E == p_name) { if (r_error) { - *r_error = TTR("Invalid name.") + " " + TTR("Keyword cannot be used as an AutoLoad name."); + *r_error = TTR("Invalid name.") + " " + TTR("Keyword cannot be used as an Autoload name."); } return false; @@ -227,7 +227,7 @@ void EditorAutoloadSettings::_autoload_edited() { path = "*" + path; } - undo_redo->create_action(TTR("Toggle AutoLoad Globals")); + undo_redo->create_action(TTR("Toggle Autoload Globals")); undo_redo->add_do_property(ProjectSettings::get_singleton(), base, path); undo_redo->add_undo_property(ProjectSettings::get_singleton(), base, ProjectSettings::get_singleton()->get(base)); @@ -378,13 +378,13 @@ Node *EditorAutoloadSettings::_create_autoload(const String &p_path) { Object *obj = ClassDB::instantiate(ibt); - ERR_FAIL_COND_V_MSG(!obj, nullptr, "Cannot instance script for AutoLoad, expected 'Node' inheritance, got: " + String(ibt) + "."); + ERR_FAIL_COND_V_MSG(!obj, nullptr, "Cannot instance script for Autoload, expected 'Node' inheritance, got: " + String(ibt) + "."); n = Object::cast_to<Node>(obj); n->set_script(script); } - ERR_FAIL_COND_V_MSG(!n, nullptr, "Path in AutoLoad not a node or script: " + p_path + "."); + ERR_FAIL_COND_V_MSG(!n, nullptr, "Path in Autoload not a node or script: " + p_path + "."); return n; } @@ -396,10 +396,10 @@ void EditorAutoloadSettings::update_autoload() { updating_autoload = true; - Map<String, AutoLoadInfo> to_remove; - List<AutoLoadInfo *> to_add; + Map<String, AutoloadInfo> to_remove; + List<AutoloadInfo *> to_add; - for (const AutoLoadInfo &info : autoload_cache) { + for (const AutoloadInfo &info : autoload_cache) { to_remove.insert(info.name, info); } @@ -423,7 +423,7 @@ void EditorAutoloadSettings::update_autoload() { continue; } - AutoLoadInfo info; + AutoloadInfo info; info.is_singleton = path.begins_with("*"); if (info.is_singleton) { @@ -436,7 +436,7 @@ void EditorAutoloadSettings::update_autoload() { bool need_to_add = true; if (to_remove.has(name)) { - AutoLoadInfo &old_info = to_remove[name]; + AutoloadInfo &old_info = to_remove[name]; if (old_info.path == info.path) { // Still the same resource, check status info.node = old_info.node; @@ -478,8 +478,8 @@ void EditorAutoloadSettings::update_autoload() { } // Remove deleted/changed autoloads - for (KeyValue<String, AutoLoadInfo> &E : to_remove) { - AutoLoadInfo &info = E.value; + for (KeyValue<String, AutoloadInfo> &E : to_remove) { + AutoloadInfo &info = E.value; if (info.is_singleton) { for (int i = 0; i < ScriptServer::get_language_count(); i++) { ScriptServer::get_language(i)->remove_named_global_constant(info.name); @@ -500,7 +500,7 @@ void EditorAutoloadSettings::update_autoload() { // Load new/changed autoloads List<Node *> nodes_to_add; - for (AutoLoadInfo *info : to_add) { + for (AutoloadInfo *info : to_add) { info->node = _create_autoload(info->path); ERR_CONTINUE(!info->node); @@ -632,8 +632,8 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant & int order = ProjectSettings::get_singleton()->get_order("autoload/" + name); - AutoLoadInfo aux; - List<AutoLoadInfo>::Element *E = nullptr; + AutoloadInfo aux; + List<AutoloadInfo>::Element *E = nullptr; if (!move_to_back) { aux.order = order; @@ -649,7 +649,7 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant & for (int i = 0; i < autoloads.size(); i++) { aux.order = ProjectSettings::get_singleton()->get_order("autoload/" + autoloads[i]); - List<AutoLoadInfo>::Element *I = autoload_cache.find(aux); + List<AutoloadInfo>::Element *I = autoload_cache.find(aux); if (move_to_back) { autoload_cache.move_to_back(I); @@ -664,7 +664,7 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant & int i = 0; - for (const AutoLoadInfo &F : autoload_cache) { + for (const AutoloadInfo &F : autoload_cache) { orders.write[i++] = F.order; } @@ -676,7 +676,7 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant & i = 0; - for (const AutoLoadInfo &F : autoload_cache) { + for (const AutoloadInfo &F : autoload_cache) { undo_redo->add_do_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F.name, orders[i++]); undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F.name, F.order); } @@ -697,18 +697,18 @@ bool EditorAutoloadSettings::autoload_add(const String &p_name, const String &p_ String error; if (!_autoload_name_is_valid(name, &error)) { - EditorNode::get_singleton()->show_warning(TTR("Can't add AutoLoad:") + "\n" + error); + EditorNode::get_singleton()->show_warning(TTR("Can't add Autoload:") + "\n" + error); return false; } const String &path = p_path; if (!FileAccess::exists(path)) { - EditorNode::get_singleton()->show_warning(TTR("Can't add AutoLoad:") + "\n" + vformat(TTR("%s is an invalid path. File does not exist."), path)); + EditorNode::get_singleton()->show_warning(TTR("Can't add Autoload:") + "\n" + vformat(TTR("%s is an invalid path. File does not exist."), path)); return false; } if (!path.begins_with("res://")) { - EditorNode::get_singleton()->show_warning(TTR("Can't add AutoLoad:") + "\n" + vformat(TTR("%s is an invalid path. Not in resource path (res://)."), path)); + EditorNode::get_singleton()->show_warning(TTR("Can't add Autoload:") + "\n" + vformat(TTR("%s is an invalid path. Not in resource path (res://)."), path)); return false; } @@ -716,7 +716,7 @@ bool EditorAutoloadSettings::autoload_add(const String &p_name, const String &p_ UndoRedo *undo_redo = EditorNode::get_undo_redo(); - undo_redo->create_action(TTR("Add AutoLoad")); + undo_redo->create_action(TTR("Add Autoload")); // Singleton autoloads are represented with a leading "*" in their path. undo_redo->add_do_property(ProjectSettings::get_singleton(), name, "*" + path); @@ -791,7 +791,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() { continue; } - AutoLoadInfo info; + AutoloadInfo info; info.is_singleton = path.begins_with("*"); if (info.is_singleton) { @@ -812,7 +812,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() { autoload_cache.push_back(info); } - for (AutoLoadInfo &info : autoload_cache) { + for (AutoloadInfo &info : autoload_cache) { info.node = _create_autoload(info.path); if (info.node) { @@ -921,7 +921,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() { } EditorAutoloadSettings::~EditorAutoloadSettings() { - for (const AutoLoadInfo &info : autoload_cache) { + for (const AutoloadInfo &info : autoload_cache) { if (info.node && !info.in_editor) { memdelete(info.node); } diff --git a/editor/editor_autoload_settings.h b/editor/editor_autoload_settings.h index 135ff48a0c..044eea4245 100644 --- a/editor/editor_autoload_settings.h +++ b/editor/editor_autoload_settings.h @@ -49,7 +49,7 @@ class EditorAutoloadSettings : public VBoxContainer { String autoload_changed; - struct AutoLoadInfo { + struct AutoloadInfo { String name; String path; bool is_singleton = false; @@ -57,12 +57,12 @@ class EditorAutoloadSettings : public VBoxContainer { int order = 0; Node *node = nullptr; - bool operator==(const AutoLoadInfo &p_info) const { + bool operator==(const AutoloadInfo &p_info) const { return order == p_info.order; } }; - List<AutoLoadInfo> autoload_cache; + List<AutoloadInfo> autoload_cache; bool updating_autoload; int number_of_autoloads; diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp index dd4969cdd2..eab62349d1 100644 --- a/editor/editor_help_search.cpp +++ b/editor/editor_help_search.cpp @@ -536,7 +536,7 @@ TreeItem *EditorHelpSearch::Runner::_create_class_item(TreeItem *p_parent, const } else if (ClassDB::class_exists(p_doc->name) && ClassDB::is_parent_class(p_doc->name, "Object")) { icon = ui_service->get_theme_icon(SNAME("Object"), SNAME("EditorIcons")); } - String tooltip = p_doc->brief_description.strip_edges(); + String tooltip = DTR(p_doc->brief_description.strip_edges()); TreeItem *item = results_tree->create_item(p_parent); item->set_icon(0, icon); diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index a83379dca4..d48ca7f3b3 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -99,7 +99,7 @@ void EditorProperty::emit_changed(const StringName &p_property, const Variant &p const Variant *argptrs[4] = { &args[0], &args[1], &args[2], &args[3] }; cache[p_property] = p_value; - emit_signal(SNAME("property_changed"), (const Variant **)argptrs, 4); + emit_signalp(SNAME("property_changed"), (const Variant **)argptrs, 4); } void EditorProperty::_notification(int p_what) { @@ -3314,7 +3314,7 @@ void EditorInspector::_property_keyed(const String &p_path, bool p_advance) { // The second parameter could be null, causing the event to fire with less arguments, so use the pointer call which preserves it. const Variant args[3] = { p_path, object->get(p_path), p_advance }; const Variant *argp[3] = { &args[0], &args[1], &args[2] }; - emit_signal(SNAME("property_keyed"), argp, 3); + emit_signalp(SNAME("property_keyed"), argp, 3); } void EditorInspector::_property_deleted(const String &p_path) { @@ -3333,7 +3333,7 @@ void EditorInspector::_property_keyed_with_value(const String &p_path, const Var // The second parameter could be null, causing the event to fire with less arguments, so use the pointer call which preserves it. const Variant args[3] = { p_path, p_value, p_advance }; const Variant *argp[3] = { &args[0], &args[1], &args[2] }; - emit_signal(SNAME("property_keyed"), argp, 3); + emit_signalp(SNAME("property_keyed"), argp, 3); } void EditorInspector::_property_checked(const String &p_path, bool p_checked) { diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 42eaf8bd89..7a9511e8c6 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -725,11 +725,7 @@ void EditorNode::_notification(int p_what) { help_menu->add_theme_style_override("hover", gui_base->get_theme_stylebox(SNAME("MenuHover"), SNAME("EditorStyles"))); } - if (EDITOR_GET("interface/scene_tabs/resize_if_many_tabs")) { - scene_tabs->set_min_width(int(EDITOR_GET("interface/scene_tabs/minimum_width")) * EDSCALE); - } else { - scene_tabs->set_min_width(0); - } + scene_tabs->set_max_tab_width(int(EDITOR_GET("interface/scene_tabs/maximum_width")) * EDSCALE); _update_scene_tabs(); recent_scenes->reset_size(); @@ -807,10 +803,6 @@ void EditorNode::_notification(int p_what) { _update_update_spinner(); } break; - - case Control::NOTIFICATION_RESIZED: { - _update_scene_tabs(); - } break; } } @@ -5496,7 +5488,7 @@ void EditorNode::_add_dropped_files_recursive(const Vector<String> &p_files, Str } void EditorNode::_file_access_close_error_notify(const String &p_str) { - add_io_error("Unable to write to file '" + p_str + "', file in use, locked or lacking permissions."); + add_io_error(vformat(TTR("Unable to write to file '%s', file in use, locked or lacking permissions."), p_str)); } void EditorNode::reload_scene(const String &p_path) { @@ -6255,7 +6247,7 @@ EditorNode::EditorNode() { scene_tabs->add_tab("unsaved"); scene_tabs->set_tab_alignment(TabBar::ALIGNMENT_LEFT); scene_tabs->set_tab_close_display_policy((bool(EDITOR_GET("interface/scene_tabs/always_show_close_button")) ? TabBar::CLOSE_BUTTON_SHOW_ALWAYS : TabBar::CLOSE_BUTTON_SHOW_ACTIVE_ONLY)); - scene_tabs->set_min_width(int(EDITOR_GET("interface/scene_tabs/minimum_width")) * EDSCALE); + scene_tabs->set_max_tab_width(int(EDITOR_GET("interface/scene_tabs/maximum_width")) * EDSCALE); scene_tabs->set_drag_to_rearrange_enabled(true); scene_tabs->connect("tab_changed", callable_mp(this, &EditorNode::_scene_tab_changed)); scene_tabs->connect("tab_button_pressed", callable_mp(this, &EditorNode::_scene_tab_script_edited)); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index d93d495ff6..1a4d507eef 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -3059,7 +3059,7 @@ void EditorPropertyResource::_sub_inspector_property_keyed(const String &p_prope // The second parameter could be null, causing the event to fire with less arguments, so use the pointer call which preserves it. const Variant args[3] = { String(get_edited_property()) + ":" + p_property, p_value, p_advance }; const Variant *argp[3] = { &args[0], &args[1], &args[2] }; - emit_signal(SNAME("property_keyed_with_value"), argp, 3); + emit_signalp(SNAME("property_keyed_with_value"), argp, 3); } void EditorPropertyResource::_sub_inspector_resource_selected(const RES &p_resource, const String &p_property) { diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 52ff7e3c19..45685b8fb2 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -461,8 +461,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { // Scene tabs _initial_set("interface/scene_tabs/show_thumbnail_on_hover", true); - _initial_set("interface/scene_tabs/resize_if_many_tabs", true); - EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/scene_tabs/minimum_width", 50, "50,500,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED) + EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/scene_tabs/maximum_width", 350, "0,9999,1", PROPERTY_USAGE_DEFAULT) _initial_set("interface/scene_tabs/show_script_button", false); /* Filesystem */ diff --git a/editor/import/resource_importer_layered_texture.cpp b/editor/import/resource_importer_layered_texture.cpp index d9dd273ed4..197cc49a95 100644 --- a/editor/import/resource_importer_layered_texture.cpp +++ b/editor/import/resource_importer_layered_texture.cpp @@ -544,5 +544,5 @@ void ResourceImporterLayeredTexture::_check_compress_stex(Ref<LayeredTextureImpo } return; } - EditorNode::add_io_error("Warning, no suitable PC VRAM compression enabled in Project Settings. This texture will not display correctly on PC."); + EditorNode::add_io_error(TTR("Warning, no suitable PC VRAM compression enabled in Project Settings. This texture will not display correctly on PC.")); } diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index 1561fc788c..e672fe2dee 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -558,7 +558,7 @@ Error ResourceImporterTexture::import(const String &p_source_file, const String } if (!ok_on_pc) { - EditorNode::add_io_error("Warning, no suitable PC VRAM compression enabled in Project Settings. This texture will not display correctly on PC."); + EditorNode::add_io_error(TTR("Warning, no suitable PC VRAM compression enabled in Project Settings. This texture will not display correctly on PC.")); } } else { //import normally diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp index fe8b462084..94882b3464 100644 --- a/editor/plugins/animation_blend_space_1d_editor.cpp +++ b/editor/plugins/animation_blend_space_1d_editor.cpp @@ -88,7 +88,7 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven } int idx = menu->get_item_count(); - menu->add_item(vformat("Add %s", name), idx); + menu->add_item(vformat(TTR("Add %s"), name), idx); menu->set_item_metadata(idx, E); } diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp index 506a709728..4b7df75aec 100644 --- a/editor/plugins/animation_blend_space_2d_editor.cpp +++ b/editor/plugins/animation_blend_space_2d_editor.cpp @@ -111,7 +111,7 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven continue; // nope } int idx = menu->get_item_count(); - menu->add_item(vformat("Add %s", name), idx); + menu->add_item(vformat(TTR("Add %s"), name), idx); menu->set_item_metadata(idx, E); } diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index 6c284f2268..2f94176e2a 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -108,7 +108,7 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv continue; // nope } int idx = menu->get_item_count(); - menu->add_item(vformat("Add %s", name), idx); + menu->add_item(vformat(TTR("Add %s"), name), idx); menu->set_item_metadata(idx, E); } Ref<AnimationNode> clipb = EditorSettings::get_singleton()->get_resource_clipboard(); diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp index 468341a593..41e3471a78 100644 --- a/editor/plugins/mesh_library_editor_plugin.cpp +++ b/editor/plugins/mesh_library_editor_plugin.cpp @@ -288,9 +288,9 @@ MeshLibraryEditor::MeshLibraryEditor() { cd_remove->get_ok_button()->connect("pressed", callable_mp(this, &MeshLibraryEditor::_menu_remove_confirm)); cd_update = memnew(ConfirmationDialog); add_child(cd_update); - cd_update->get_ok_button()->set_text("Apply without Transforms"); + cd_update->get_ok_button()->set_text(TTR("Apply without Transforms")); cd_update->get_ok_button()->connect("pressed", callable_mp(this, &MeshLibraryEditor::_menu_update_confirm), varray(false)); - cd_update->add_button("Apply with Transforms")->connect("pressed", callable_mp(this, &MeshLibraryEditor::_menu_update_confirm), varray(true)); + cd_update->add_button(TTR("Apply with Transforms"))->connect("pressed", callable_mp(this, &MeshLibraryEditor::_menu_update_confirm), varray(true)); } void MeshLibraryEditorPlugin::edit(Object *p_node) { diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 7059509e72..c4019bc22d 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -663,7 +663,7 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { tab_container->add_child(localization_editor); autoload_settings = memnew(EditorAutoloadSettings); - autoload_settings->set_name(TTR("AutoLoad")); + autoload_settings->set_name(TTR("Autoload")); autoload_settings->connect("autoload_changed", callable_mp(this, &ProjectSettingsEditor::queue_save)); tab_container->add_child(autoload_settings); diff --git a/editor/translations/af.po b/editor/translations/af.po index ad1b7ef436..86ed70ec3a 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -1529,6 +1529,11 @@ msgstr "Laai die verstek Bus Uitleg." msgid "Create a new Bus Layout." msgstr "Skep 'n nuwe Bus Uitleg." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Oop Oudio-Bus Uitleg" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ongeldige naam." @@ -2953,7 +2958,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5727,6 +5732,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Skep Vouer" @@ -8265,7 +8274,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9197,6 +9211,11 @@ msgstr "Soek Vervanging Hulpbron:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Hulpbron" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Lede" @@ -9247,6 +9266,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Verander Skikking Waarde-Soort" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Verander Skikking Waarde-Soort" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Laai Verstek" @@ -9264,7 +9297,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Verander Skikking Waarde-Soort" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9992,18 +10036,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Passendes:" @@ -12654,6 +12686,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Eienskappe" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13994,6 +14031,9 @@ msgstr "Ongeldige naam." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 29efa92a54..4bccc25d91 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -44,10 +44,10 @@ # Ø£ØÙ…د مصطÙÙ‰ الطبراني <eltabaraniahmed@gmail.com>, 2020. # ChemicalInk <aladdinalkhafaji@gmail.com>, 2020. # Musab Alasaifer <mousablasefer@gmail.com>, 2020. -# Yassine Oudjana <y.oudjana@protonmail.com>, 2020. +# Yassine Oudjana <y.oudjana@protonmail.com>, 2020, 2022. # bruvzg <bruvzg13@gmail.com>, 2020. # StarlkYT <mrsstarlkps4@gmail.com>, 2020, 2021. -# Games Toon <xxtvgoodxx@gmail.com>, 2021. +# Games Toon <xxtvgoodxx@gmail.com>, 2021, 2022. # Kareem Abduljaleel <karemjaleel34@gmail.com>, 2021. # ILG - Game <moegypt277@gmail.com>, 2021. # Hatim Jamal <hatimjamal8@gmail.com>, 2021. @@ -55,7 +55,7 @@ # abubakrAlsaab <madeinsudan19@gmail.com>, 2021. # Hafid Talbi <atalbiie@gmail.com>, 2021. # Hareth Mohammed <harethpy@gmail.com>, 2021. -# Mohammed Mubarak <modymu9@gmail.com>, 2021. +# Mohammed Mubarak <modymu9@gmail.com>, 2021, 2022. # Spirit <i8bou3@gmail.com>, 2021, 2022. # TURKYM7MD <turkytb7700@gmail.com>, 2022. # zeyad majed <zmajd62@gmail.com>, 2022. @@ -66,7 +66,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-16 08:44+0000\n" +"PO-Revision-Date: 2022-02-28 15:48+0000\n" "Last-Translator: Mr.k <mineshtine28546271@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" @@ -76,7 +76,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -85,13 +85,13 @@ msgstr "معامل خاطئ لدالة ()ConvertØŒ استخدم Ø§ØØ¯Ù‰ الث٠#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "كان يتوقع سلسلة من الطول 1 (ØØ±Ù)." +msgstr "كانت الدالة تتوقع سلسلة-ØØ±ÙˆÙ طولها 1 (ØØ±Ù ÙˆØ§ØØ¯)." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "لا يوجد ما يكÙÙŠ من البايتات من أجل ÙÙƒ البايتات، أو صيغة غير صØÙŠØØ©." +msgstr "ليس هنالك بايتات كاÙية من أجل ÙÙƒ البايتات، أو الصيغة غير صØÙŠØØ©." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -103,7 +103,7 @@ msgstr "لا يمكن استخدام self لأن النموذج ÙØ§Ø±Øº (لم Ù #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "معاملات غير ØµØ§Ù„ØØ© للمشغل â€â¨%sâ©ØŒ â¨%sâ©â€ Ùˆ â¨%sâ©." +msgstr "معاملات غير ØµØ§Ù„ØØ© للمشغل %s, %s Ùˆ %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" @@ -111,11 +111,11 @@ msgstr "Ùهرس غير صØÙŠØ للنوع %s التابع للنوع Ø§Ù„Ø£Ø³Ø #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "أسم Ùهرس غير صØÙŠØ '%s' للنوع الأساسي %s" +msgstr "أسم Ùهرس غير ØµØ§Ù„Ø '%s' للنوع الأساسي %s" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "معامل غير ØµØ§Ù„Ø Ù„Ù„Ø¥Ù†Ø´Ø§Ø¡ '%s'" +msgstr "معامل غير ØµØ§Ù„Ø Ù„Ø¥Ù†Ø´Ø§Ø¡ '%s'" #: core/math/expression.cpp msgid "On call to '%s':" @@ -131,23 +131,23 @@ msgstr "كيلوبايت" #: core/ustring.cpp msgid "MiB" -msgstr "ميجابايت" +msgstr "ميبي بايت (MiB)" #: core/ustring.cpp msgid "GiB" -msgstr "جيجابايت" +msgstr "جيبي بايت (GiB)" #: core/ustring.cpp msgid "TiB" -msgstr "تيرابايت" +msgstr "تيبي بايت (TiB)" #: core/ustring.cpp msgid "PiB" -msgstr "بيتابايت" +msgstr "بيبي بايت (PiB)" #: core/ustring.cpp msgid "EiB" -msgstr "إكسابايت" +msgstr "إكسي بايت (EiB)" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -191,72 +191,72 @@ msgstr "ØªØØ±ÙŠÙƒ نقاط بيزية" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "تكرار Ù…ÙØ§ØªÙŠØ Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "Anim تكرار Ù…ÙØ§ØªÙŠØ Ø§Ù„ØªØØ±ÙŠÙƒ" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "أزل Ù…ÙØ§ØªÙŠØ Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "Anim أزل Ù…ÙØ§ØªÙŠØ Ø§Ù„ØªØØ±ÙŠÙƒ" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "تغيير وقت الإطار الرئيسي Ù„Ù„ØØ±ÙƒØ©" +msgstr "Anim تغيير وقت الإطار الرئيسي" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "تغيير إنتقالية الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©" +msgstr "Anim تغيير إنتقالية الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "تØÙˆÙŠÙ„ تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "Anim تغيير التØÙˆÙŠÙ„" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "تغيير قيمة الإطار الأساسي Ù„Ù„ØØ±ÙƒØ©" +msgstr "Anim تغيير قيمة الإطار الرئيسي" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "نداء تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "Anim تغيير النداء (Call)" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "وقت الإطار متعدد التغييرات للرسم Ø§Ù„Ù…ØªØØ±Ùƒ" +msgstr "Anim تغييرات متعددة لوقت الإطار الرئيسي" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" -msgstr "المراØÙ„ الانتقالية للرسم Ø§Ù„Ù…ØªØØ±Ùƒ متعدد التغييرات" +msgstr "Anim تغييرات متعددة للمراØÙ„ الانتقالية" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transform" -msgstr "التَØÙŽÙˆÙ‘Ù„ متعدد التغيير للرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©" +msgstr "Anim تغييرات متعددة للتØÙˆÙŠÙ„ات" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Value" -msgstr "قيمة الإطار متعدد التغييرات للرسم Ø§Ù„Ù…ØªØØ±Ùƒ" +msgstr "Anim تغييرات متعددة لقيمة الإطار(ات) الرئيسية" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Call" -msgstr "استدعاء الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ© متعددة التغيير" +msgstr "Anime تغييرات متعددة نداء(ات)" #: editor/animation_track_editor.cpp msgid "Change Animation Length" -msgstr "تعديل طول عرض Ø§Ù„ØØ±ÙƒØ©" +msgstr "تعديل مدة الرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "تعديل رباط عرض Ø§Ù„ØØ±ÙƒØ©" +msgstr "تعديل رباط (Loop) الرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp msgid "Property Track" -msgstr "خط الخاصية" +msgstr "مسار خاصية" #: editor/animation_track_editor.cpp msgid "3D Transform Track" -msgstr "خط Ø§Ù„ØªØØ±ÙŠÙƒ ثلاثي الأبعاد" +msgstr "مسار التØÙˆÙŠÙ„ (ØªØØ±ÙŠÙƒ ÙÙŠ الأبعاد)" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "استدعاء أسلوب المسار" +msgstr "مسار لاستدعاء دالة" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" @@ -264,19 +264,19 @@ msgstr "مسار منØÙ†Ù‰ بيزيه" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" -msgstr "شريط صبط الصوت" +msgstr "شريط ضبط الصوت" #: editor/animation_track_editor.cpp msgid "Animation Playback Track" -msgstr "شريط ضبط Ø§Ù„ØØ±ÙƒØ©" +msgstr "شريط ضبط ØØ±ÙƒØ© الرسم Ø§Ù„Ù…ØªØØ±Ùƒ (Animation)" #: editor/animation_track_editor.cpp msgid "Animation length (frames)" -msgstr "مدة Ø§Ù„ØØ±ÙƒØ© (بالإطارات)" +msgstr "مدة الرسم Ø§Ù„Ù…ØªØØ±Ùƒ (بالإطارات)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" -msgstr "مدة Ø§Ù„ØØ±ÙƒØ© (بالثواني)" +msgstr "مدة الرسم Ø§Ù„Ù…ØªØØ±Ùƒ (بالثواني)" #: editor/animation_track_editor.cpp msgid "Add Track" @@ -300,6 +300,7 @@ msgid "Anim Clips:" msgstr "مقاطع الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©:" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Change Track Path" msgstr "تغيير مسار الطريق" @@ -309,13 +310,14 @@ msgstr "تمكين/إيقا٠هذا المسار." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "وضع Ø§Ù„ØªØØ¯ÙŠØ« (كي٠يتم تعيين هذه الخاصية)" +msgstr "وضع Ø§Ù„ØªØØ¯ÙŠØ« (كيÙية تعيين هذه الخاصية)" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" msgstr "وضعية Ø§Ù„Ø£Ø³ØªÙŠÙØ§Ø¡" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" msgstr "وضع Ø§Ù„ØªÙØ§Ù الØÙ„قة (نهاية العشوائية مع بداية الØÙ„قة)" @@ -341,7 +343,7 @@ msgstr "متقطع" #: editor/animation_track_editor.cpp msgid "Trigger" -msgstr "Ù…ÙØ·Ù„Ù‚" +msgstr "ØªÙØ¹ÙŠÙ„/أطلاق" #: editor/animation_track_editor.cpp msgid "Capture" @@ -358,7 +360,7 @@ msgstr "خطي" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "مكعب" +msgstr "مكعبي" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" @@ -371,36 +373,35 @@ msgstr "Ø§Ù„ØªÙØ§Ù الØÙ„قة المثبتة" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "أدخل Ø§Ù„Ù…ÙØªØ§Ø" +msgstr "أدخل Ù…ÙØªØ§Ø" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" -msgstr "Ù…ÙØªØ§Ø (Ù…ÙØ§ØªÙŠØ) المكررة" +msgstr "تكرار Ø§Ù„Ù…ÙØªØ§Ø (Ø§Ù„Ù…ÙØ§ØªÙŠØ)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add RESET Value(s)" -msgstr "Ø¥Ø¶Ø§ÙØ© %d إطار(ات)" +msgstr "أضÙÙ’ قيمة(قيم) إعادة تعيين (RESET)" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" -msgstr "Ù…ÙØªØ§Ø Ø§Ù„ØØ°Ù()" +msgstr "ØØ°Ù Ø§Ù„Ù…ÙØªØ§Ø (Ø§Ù„Ù…ÙØ§ØªÙŠØ)" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" -msgstr "تغيير وضع ØªØØ¯ÙŠØ« Ø§Ù„ØØ±ÙƒØ©" +msgstr "تغيير وضع Ø§Ù„ØªØØ¯ÙŠØ« للرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp msgid "Change Animation Interpolation Mode" -msgstr "تغيير وضع عقدة Ø§Ù„ØØ±ÙƒØ©" +msgstr "تغيير وضع Ø§Ù„ØªÙØ³ÙŠØ± (Interpolation) للرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp msgid "Change Animation Loop Mode" -msgstr "تغيير وضع عقدة Ø§Ù„ØØ±ÙƒØ©" +msgstr "تغيير وضع عقدة الرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" -msgstr "ØØ°Ù مسار Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "إزالة مسار Ø§Ù„ØªØØ±ÙŠÙƒ" #. TRANSLATORS: %s will be replaced by a phrase describing the target of track. #: editor/animation_track_editor.cpp @@ -426,21 +427,22 @@ msgstr "أنشئ" #: editor/animation_track_editor.cpp msgid "Anim Insert" -msgstr "إدخال ØØ±ÙƒØ©" +msgstr "Anim إدخال ØØ±ÙƒØ©" #. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. #: editor/animation_track_editor.cpp msgid "node '%s'" -msgstr "ÙˆØØ¯Ø© '%s'" +msgstr "Ø§Ù„ÙˆØØ¯Ø© '%s'" #. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. #: editor/animation_track_editor.cpp msgid "animation" -msgstr "رسوم Ù…ØªØØ±ÙƒØ©" +msgstr "رسم Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp msgid "AnimationPlayer can't animate itself, only other players." -msgstr "اللأعب Ø§Ù„Ù…ØªØØ±Ùƒ لا يستطيع ØªØØ±ÙŠÙƒ Ù†ÙØ³Ù‡ ,Ùقط اللاعبين الآخرين." +msgstr "" +"لاعب-Ø§Ù„ØªØØ±ÙŠÙƒ (AnimationPlayer) لا يستطيع ØªØØ±ÙŠÙƒ Ù†ÙØ³Ù‡ ,Ùقط اللاعبين الآخرين." #. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. #: editor/animation_track_editor.cpp @@ -449,15 +451,15 @@ msgstr "الخاصية '%s'" #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" -msgstr "أنشي ØØ±ÙƒØ© وأدخلها" +msgstr "Anim أنشئ وأضÙÙ’" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" -msgstr "أنشي مسار ØØ±ÙƒØ© Ùˆ Ù…ÙØªØ§Ø" +msgstr "Anim أضÙÙ’ مسار ØØ±ÙƒØ© Ùˆ Ù…ÙØªØ§Ø" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" -msgstr "Ø£Ø¶Ù Ù…ÙØªØ§Ø Ø§Ù„ØØ±ÙƒØ©" +msgstr "Anim أضÙÙ’ Ù…ÙØªØ§Ø Ø§Ù„ØØ±ÙƒØ©" #: editor/animation_track_editor.cpp msgid "Change Animation Step" @@ -469,7 +471,7 @@ msgstr "إعادة ترتيب المسارات" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "تنطبق مسارات التØÙˆÙŠÙ„ Ùقط على الØÙŠØ² المكاني." +msgstr "تنطبق مسارات التØÙˆÙŠÙ„ Ùقط على ÙˆØØ¯Ø§Øª الØÙŠØ² المكاني." #: editor/animation_track_editor.cpp msgid "" @@ -478,18 +480,18 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" -"يمكن للمسارات الصوتية أن تشير Ùقط إلى ØÙŠØ² الكتابة:\n" -"-الصوت الجاري للأعب\n" -"-الصوت الجاري للأعب ثنائي الأبعاد\n" -"-الصوت الجاري للأعب ثلاثي الأبعاد" +"يمكن للمسارات الصوتية Ùقط أن تشير إلى ÙˆØØ¯Ø§Øª بنوع:\n" +"-لاعب الصوت الجاري\n" +"-لاعب الصوت الجاري للØÙŠØ² ثنائي الأبعاد\n" +"-لاعب الصوت الجاري للØÙŠØ² ثلاثي الأبعاد" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "مسارات Ø§Ù„ØØ±ÙƒØ© يمكنها Ùقط أن تشير إلى عÙقد مشغّل Ø§Ù„ØØ±ÙƒØ©." +msgstr "مسارات Ø§Ù„ØØ±ÙƒØ© يمكنها Ùقط أن تشير إلى ÙˆØØ¯Ø§Øª مشغّل الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© مقطع جديد بدون جذر" +msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© مقطع جديد بدون جذر (root)" #: editor/animation_track_editor.cpp msgid "Invalid track for Bezier (no suitable sub-properties)" @@ -509,11 +511,11 @@ msgstr "المقطع ليس من نوع مكاني (Spatial), لا يمكن إض #: editor/animation_track_editor.cpp msgid "Add Transform Track Key" -msgstr "Ø£Ø¶Ù Ù…ÙØªØ§Ø مقطع المتØÙˆÙ„ (Transform)" +msgstr "أضÙÙ’ Ù…ÙØªØ§Ø لمقطع التØÙˆÙŠÙ„ (Transform Track)" #: editor/animation_track_editor.cpp msgid "Add Track Key" -msgstr "Ø£Ø¶Ù Ù…ÙØªØ§Ø المقطع" +msgstr "أضÙÙ’ Ù…ÙØªØ§Ø المقطع" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." @@ -521,15 +523,15 @@ msgstr "مسار المقطع غير صالØ, إذن لا يمكن Ø¥Ø¶Ø§ÙØ© Ø #: editor/animation_track_editor.cpp msgid "Add Method Track Key" -msgstr "Ø£Ø¶Ù Ù…ÙØªØ§Ø مقطع الدالة" +msgstr "Ø£Ø¶Ù’Ù Ù…ÙØªØ§Ø لمقطع الدالة (Method Track)" #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "دالة لم توجد ÙÙŠ شيئ: " +msgstr "دالة لم توجد ÙÙŠ الكائن: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" -msgstr "Ù…ÙØªØ§Ø ØØ±ÙƒØ© Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "Anim ØªØØ±ÙŠÙƒ Ø§Ù„Ù…ÙØ§ØªÙŠØ" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -542,7 +544,7 @@ msgstr "لصق المقاطع" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" -msgstr "Ù…ÙØªØ§Ø تكبير ØØ±ÙƒØ©" +msgstr "Anim تكبير Ø§Ù„Ù…ÙØ§ØªÙŠØ" #: editor/animation_track_editor.cpp msgid "" @@ -550,9 +552,8 @@ msgid "" msgstr "هذا الخيار لا يعمل لتعديل منØÙ†Ù‰ بيزر (Bezier), لأنه Ùقط مقطع ÙˆØ§ØØ¯." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Add RESET Keys" -msgstr "Ù…ÙØªØ§Ø تكبير ØØ±ÙƒØ©" +msgstr "Anim Ø¥Ø¶Ø§ÙØ© Ù…ÙØ§ØªÙŠØ إعادة تعيين (RESET Keys)" #: editor/animation_track_editor.cpp msgid "" @@ -566,13 +567,13 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" -"هذه Ø§Ù„ØØ±ÙƒØ© (رسوم Ù…ØªØØ±ÙƒØ©) تنتمي الى مشهد مستورد، لذا ÙØ¥Ù† أي تغييرات ÙÙŠ " -"المسارات المستوردة لن يتم ØÙظها.\n" +"هذه الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ© تنتمي الى مشهد مستورد، لذا ÙØ¥Ù† أي تغييرات ÙÙŠ المسارات " +"المستوردة لن يتم ØÙظها.\n" "\n" "لتشغيل الامكانية Ù„Ø¥Ø¶Ø§ÙØ© مسارات خاصة، انتقل إلى إعدادات استيراد المشهد واضبط " "\"رسوم Ù…ØªØØ±ÙƒØ© > تخزين\" إلى \"Ù…Ù„ÙØ§Øª\"ØŒ\n" "شغل \"رسوم Ù…ØªØØ±ÙƒØ© > Ø£ØØªÙظ بالمقاطع (المسارات) المخصصة\"ØŒ ثم اعد الاستيراد.\n" -"يمكنك ايضاً استخدام إعدادات استيراد مسبقة تقوم باستيراد الرسم Ø§Ù„Ù…ØªØØ±Ùƒ الى " +"يمكنك ايضاً استخدام إعدادات استيراد مسبقة تقوم باستيراد الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ© الى " "Ù…Ù„ÙØ§Øª Ù…ØªÙØ±Ù‚Ø©." #: editor/animation_track_editor.cpp @@ -584,6 +585,7 @@ msgid "Select an AnimationPlayer node to create and edit animations." msgstr "اختر مشغل الرسم Ø§Ù„Ù…ØªØØ±Ùƒ من شجرة المشهد لكي تنشئ أو تعدل Ø§Ù„ØØ±ÙƒØ©." #: editor/animation_track_editor.cpp +#, fuzzy msgid "Only show tracks from nodes selected in tree." msgstr "Ùقط قم بتبين المقاطع من العقد (Nodes) Ø§Ù„Ù…ØØ¯Ø¯Ø© ÙÙŠ الشجرة." @@ -678,7 +680,7 @@ msgstr "إستعمل منØÙ†ÙŠØ§Øª بيزر" #: editor/animation_track_editor.cpp msgid "Create RESET Track(s)" -msgstr "إنشاء مسار/ات إعادة التعيين (RESET)" +msgstr "إنشاء مسار(ات) إعادة التعيين (RESET)" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -1127,8 +1129,8 @@ msgid "" "Depending on your filesystem configuration, the files will either be moved " "to the system trash or deleted permanently." msgstr "" -"هل تريد ØØ°Ù Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…ØØ¯Ø¯Ø© من المشروع؟ (لا يمكن التراجع.)\n" -"إستنادًا إلى نظام تشغيل جهازك, قد يتم نقل Ø§Ù„Ù…Ù„ÙØ§Øª إلى سلة المهملات أو ØØ°Ùها " +"هل تريد ØØ°Ù Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…ØØ¯Ø¯Ø© من المشروع؟ (لا يمكن استعادتها.)\n" +"ØØ³Ø¨ Ø¥ÙØ¹Ø¯Ø§Ø¯Ø§Øª Ù…ÙØ¯ÙŠØ± Ù…Ù„ÙØ§Øª نظام تشغيلك, سيتم نقلها إلى سلة المهملات أو Ø³ØªØØ°Ù " "نهائيًا." #: editor/dependency_editor.cpp @@ -1139,10 +1141,10 @@ msgid "" "Depending on your filesystem configuration, the files will either be moved " "to the system trash or deleted permanently." msgstr "" -"Ø§Ù„Ù…Ù„ÙØ§Øª التي يتم إزالتها مطلوبة من قبل موارد أخرى من اجل Ø£ÙŽÙ† تعمل.\n" -"هل تريد إزالتها على أي ØØ§Ù„ØŸ (لا تراجع).\n" -"ØØ³Ø¨ Ø¥ÙØ¹Ø¯Ø§Ø¯Ø§Øª Ù…ÙØ¯ÙŠØ± Ù…Ù„ÙØ§ØªÙÙƒ, Ø¥Ùما سيتم نقل الملقات Ø¥Ùلى سلة المÙهملات Ø£ÙŽÙˆ سيتم ØØ°Ùها " -"نهائياً." +"Ø§Ù„Ù…Ù„ÙØ§Øª التي يتم إزالتها هي مطلوبة من قبل موارد أخرى لكي تعمل.\n" +"هل تريد إزالتها على أي ØØ§Ù„ØŸ (لا يمكن التراجع).\n" +"اعتماداً على Ø¥ÙØ¹Ø¯Ø§Ø¯Ø§Øª Ù…ÙØ¯ÙŠØ± Ù…Ù„ÙØ§Øª نظام تشغيلك, سيتم نقلها Ø¥Ùلى سلة المÙهملات Ø£ÙŽÙˆ " +"سيتم ØØ°Ùها نهائياً." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1313,7 +1315,7 @@ msgstr "تراخيص" #: editor/editor_asset_installer.cpp msgid "Error opening asset file for \"%s\" (not in ZIP format)." -msgstr "ØØ¯Ø« خطأ Ø¹Ù†Ø¯ÙØªØ مل٠%s Ø§Ù„ØØ²Ù…Ø© بسبب أن المل٠ليس ÙÙŠ صيغة \"ZIP\"." +msgstr "ØØ¯Ø« خطأ عند ÙØªØ Ù…Ù„Ù Ø§Ù„ØØ²Ù…Ø© لـ \"%s\" (لأنه ليس بصيغة ZIP) ." #: editor/editor_asset_installer.cpp msgid "%s (already exists)" @@ -1527,6 +1529,11 @@ msgstr "تØÙ…يل نسق المسار Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ." msgid "Create a new Bus Layout." msgstr "أنشئ نسق مسار جديد." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Ø¥ÙØªØ نسق مسار الصوت" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "اسم غير صالØ." @@ -1787,7 +1794,7 @@ msgstr "رصي٠العÙقد" #: editor/editor_feature_profile.cpp msgid "FileSystem Dock" -msgstr "إرساء نظام Ø§Ù„Ù…Ù„ÙØ§Øª" +msgstr "رصي٠نظام Ø§Ù„Ù…Ù„ÙØ§Øª" #: editor/editor_feature_profile.cpp msgid "Import Dock" @@ -2150,12 +2157,11 @@ msgstr "التعليمات على الإنترنت" #: editor/editor_help.cpp msgid "Properties" -msgstr "خاصيات" +msgstr "خصائص" #: editor/editor_help.cpp -#, fuzzy msgid "overrides %s:" -msgstr "يتجاوز s%:" +msgstr "يتجاوز %s:" #: editor/editor_help.cpp msgid "default:" @@ -2163,7 +2169,7 @@ msgstr "Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ:" #: editor/editor_help.cpp msgid "Methods" -msgstr "طرق" +msgstr "دوال" #: editor/editor_help.cpp msgid "Theme Properties" @@ -2296,14 +2302,13 @@ msgid "Property:" msgstr "خاصية:" #: editor/editor_inspector.cpp -#, fuzzy msgid "Pin value" -msgstr "(القيمة)" +msgstr "القيمة المثبتة" #: editor/editor_inspector.cpp msgid "" "Pinning a value forces it to be saved even if it's equal to the default." -msgstr "تثبيت القيمةيجْبرَهٌ ØØªÙŠ Ù„Ùˆ كانت تساوي القيمة Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©." +msgstr "تثبيت القيمة ÙŠØ¬Ù’Ø¨ÙØ±ÙŽÙ‡Ù على ØÙظها ØØªÙ‰ لو كانت تساوي القيمة Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©." #: editor/editor_inspector.cpp msgid "Pin value [Disabled because '%s' is editor-only]" @@ -2337,9 +2342,8 @@ msgid "Paste Property" msgstr "لصق ال" #: editor/editor_inspector.cpp -#, fuzzy msgid "Copy Property Path" -msgstr "نسخ مسار النص البرمجي" +msgstr "نسخ مسار الخاصية" #: editor/editor_log.cpp msgid "Output:" @@ -2495,7 +2499,7 @@ msgstr "ينشئ الصورة المصغرة" #: editor/editor_node.cpp msgid "This operation can't be done without a tree root." -msgstr "هذه العملية لا يمكنها الإكتمال من غير شجرة رئيسة." +msgstr "هذه العميلة لا يمكن إجرائها من غير جذر رئيسي." #: editor/editor_node.cpp msgid "" @@ -2554,17 +2558,16 @@ msgid "" "option and delete the Default layout." msgstr "" "تم تجاوز اعدادات Ø§Ù„Ù…ØØ±Ø± الاساسيه.\n" -"لإستعادة اعدادات Ø§Ù„Ù…ØØ±Ø±, اذهب إلى خيار 'Delete Layout' من ثم Ø¥ØÙظ الاعدادات " -"الاساسيه." +"لإستعادة اعدادات Ø§Ù„Ù…ØØ±Ø±Ø§Ù„أساسية, اذهب إلى خيار 'Delete Layout' من ثم أزل " +"الاعدادات الاساسيه." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "إسم النسق غير موجود!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "إسترجاع النسق Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ø¥Ù„ÙŠ الإعدادات الأساسية." +msgstr "تم إسترجاع النسق Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ (Default layout) لاعدادته٠الأساسية." #: editor/editor_node.cpp msgid "" @@ -2667,11 +2670,12 @@ msgstr "" "عموما." #: editor/editor_node.cpp -#, fuzzy msgid "" "A root node is required to save the scene. You can add a root node using the " "Scene tree dock." -msgstr "يتطلب ØÙظ المشهد ØªÙˆØ§ÙØ± عÙقدة رئيسة." +msgstr "" +"يتطلب ØÙظ المشهد ØªÙˆØ§ÙØ± ÙˆØØ¯Ø© رئيسة. يمكنك Ø¥Ø¶Ø§ÙØ© ÙˆØØ¯Ø© رئيسية من خلال رصي٠شجرة " +"المشهد." #: editor/editor_node.cpp msgid "Save Scene As..." @@ -2815,7 +2819,7 @@ msgid "" msgstr "" "غير قادر علي تØÙ…يل النص البرمجي Ù„Ù„Ø¥Ø¶Ø§ÙØ© من المسار: '%s'. يبدو أنه يوجد خطأ " "ÙÙŠ ذلك النص البرمجي.\n" -"تعطيل Ø§Ù„Ø¥Ø¶Ø§ÙØ© ÙÙŠ '%s' كي لا ØªØØµÙ„ أخطاء." +"تعطيل Ø§Ù„Ø¥Ø¶Ø§ÙØ© ÙÙŠ '%s' لتجنب الأخطاء لاØÙ‚اً." #: editor/editor_node.cpp msgid "" @@ -2955,7 +2959,7 @@ msgstr "تمكين/إيقا٠الوضع الخالي من الإلهاء." msgid "Add a new scene." msgstr "Ø¥Ø¶Ø§ÙØ© مشهد جديد." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "مشهد" @@ -3040,15 +3044,15 @@ msgstr "إعدادات المشروع..." #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp msgid "Version Control" -msgstr "التØÙƒÙ… بالإصدار" +msgstr "إدارة الإصدارات (Version Control)" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp msgid "Set Up Version Control" -msgstr "إعداد التØÙƒÙ… بالنسخة" +msgstr "إعداد إدارة الإصدارات (Version Control)" #: editor/editor_node.cpp msgid "Shut Down Version Control" -msgstr "Ø¥Ø·ÙØ§Ø¡ التØÙƒÙ… بالنسخة Version Control" +msgstr "Ø¥Ø·ÙØ§Ø¡ إدارة الإصدارات (Version Control)" #: editor/editor_node.cpp msgid "Export..." @@ -3059,9 +3063,8 @@ msgid "Install Android Build Template..." msgstr "تØÙ…يل قالب البناء للأندرويد..." #: editor/editor_node.cpp -#, fuzzy msgid "Open User Data Folder" -msgstr "ÙØªØ مجلّد بيانات Ø§Ù„Ù…ØØ±Ù‘ر" +msgstr "Ø¥ÙØªØ مجلّد بيانات المستخدم" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" @@ -3069,12 +3072,11 @@ msgstr "أدوات" #: editor/editor_node.cpp msgid "Orphan Resource Explorer..." -msgstr "Ù…ØªØµÙØ الموارد Ø£ÙˆØ±ÙØ§Ù†..." +msgstr "Ù…ØªØµÙØ الموارد اليتيمة..." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Current Project" -msgstr "إعادة تسمية المشروع" +msgstr "إعادة تØÙ…يل/تشغيل المشروع Ø§Ù„ØØ§Ù„ÙŠ" #: editor/editor_node.cpp msgid "Quit to Project List" @@ -3107,7 +3109,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Small Deploy with Network Filesystem" -msgstr "نشر مصغر مع نظام Ù…Ù„ÙØ§Øª الشبكة" +msgstr "نشر صغير مع نظام Ù…Ù„ÙØ§Øª الشبكة" #: editor/editor_node.cpp msgid "" @@ -3183,7 +3185,6 @@ msgid "Synchronize Script Changes" msgstr "مزامنة تغييرات النص البرمجي" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, any script that is saved will be reloaded in " "the running project.\n" @@ -3192,8 +3193,8 @@ msgid "" msgstr "" "ØÙŠÙ†Ù…ا يكون هذا الإعداد Ù…ÙÙØ¹Ù„ØŒ أي نص برمجي يتم ØÙظه سيتم إعادة تØÙ…يله ÙÙŠ " "اللعبة العاملة.\n" -"ØÙŠÙ†Ù…ا يتم إستخدامه عن Ø¨ÙØ¹Ø¯ على جهاز، سيكون هذا أكثر ÙØ¹Ø§Ù„ية مع نظام شبكات " -"Ø§Ù„Ù…Ù„ÙØ§Øª." +"ØÙŠÙ†Ù…ا يتم إستخدامه عن Ø¨ÙØ¹Ø¯ على جهاز، سيكون أكثر ÙƒÙØ§Ø¡ØªØ§Ù‹ عند ØªÙØ¹ÙŠÙ„ إعداد نظام " +"Ù…Ù„ÙØ§Øª الشبكة." #: editor/editor_node.cpp editor/script_create_dialog.cpp msgid "Editor" @@ -3244,9 +3245,8 @@ msgid "Help" msgstr "مساعدة" #: editor/editor_node.cpp -#, fuzzy msgid "Online Documentation" -msgstr "ÙØªØ الوثائق" +msgstr "الوثائق الإلكترونية" #: editor/editor_node.cpp msgid "Questions & Answers" @@ -3269,9 +3269,8 @@ msgid "Community" msgstr "المجتمع" #: editor/editor_node.cpp -#, fuzzy msgid "About Godot" -msgstr "ØÙˆÙ„" +msgstr "ØÙˆÙ„ غو-دوت" #: editor/editor_node.cpp msgid "Support Godot Development" @@ -3287,7 +3286,7 @@ msgstr "تشغيل" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." -msgstr "إيقا٠المشهد Ø§Ù„ØØ§Ù„ÙŠ من أجل المعالجة البرمجية." +msgstr "إيقا٠المشهد من أجل ØªÙ†Ù‚ÙŠØ Ø§Ù„ÙƒØ¨ÙˆØ§Øª البرمجية (debugging)." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3334,7 +3333,7 @@ msgstr "ØªØØ¯ÙŠØ« عند التغيير" #: editor/editor_node.cpp #, fuzzy msgid "Update Vital Changes" -msgstr "تغيرات المادة:" +msgstr "تغيرات المادة" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -3424,7 +3423,7 @@ msgstr "دمج مع الموجود" #: editor/editor_node.cpp #, fuzzy msgid "Apply MeshInstance Transforms" -msgstr "تØÙˆÙŠÙ„ تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "تطبيق التØÙˆÙŠÙ„ات Ù„ MeshInstance" #: editor/editor_node.cpp msgid "Open & Run a Script" @@ -3530,7 +3529,6 @@ msgid "Version" msgstr "الإصدار" #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Author" msgstr "المالك" @@ -3544,14 +3542,12 @@ msgid "Measure:" msgstr "قياس:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Frame Time (ms)" -msgstr "وقت الاطار (ميلي ثانية)" +msgstr "وقت الإطار (مللي ثانية)" #: editor/editor_profiler.cpp -#, fuzzy msgid "Average Time (ms)" -msgstr "متوسط الوقت (ميلي ثانية)" +msgstr "متوسط الوقت (مللي ثانية)" #: editor/editor_profiler.cpp msgid "Frame %" @@ -3725,7 +3721,7 @@ msgid "" "as runnable." msgstr "" "لا يوجد إعداد تصدير مسبق عامل لهذه المنصة.\n" -"من ÙØ¶Ù„Ùƒ أض٠إعداد تصدير عامل ÙÙŠ قائمة التصدير." +"من ÙØ¶Ù„Ùƒ أضÙÙ’ إعداد تصدير عامل ÙÙŠ قائمة التصدير أو عر٠إعداد تصدير موجود كعامل." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3775,9 +3771,8 @@ msgstr "إستيراد من عقدة:" #. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git"). #: editor/editor_vcs_interface.cpp -#, fuzzy msgid "%s Error" -msgstr "خطأ" +msgstr "Ùªs خطأ" #: editor/export_template_manager.cpp msgid "Open the folder containing these templates." @@ -3792,9 +3787,8 @@ msgid "There are no mirrors available." msgstr "لا يوجد مرايا Ù…ØªÙˆÙØ±Ø©." #: editor/export_template_manager.cpp -#, fuzzy msgid "Retrieving the mirror list..." -msgstr "يستقبل المرايا، من ÙØ¶Ù„Ùƒ إنتظر..." +msgstr "يتم استرداد قائمة المرايا، من ÙØ¶Ù„Ùƒ إنتظر..." #: editor/export_template_manager.cpp msgid "Starting the download..." @@ -3806,7 +3800,7 @@ msgstr "خطأ ÙÙŠ طلب الرابط:" #: editor/export_template_manager.cpp msgid "Connecting to the mirror..." -msgstr "يتم الاتصال بالمرآة..." +msgstr "يتم الاتصال Ø¨Ø§Ù„Ù…ÙØ¶ÙŠÙ (المرآة)..." #: editor/export_template_manager.cpp msgid "Can't resolve the requested address." @@ -3857,8 +3851,8 @@ msgstr "هناك خطأ ÙÙŠ جلب قائمة المرايا mirrors." #, fuzzy msgid "Error parsing JSON with the list of mirrors. Please report this issue!" msgstr "" -"ØØ¯Ø« خطأ ÙÙŠ ÙÙƒ (ØªÙØ³ÙŠØ± parsing) مل٠JSON الخاص بقائمة المرايا. من ÙØ¶Ù„Ùƒ بلّغ عن " -"هذه المشكلة!" +"ØØ¯Ø« خطأ ÙÙŠ ØªÙØ³ÙŠØ±/تØÙ„يل (parsing) مل٠JSON الخاص بقائمة المرايا. من ÙØ¶Ù„Ùƒ بلّغ " +"عن هذه المشكلة!" #: editor/export_template_manager.cpp msgid "Best available mirror" @@ -3917,7 +3911,7 @@ msgstr "خطأ مطابقة ssl" #: editor/export_template_manager.cpp #, fuzzy msgid "Can't open the export templates file." -msgstr "لم نستطع ÙØªØ المل٠المضغوط المÙورد." +msgstr "لا نستطيع ÙØªØ مل٠القوالب." #: editor/export_template_manager.cpp msgid "Invalid version.txt format inside the export templates file: %s." @@ -3926,12 +3920,12 @@ msgstr "صيغة غير ØµØ§Ù„ØØ© Ù„ version.txt داخل مل٠القالب: #: editor/export_template_manager.cpp #, fuzzy msgid "No version.txt found inside the export templates file." -msgstr "لا مل٠version.txt تم إيجاده داخل القالب." +msgstr "لم يتم إيجاد مل٠version.txt ÙÙŠ داخل مل٠القالب." #: editor/export_template_manager.cpp #, fuzzy msgid "Error creating path for extracting templates:" -msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:" +msgstr "خطأ ÙÙŠ إنشاء المسار لاستخراج القوالب:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -3966,9 +3960,8 @@ msgid "Export templates are installed and ready to be used." msgstr "تم تنصيب قوالب التصدير وهي جاهزة للاستعمال." #: editor/export_template_manager.cpp -#, fuzzy msgid "Open Folder" -msgstr "Ø§ÙØªØ الملÙ" +msgstr "Ø§ÙØªØ المجلد" #: editor/export_template_manager.cpp msgid "Open the folder containing installed templates for the current version." @@ -3989,12 +3982,11 @@ msgstr "التØÙ…يل من:" #: editor/export_template_manager.cpp #, fuzzy msgid "Open in Web Browser" -msgstr "تشغيل ÙÙŠ Ø§Ù„Ù…ØªØµÙØ" +msgstr "Ø£ÙØªØÙ‡Ù ÙÙŠ Ø§Ù„Ù…ØªØµÙØ" #: editor/export_template_manager.cpp -#, fuzzy msgid "Copy Mirror URL" -msgstr "خطأ ÙÙŠ نسخ" +msgstr "انسخ عنوان URL المرآة" #: editor/export_template_manager.cpp msgid "Download and Install" @@ -4025,19 +4017,16 @@ msgid "Cancel" msgstr "إلغاء" #: editor/export_template_manager.cpp -#, fuzzy msgid "Cancel the download of the templates." -msgstr "لم نستطع ÙØªØ المل٠المضغوط المÙورد." +msgstr "إلغاء تØÙ…يل القوالب." #: editor/export_template_manager.cpp -#, fuzzy msgid "Other Installed Versions:" -msgstr "النسخة Ø§Ù„Ù…ÙØ«Ø¨ØªØ©:" +msgstr "نسخ Ù…ÙØ«Ø¨ØªØ© اخرى:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Uninstall Template" -msgstr "إلغاء التثبيت" +msgstr "إلغاء تثبيت القالب" #: editor/export_template_manager.cpp msgid "Select Template File" @@ -4111,6 +4100,9 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"لم ÙŠØªØ¹Ø±Ù Ø§Ù„Ù…ØØ±Ø± على امتداد الملÙ.\n" +"إذا تريد إعادة تسميته٠على أي ØØ§Ù„, ÙØ£Ø³ØªØ®Ø¯Ù… مدير Ù…Ù„ÙØ§Øª نظام التشغيل الخاص بك.\n" +"بعْدَ إعادة تسميته٠إلى امتداد غير معرÙ, المل٠لن يظهر ÙÙŠ Ø§Ù„Ù…ØØ±Ø± بعد الآن." #: editor/filesystem_dock.cpp msgid "" @@ -4204,9 +4196,8 @@ msgid "Collapse All" msgstr "طوي الكل" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Sort files" -msgstr "Ø¨ØØ« Ø§Ù„Ù…Ù„ÙØ§Øª" +msgstr "رتبْ Ø§Ù„Ù…Ù„ÙØ§Øª" #: editor/filesystem_dock.cpp msgid "Sort by Name (Ascending)" @@ -4225,9 +4216,8 @@ msgid "Sort by Type (Descending)" msgstr "صنّ٠وÙقاً للنوع (تنازلياً)" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Sort by Last Modified" -msgstr "آخر ما تم تعديله" +msgstr "رتب من آخر ما تم تعديله" #: editor/filesystem_dock.cpp msgid "Sort by First Modified" @@ -4313,6 +4303,7 @@ msgid "Folder:" msgstr "مجلد:" #: editor/find_in_files.cpp +#, fuzzy msgid "Filters:" msgstr "تنقيات:" @@ -4334,22 +4325,20 @@ msgid "Replace..." msgstr "استبدال..." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Replace in Files" -msgstr "إستبدال الكل" +msgstr "إستبدل ÙÙŠ كل Ø§Ù„Ù…ÙØ§Øª" #: editor/find_in_files.cpp msgid "Find: " -msgstr "إيجاد: " +msgstr "جدْ: " #: editor/find_in_files.cpp msgid "Replace: " msgstr "إستبدال: " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace All (NO UNDO)" -msgstr "إستبدال الكل" +msgstr "إستبدال الكل (لا رجوع)" #: editor/find_in_files.cpp msgid "Searching..." @@ -4531,7 +4520,7 @@ msgstr "إخلاء Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„ '%s'" #: editor/import_dock.cpp msgid "Reimport" -msgstr "إعادة إستيراد" +msgstr "إعادة الاستيراد" #: editor/import_dock.cpp msgid "" @@ -4540,6 +4529,10 @@ msgid "" "Selecting another resource in the FileSystem dock without clicking Reimport " "first will discard changes made in the Import dock." msgstr "" +"لديك تغييرات معلقة لم تطبقها ØØªÙ‰ الآن. اضغط على إعادة الاستيراد لتطبيق " +"التغييرات التي تم اجراؤها من خيارات الاستيراد.\n" +"اختيار مورد آخر ÙÙŠ رصي٠نظام-Ø§Ù„Ù…Ù„ÙØ§Øª من دون الضغط على إعادة الاستيراد أولاً " +"سيؤدي إلى اهمال التغييرات التي تم اجراؤها ÙÙŠ رصي٠الاستيراد." #: editor/import_dock.cpp msgid "Import As:" @@ -4566,21 +4559,19 @@ msgstr "ØªØØ°ÙŠØ±: هناك Ù…ÙÙ„ØÙ‚ات تستخدم هذا المورد، Ø msgid "" "Select a resource file in the filesystem or in the inspector to adjust " "import settings." -msgstr "" +msgstr "إختر مل٠مورد ÙÙŠ نظام Ø§Ù„Ù…Ù„ÙØ§Øª أو ÙÙŠ Ø§Ù„Ù…ÙØªÙØØµ لضبط إعدادت الاستيراد." #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "ÙØ´Ù„ تØÙ…يل المورد." #: editor/inspector_dock.cpp -#, fuzzy msgid "Copy Properties" -msgstr "خاصيات" +msgstr "إنسخ الخاصيات" #: editor/inspector_dock.cpp -#, fuzzy msgid "Paste Properties" -msgstr "خاصيات" +msgstr "إلصق الخاصيات" #: editor/inspector_dock.cpp msgid "Make Sub-Resources Unique" @@ -4605,23 +4596,21 @@ msgid "Save As..." msgstr "ØÙظ باسم..." #: editor/inspector_dock.cpp -#, fuzzy msgid "Extra resource options." -msgstr "ليس ÙÙŠ مسار الموارد." +msgstr "أختيارات اضاÙية للمورد." #: editor/inspector_dock.cpp #, fuzzy msgid "Edit Resource from Clipboard" -msgstr "ØªØØ±ÙŠØ± ØØ§Ùظة الموارد" +msgstr "ØªØØ±ÙŠØ± المورد من Ø§Ù„ØØ§Ùظة (Clipboard)" #: editor/inspector_dock.cpp msgid "Copy Resource" msgstr "نسخ الموارد" #: editor/inspector_dock.cpp -#, fuzzy msgid "Make Resource Built-In" -msgstr "إجعله Ù…ÙØ¯Ù…ج" +msgstr "إجعل المورد Ù…ÙØ¯Ù…ج" #: editor/inspector_dock.cpp msgid "Go to the previous edited object in history." @@ -4648,9 +4637,8 @@ msgid "Filter properties" msgstr "خصائص التصÙية" #: editor/inspector_dock.cpp -#, fuzzy msgid "Manage object properties." -msgstr "خصائص العنصر." +msgstr "إدارة خصائص الكائن." #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4806,8 +4794,8 @@ msgid "" "Activate to enable playback, check node warnings if activation fails." msgstr "" "شجرة الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ© غير ÙØ¹Ø§Ù„Ø©.\n" -"ÙØ¹Ù„ها لتتمكن من التشغيل playbackØŒ تÙقد التنبيه الذي تصدره العÙقدة إن ÙØ´Ù„ " -"Ø§Ù„ØªÙØ¹ÙŠÙ„." +"ÙØ¹Ù„ها لتتمكن من التشغيل playbackØŒ تÙقد تنبيهات/ØªØØ°ÙŠØ±Ø§Øª التي تصدرها Ø§Ù„ÙˆØØ¯Ø© " +"إذا ÙØ´Ù„ Ø§Ù„ØªÙØ¹ÙŠÙ„." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4867,6 +4855,7 @@ msgid "Remove BlendSpace2D Triangle" msgstr "إزالة مثلث الدمج Ø§Ù„ÙØ¶Ø§Ø¦ÙŠ Ø«Ù†Ø§Ø¦ÙŠ Ø§Ù„Ø¨ÙØ¹Ø¯ BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp +#, fuzzy msgid "BlendSpace2D does not belong to an AnimationTree node." msgstr "" "إن BlendSpace2D لا ينتمي إلى عÙقدة شجرة الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ© AnimationTree." @@ -4907,11 +4896,11 @@ msgstr "تعديل Ø§Ù„Ù…ÙØ±Ø´ØØ§Øª" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Output node can't be added to the blend tree." -msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© عÙقدة المخرجات إلى شجرة الدمج." +msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© مخرجات Ø§Ù„ÙˆØØ¯Ø© إلى شجرة الدمج." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Add Node to BlendTree" -msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة إلى شجرة الدمج BlendTree" +msgstr "أضÙÙ’ ÙˆØØ¯Ø© إلى شجرة الدمج" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Node Moved" @@ -5266,7 +5255,7 @@ msgstr "تمت إزالة الكائن" #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition Removed" -msgstr "تمت إزالة النقل" +msgstr "تمت إزالة الانتقال" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -5284,11 +5273,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp msgid "Create new nodes." -msgstr "إنشاء عÙقد جديدة." +msgstr "إنشاء ÙˆØØ¯Ø§Øª جديدة." #: editor/plugins/animation_state_machine_editor.cpp msgid "Connect nodes." -msgstr "توصيل عقد." +msgstr "ربط Ø§Ù„ÙˆØØ¯Ø§Øª." #: editor/plugins/animation_state_machine_editor.cpp msgid "Remove selected node or transition." @@ -5311,7 +5300,7 @@ msgstr "الانتقال: " #: editor/plugins/animation_state_machine_editor.cpp msgid "Play Mode:" -msgstr "وضع اللعب:" +msgstr "وضع التشغيل:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -5325,7 +5314,7 @@ msgstr "إسم جديد:" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp msgid "Scale:" -msgstr "تكبير/تصغير:" +msgstr "تغيير الأبعاد:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Fade In (s):" @@ -5400,11 +5389,11 @@ msgstr "Ù…Ø³Ø Ø§Ù„Ù…Ø¯Ø®Ù„Ù‡" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is valid." -msgstr "شجرة Ø§Ù„ØØ±ÙƒØ© صØÙŠØØ©." +msgstr "شجرة Ø§Ù„ØªØØ±ÙŠÙƒ ØµØ§Ù„ØØ©ÙŒ." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is invalid." -msgstr "شجرة Ø§Ù„ØØ±ÙƒØ© خاطئة." +msgstr "شجرة Ø§Ù„ØªØØ±ÙŠÙƒ غير ØµØ§Ù„ØØ©." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation Node" @@ -5500,7 +5489,7 @@ msgstr "ÙØ´Ù„ إتمام الطلب٫ الرمز الذي تم إرجاعه:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Cannot save response to:" -msgstr "لا يمكن الØÙظ بسبب:" +msgstr "لا يمكن ØÙظ الرد الى:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -5512,11 +5501,11 @@ msgstr "ÙØ´Ù„ الطلب٫ السبب هو اعادة التØÙˆÙŠÙ„ مرات Ø #: editor/plugins/asset_library_editor_plugin.cpp msgid "Redirect loop." -msgstr "اعادة توجيه ØÙ„قة التكرار." +msgstr "ØÙ„قة إعادة التوجيه." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, timeout" -msgstr "ÙØ´Ù„ الطلب ØŒ انتهت المهلة" +msgstr "ÙØ´Ù„ الطلب، انتهت المهلة" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Timeout." @@ -5548,7 +5537,7 @@ msgstr "خطأ ÙÙŠ تنزيل الأصول:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Downloading (%s / %s)..." -msgstr "جاري التنزيل (%s / %s)..." +msgstr "جاري تنزيل (%s / %s)..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Downloading..." @@ -5679,14 +5668,12 @@ msgid "Audio Preview Play/Pause" msgstr "معاينة الصوت شغّل/أوقÙ" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"لا يمكن ØªØØ¯ÙŠØ¯ مسار ØÙظ لصور خرائط الضوء.\n" -"اØÙظ مشهدك (لكي تØÙظ الصور ÙÙŠ المسار ذاته), او اختر مسار ØÙظ لخصائص خرائط " -"الضوء المعدة مسبقا." +"لا يمكن ØªØØ¯ÙŠØ¯ مسار الØÙظ لصور خرائط الضوء.\n" +"اØÙظ مشهدك ثم ØØ§ÙˆÙ„ مجدداً." #: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy @@ -5694,12 +5681,12 @@ msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Use " "In Baked Light' and 'Generate Lightmap' flags are on." msgstr "" -"لايوجد ميش لكي يتم تجهيزة. تاكد من انه ÙŠØØªÙˆÙŠ Ø¹Ù„Ù‰ Ù…Ù†ÙØ° UV2 Ùˆ ان زر الضوء " -"'المعد' Ù…ÙØ¹Ù„." +"لا يوجد ميش ليتم تجهيزهÙ. تأكد Ø£Ù†Ù‡Ù ÙŠØØªÙˆÙŠ Ø¹Ù„Ù‰ Ù…Ù†ÙØ° UV2 Ùˆ أن علامتا 'الأستخدام " +"ÙÙŠ الضوء المخبوز ' Ùˆ 'أنتج خريطة ضوئية' Ù…ÙØ¹Ù„تان." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." -msgstr "لا يمكن انشاء خرائط الضوء, تاكد من ان المسار صØÙŠØ." +msgstr "لا يمكن انشاء خرائط الضوء, تاكد من ان المسار صØÙŠØ Ùˆ قابل للكتابه." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" @@ -5710,22 +5697,26 @@ msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" -"بعض الشبكات غير ØµØ§Ù„ØØ©. تأكد من Ø§ØØªÙˆØ§Ø¡ قيم قناة UV2 داخل منطقة مربعة " +"بعض المجسمات غير ØµØ§Ù„ØØ©. تأكد من Ø§ØØªÙˆØ§Ø¡ قيم قنوات UV2 ÙÙŠ داخل منطقة مربعة " "[0.0ØŒ1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." -msgstr "تم تجميع Ù…ØØ±Ø± Godot دون دعم لتتبع الأشعة. لا يمكن بناء خرائط الإضاءة." +msgstr "" +"تم تجميع Ù…ØØ±Ø± غو-دوت بدون دعم لتتبع الأشعة. لذلك لا يمكن بناء خرائط ضوئية." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "إعداد خرائط الضوء" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" -msgstr "ØØ¯Ø¯ مل٠الخريطة الضوئية:" +msgstr "ØØ¯Ø¯ مل٠الخريطة الضوئية (lightmap):" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5738,7 +5729,7 @@ msgstr "تعديل اللقطة" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" -msgstr "معادل الشبكة:" +msgstr "مقدار Ø¥Ø²Ø§ØØ© الشبكة:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Step:" @@ -5746,7 +5737,7 @@ msgstr "خطوة الشبكة:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Primary Line Every:" -msgstr "الأخط الأولي ÙƒÙÙ„:" +msgstr "الخط الأساسي عند:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "steps" @@ -5754,7 +5745,7 @@ msgstr "خطوات" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "معادل الدوران:" +msgstr "مقدار Ø¥Ø²Ø§ØØ© الدوران:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" @@ -5774,7 +5765,7 @@ msgstr "إنشاء موجه عمودي جديد" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Remove Vertical Guide" -msgstr "Ù…Ø³Ø Ø§Ù„Ù…ÙˆØ¬Ù‡ العمودي" +msgstr "ازالة الموجه العمودي" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Horizontal Guide" @@ -5797,19 +5788,16 @@ msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" msgstr "تعيين Ø¥Ø²Ø§ØØ© \"CanvasItem \"%s المØÙˆØ±ÙŠØ© إلى (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "تدوير العنصر القماشي" +msgstr "تدوير%d من عناصر-Ø§Ù„Ù„ÙˆØØ©" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "تدوير العنصر القماشي" +msgstr "تدوير عنصر-Ø§Ù„Ù„ÙˆØØ© \"%s\" الى %d درجة" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "ØªØØ±ÙŠÙƒ العنصر القماشي" +msgstr "ØªØØ±ÙŠÙƒ مرساة عنصر-Ø§Ù„Ù„ÙˆØØ© \"%s\"" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" @@ -5820,24 +5808,20 @@ msgid "Resize Control \"%s\" to (%d, %d)" msgstr "تغيير ØØ¬Ù… عنصر التØÙƒÙ… \"Ùª s\" إلى (Ùª d،٪ d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "مقياس العنصر القماشي" +msgstr "تغيير ØØ¬Ù… عناصر-Ø§Ù„Ù„ÙˆØØ© %d" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "مقياس العنصر القماشي" +msgstr "تغيير ØØ¬Ù… عنصر-Ø§Ù„Ù„ÙˆØØ© \"%s\" الى (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "ØªØØ±ÙŠÙƒ العنصر القماشي" +msgstr "ØªØØ±ÙŠÙƒ %d من عناصر-Ø§Ù„Ù„ÙˆØØ§Øª" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "ØªØØ±ÙŠÙƒ العنصر القماشي" +msgstr "ØªØØ±ÙŠÙƒ عنصر-Ø§Ù„Ù„ÙˆØØ© \"%s\" الى (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5849,7 +5833,7 @@ msgstr "ØÙدد القÙÙ„" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Grouped" -msgstr "المجموعات" +msgstr "Ù…ÙØ¬ÙŽÙ…عَ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5951,24 +5935,23 @@ msgstr "تغيير المرتكزات" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "" "Project Camera Override\n" "Overrides the running project's camera with the editor viewport camera." msgstr "" -"تجاوز كاميرا اللعبة.\n" -"تجاوز كاميرا اللعبة عن طريق كاميرا إطار العرض ÙÙŠ Ø§Ù„Ù…ØØ±Ø±." +"تجاوز كاميرا المشروع.\n" +"يتجاوز كاميرا المشروع Ùˆ يستخدم بدلها كاميرا إطار العرض ÙÙŠ Ø§Ù„Ù…ØØ±Ø±." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "" "Project Camera Override\n" "No project instance running. Run the project from the editor to use this " "feature." msgstr "" "تجاوز كاميرا المشروع.\n" -"ليس هناك مشروع يعمل ØØ§Ù„ياً. شغل المشروع من Ø§Ù„Ù…ØØ±Ø± لاستعمال هذه الميزة." +"ليس هناك نسخة من المشروع قيد التشغيل ØØ§Ù„ياً. قم بتشغيل المشروع من Ø§Ù„Ù…ØØ±Ø± " +"لاستعمال هذه الميزة." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6034,9 +6017,8 @@ msgstr "ØªØØ¯ÙŠØ¯ الوضع" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Drag: Rotate selected node around pivot." -msgstr "ازالة الكائن Ø§Ù„Ù…ØØ¯Ø¯ او الإنتقال Ø§Ù„Ù…ØØ¯Ø¯." +msgstr "Ø£Ø³ØØ¨Ù’: تدوير Ø§Ù„ÙˆØØ¯Ø© Ø§Ù„Ù…ØØ¯Ø¯Ø© ØÙˆÙ„ النقطة المØÙˆØ±ÙŠØ©." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+Drag: Move selected node." @@ -6047,15 +6029,14 @@ msgid "Alt+Drag: Scale selected node." msgstr "Alt+Ø³ØØ¨: لتغيير ØØ¬Ù… Ø§Ù„ÙˆØØ¯Ø© Ø§Ù„Ù…ØØ¯Ø¯Ø©." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "V: Set selected node's pivot position." -msgstr "ازالة الكائن Ø§Ù„Ù…ØØ¯Ø¯ او الإنتقال Ø§Ù„Ù…ØØ¯Ø¯." +msgstr "V: تعيين نقطة المØÙˆØ± Ù„Ù„ÙˆØØ¯Ø© Ø§Ù„Ù…ØØ¯Ø¯Ø©." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Alt+RMB: Show list of all nodes at position clicked, including locked." msgstr "" -"Alt + زر Ø§Ù„ÙØ£Ø±Ø© الأيمن: أظهر قائمة لكل Ø§Ù„ÙˆØØ¯Ø§Øª ÙÙŠ المنطقة المضغوطة، متضمنة " +"Alt + زر-Ø§Ù„ÙØ£Ø±Ø©-الأيمن: أظهر قائمة لكل Ø§Ù„ÙˆØØ¯Ø§Øª ÙÙŠ المنطقة المضغوطة، متضمنة " "المقÙلة منها." #: editor/plugins/canvas_item_editor_plugin.cpp @@ -6079,7 +6060,7 @@ msgstr "وضع Ø§Ù„ØªØØ¬ÙŠÙ…" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Shift: Scale proportionally." -msgstr "" +msgstr "Shift: التكبير بالتساوي." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6180,7 +6161,7 @@ msgstr "Ù‚ÙÙ„ العنصر Ø§Ù„Ù…ØØ¯Ø¯ ÙÙŠ هذا المكان (لا يمكن #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Lock Selected Node(s)" -msgstr "ØÙدد القÙÙ„" +msgstr "Ø¥Ù‚ÙØ§Ù„ Ø§Ù„ÙˆØØ¯Ø©(Ø§Ù„ÙˆØØ¯Ø§Øª) Ø§Ù„Ù…ØØ¯Ø¯Ø©" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6191,7 +6172,7 @@ msgstr "إلغاء القÙÙ„ عن هذا العنصر (يمكن ØªØØ±ÙŠÙƒÙ‡ ا #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Unlock Selected Node(s)" -msgstr "ØÙدد إلغاء القÙÙ„" +msgstr "إلغاء Ùقل Ø§Ù„ÙˆØØ¯Ø©(Ø§Ù„ÙˆØØ¯Ø§Øª) Ø§Ù„Ù…ØØ¯Ø¯Ø©" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6202,7 +6183,7 @@ msgstr "تأكد من أن الطÙÙ„ للعنصر غير قابل Ù„Ù„ØªØØ¯ÙŠØ #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Group Selected Node(s)" -msgstr "ØÙدد التجميع" +msgstr "إجمعْ Ø§Ù„ÙˆØØ¯Ø©(Ø§Ù„ÙˆØØ¯Ø§Øª) Ø§Ù„Ù…ØØ¯Ø¯Ø©" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6213,7 +6194,7 @@ msgstr "إرجاع مقدرة ØªØØ¯ÙŠØ¯ الطÙÙ„ للعنصر." #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Ungroup Selected Node(s)" -msgstr "ØÙدد إلغاء التجميع" +msgstr "إلغاء جمعْ Ø§Ù„ÙˆØØ¯Ø©(Ø§Ù„ÙˆØØ¯Ø§Øª) Ø§Ù„Ù…ØØ¯Ø¯Ø©" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton Options" @@ -6325,9 +6306,8 @@ msgid "Clear Pose" msgstr "إخلاء الوضع" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Add Node Here" -msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة" +msgstr "أضÙÙ’ ÙˆØØ¯Ø© هنا" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -6402,7 +6382,7 @@ msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© ÙˆØØ¯Ø§Øª متعددة بدون Ø§Ù„ÙˆØØ¯Ø©Ø§ #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" -msgstr "إنشاء عقدة" +msgstr "إنشاء ÙˆØØ¯Ø©" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -6472,8 +6452,9 @@ msgstr "قناع الانبعاث" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy msgid "Solid Pixels" -msgstr "البكسيلات الأساسية Solid Pixels" +msgstr "البكسيلات الأساسية (Solid Pixels)" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -6630,9 +6611,8 @@ msgid "Couldn't create a single convex collision shape." msgstr "لم يتم إنشاء شكل Ù…ØØ¯Ø¨ تصادمي ÙˆØÙŠØ¯." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Simplified Convex Shape" -msgstr "أنشئ شكل Ù…ØØ¯Ø¨ ÙˆØÙŠØ¯" +msgstr "إنشاء شكل Ù…ÙØØ¯Ø¨ مبسط" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Single Convex Shape" @@ -6732,9 +6712,8 @@ msgstr "" "هذا هو الخيار الأسرع (لكنه الأقل دقة) للكش٠عن وقوع التصادم." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Simplified Convex Collision Sibling" -msgstr "إنشاء شقيق تصادم Ù…ØØ¯Ø¨ Ù…ÙØ±Ø¯" +msgstr "إنشاء شقيق تصادم Ù…ÙØØ¯Ø¨ مبسط" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6751,14 +6730,13 @@ msgid "Create Multiple Convex Collision Siblings" msgstr "إنشاء أشقاء تصادم Ù…ØØ¯Ø¨ متعددة" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "" "Creates a polygon-based collision shape.\n" "This is a performance middle-ground between a single convex collision and a " "polygon-based collision." msgstr "" -"إنشاء شكل تصادمي Ù…ÙØ¶Ù„عي الهيئة.\n" -"هذا الخيار \\Ù…ÙØªÙˆØ³Ø· الأداء بين الخيارين أعلاه." +"ينشئ شكل تصادم قائم على المضلع.\n" +"هذا الخيار Ù…ÙØªÙˆØ³Ø· الأداء بين التصادم Ù…ÙØØ¯Ø¨ مبسط ÙˆØÙŠØ¯ Ùˆ تصادم قائم على المضلع." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." @@ -6825,14 +6803,12 @@ msgid "Remove Selected Item" msgstr "Ù…Ø³Ø Ø§Ù„Ø¹Ù†ØµØ± Ø§Ù„Ù…ØØ¯Ø¯" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "Import from Scene (Ignore Transforms)" -msgstr "إستيراد من المشهد" +msgstr "إستيراد من المشهد (تجاهل التØÙˆÙŠÙ„ات)" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "Import from Scene (Apply Transforms)" -msgstr "إستيراد من المشهد" +msgstr "إستيراد من المشهد (مع وضع التØÙˆÙŠÙ„ات)" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Update from Scene" @@ -6950,12 +6926,11 @@ msgstr "توليد Rect الرؤية" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" -msgstr "لا يمكن إنشاء سوى نقطة ÙˆØÙŠØ¯Ø© داخل ParticlesMaterial معالج المواد" +msgstr "لا يمكن إنشاء سوى نقطة ÙˆØÙŠØ¯Ø© داخل معالج المواد لـ ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "تØÙˆÙŠÙ„ إلى %s" +msgstr "ØÙˆÙ„Ù’ إلى جسيمات-ثنائية-Ø§Ù„Ø¨ÙØ¹Ø¯-Ù„ÙˆØØ¯Ø©-المعالجة-المركزية (CPUParticles2D)" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7020,7 +6995,7 @@ msgstr "ولد رؤية AABB" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" -msgstr "إزالة نقطة من المنØÙ†Ù‰" +msgstr "إزالة النقطة من المنØÙ†Ù‰" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Out-Control from Curve" @@ -7247,18 +7222,16 @@ msgid "Move Points" msgstr "ØªØØ±ÙŠÙƒ النقاط" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Ø³ØØ¨: للتدوير" +msgstr "Command: استدارة" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: ØªØØ±ÙŠÙƒ الكÙÙ„" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: ØªØØ¬ÙŠÙ…" +msgstr "Shift+Command: تغيير Ø§Ù„ØØ¬Ù…" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -7304,14 +7277,12 @@ msgid "Radius:" msgstr "نص٠القطر:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "إنشاء Ù…ÙØ¶Ù„ع ÙˆUV" +msgstr "إنسخ Ø§Ù„Ù…ÙØ¶Ù„ع إلى UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "تØÙˆÙŠÙ„ إلى Ù…ÙØ¶Ù„ع ثنائي الأبعاد" +msgstr "إنسخ ال UV إلى Ø§Ù„Ù…ÙØ¶Ù„ع" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -7412,38 +7383,32 @@ msgid "ResourcePreloader" msgstr "مورد Ù…ØÙ…Ù„ Ø³Ù„ÙØ§Ù‹" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Flip Portals" -msgstr "القلب Ø£Ùقياً" +msgstr "إقلبْ البوابات" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Room Generate Points" -msgstr "عدد النقاط المولدة" +msgstr "تم توليد نقاط Ù„Ù„ØºØ±ÙØ©" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Generate Points" -msgstr "عدد النقاط المولدة" +msgstr "قم بتوليد نقاط" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Flip Portal" -msgstr "القلب Ø£Ùقياً" +msgstr "إقلبْ البوابة" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Occluder Set Transform" -msgstr "Ù…ØÙˆ التَØÙŽÙˆÙ‘Ù„" +msgstr "تم تغيير تØÙˆÙŠÙ„ ال Occluder" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Center Node" -msgstr "إنشاء عقدة" +msgstr "ØØ±ÙƒÙ’ Ø§Ù„ÙˆØØ¯Ø© للمنتصÙ" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "لا تملك شجرة الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ© مساراً لمشغل الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ©" +msgstr "لا تملك شجرة Ø§Ù„ØªØØ±ÙŠÙƒ مساراً لمشغل الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ©" #: editor/plugins/root_motion_editor_plugin.cpp msgid "Path to AnimationPlayer is invalid" @@ -7871,9 +7836,8 @@ msgid "Find in Files..." msgstr "Ø¬ÙØ¯ ÙÙŠ Ø§Ù„Ù…Ù„ÙØ§Øª..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Replace in Files..." -msgstr "استبدال..." +msgstr "إستبدل ÙÙŠ Ø§Ù„Ù…Ù„ÙØ§Øª..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" @@ -7949,14 +7913,12 @@ msgid "Skeleton2D" msgstr "هيكل ثنائي Ø§Ù„Ø¨ÙØ¹Ø¯" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Reset to Rest Pose" -msgstr "ØªØØ¯ÙŠØ¯ العظام لتكون ÙÙŠ وضعية Ø§Ù„Ø±Ø§ØØ©" +msgstr "إعادة تعيين العظام للوضعية Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© (Rest Pose)" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Overwrite Rest Pose" -msgstr "الكتابة Ø§Ù„Ù…ÙØªØ±Ø§ÙƒØ¨Ø© Overwrite" +msgstr "الكتابة Ùوق الوضعية Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© (Rest Pose)" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Create physical bones" @@ -8252,7 +8214,13 @@ msgid "Cinematic Preview" msgstr "معاينة سينمائية" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "غير Ù…ØªÙˆØ§ÙØ± عند استخدام الخرج البصري GLES2 ." #: editor/plugins/spatial_editor_plugin.cpp @@ -8288,9 +8256,8 @@ msgid "Freelook Slow Modifier" msgstr "Ù…ÙØ¹Ø¯Ù‘Ù„ تباطؤ الرؤية الØÙرة" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Toggle Camera Preview" -msgstr "غيّر ØØ¬Ù… الكاميرا" +msgstr "ØªÙØ¹ÙŠÙ„/تعطيل العرض المسبق للكاميرا" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Rotation Locked" @@ -8300,7 +8267,8 @@ msgstr "تدوير الرؤية مقÙول" msgid "" "To zoom further, change the camera's clipping planes (View -> Settings...)" msgstr "" -"للتكبير بشكل أكبر ØŒ قم بتغيير مستويات اقتصاص الكاميرا (عرض -> الإعدادات ...)" +"للتكبير بشكل أكبر ØŒ قم بتغيير مستويات اقتصاص (clipping planes) للكاميرا (عرض " +"-> الإعدادات ...)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -8335,9 +8303,8 @@ msgstr "" "السينية\")." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Nodes to Floor" -msgstr "Ù…ØØ§Ø°Ø§Ø© العÙقد إلى الأرضية" +msgstr "Ù…ØØ§Ø°Ø§Ø© Ø§Ù„ÙˆØØ¯Ø§Øª إلى الأرضية" #: editor/plugins/spatial_editor_plugin.cpp msgid "Couldn't find a solid floor to snap the selection to." @@ -8429,9 +8396,8 @@ msgid "Increase Field of View" msgstr "زدْ مجال الرؤية" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Reset Field of View to Default" -msgstr "إعادة التعيين إلى Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" +msgstr "إعادة تعيين مجال الرؤية إلى Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8713,9 +8679,8 @@ msgid "New Animation" msgstr "رسومية Ù…ØªØØ±ÙƒØ© جديدة" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Speed:" -msgstr "السرعة (إطار Ù. Ø«. FPS):" +msgstr "السرعة:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" @@ -8806,9 +8771,8 @@ msgid "Step:" msgstr "الخطوة:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Separation:" -msgstr "التعدادات:" +msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" @@ -8888,12 +8852,11 @@ msgstr "ØªØØ¯ÙŠØ« Ø§Ù„Ù…ØØ±Ø±" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Finalizing" -msgstr "جاري التØÙ„يل" +msgstr "جاري إنهاء الاستيراد" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Filter:" -msgstr "تنقيات:" +msgstr "تصÙية:" #: editor/plugins/theme_editor_plugin.cpp msgid "With Data" @@ -9188,6 +9151,11 @@ msgstr "ØØ°Ù المورد:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "إعادة تسمية المورد" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "استيراد الموضوع Theme" @@ -9200,9 +9168,8 @@ msgid "Filter the list of types or create a new custom type:" msgstr "قم بتصÙية قائمة الأنواع أو قم بأنشاء نوع جديد:" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Available Node-based types:" -msgstr "Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…ØªÙˆØ§ÙØ±Ø©:" +msgstr "أنواع المستندة-إلى-Ø§Ù„ÙˆØØ¯Ø§Øª Ø§Ù„Ù…ØªÙˆØ§ÙØ±Ø©:" #: editor/plugins/theme_editor_plugin.cpp msgid "Type name is empty!" @@ -9237,6 +9204,20 @@ msgstr "" "المشابهة ÙÙŠ جميع صناديق المظهر من هذا النوع." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Ø¥Ø¶Ø§ÙØ© نوع للعنصر" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "تØÙŠØ¯ نوع المتغير" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "تعديل النوع الأساس" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "أظهر Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ" @@ -9253,8 +9234,19 @@ msgid "Override all default type items." msgstr "تجاوز جميع أنواع العناصر Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ©." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Ø¥Ø¶Ø§ÙØ© نوع للعنصر" +#, fuzzy +msgid "Base Type" +msgstr "تعديل النوع الأساس" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -9263,16 +9255,15 @@ msgstr "الموضوع:" #: editor/plugins/theme_editor_plugin.cpp msgid "Manage Items..." -msgstr "إدارة الأنواع..." +msgstr "إدارة العناصر..." #: editor/plugins/theme_editor_plugin.cpp msgid "Add, remove, organize and import Theme items." -msgstr "Ø£Ø¶ÙØŒ أزل، رتّب واستورد عناصر القالب." +msgstr "أضÙÙ’ØŒ أزلْ، رتّبْ واستوردْ عناصر القالب." #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Add Preview" -msgstr "عرض" +msgstr "Ø¥Ø¶Ø§ÙØ© عرض مسبق" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -9611,7 +9602,7 @@ msgstr "نسخ قناع-Ø§Ù„Ø¨ÙØª." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Paste bitmask." -msgstr "لصق قناع Ø§Ù„Ø¨ÙØª" +msgstr "لصق قناع-Ø§Ù„Ø¨ÙØª." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Erase bitmask." @@ -9977,30 +9968,16 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "ÙØ±ÙˆØ¹" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Create New Branch" -msgstr "إنشاء مشروع جديد" +msgstr "إنشاء ÙØ±Ø¹ جديد" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remove Branch" -msgstr "ØØ°Ù مسار Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "إزالة ÙØ±Ø¹" #: editor/plugins/version_control_editor_plugin.cpp msgid "Branch Name" @@ -11284,7 +11261,7 @@ msgstr "Ù…ÙØØ±Ùƒ الإخراج البصري:" #: editor/project_manager.cpp msgid "OpenGL ES 3.0" -msgstr "OpenGL ES 3.0" +msgstr "خلÙية بدعم OpenGL ES 3.0" #: editor/project_manager.cpp msgid "Not supported by your GPU drivers." @@ -11304,7 +11281,7 @@ msgstr "" #: editor/project_manager.cpp msgid "OpenGL ES 2.0" -msgstr "OpenGL ES 2.0" +msgstr "خلÙية بدعم OpenGL ES 2.0" #: editor/project_manager.cpp msgid "" @@ -11412,12 +11389,10 @@ msgid "Are you sure to run %d projects at once?" msgstr "هل أنت متأكد من ÙØªØ %d مشاريع مرّة ÙˆØ§ØØ¯Ø©ØŸ" #: editor/project_manager.cpp -#, fuzzy msgid "Remove %d projects from the list?" -msgstr "أتريد إزالة %d من المشاريع من القائمة؟" +msgstr "أتريد إزالة %d مشروع من القائمة؟" #: editor/project_manager.cpp -#, fuzzy msgid "Remove this project from the list?" msgstr "أتريد إزالة هذا المشروع من القائمة؟" @@ -12151,7 +12126,7 @@ msgstr "ÙØµÙ„ النص البرمجي" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." -msgstr "لا يمكن إجراء هذه العملية على جذر الشجرة." +msgstr "لا يمكن إجراء هذه العملية على الجذر الرئيسي." #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" @@ -12433,9 +12408,9 @@ msgid "" "every time it updates.\n" "Switch back to the Local scene tree dock to improve performance." msgstr "" -"إذا تم ØªØØ¯ÙŠØ¯Ù‡ ØŒ ÙØ³ÙŠØ¤Ø¯ÙŠ Ø´Ø¬Ø±Ø© المشهد إلى توق٠المشروع ÙÙŠ كل مرة يتم Ùيها " -"ØªØØ¯ÙŠØ«Ù‡.\n" -"قم بالتبديل مرة أخرى إلى رصي٠شجرة المشهد المØÙ„ÙŠ Ù„ØªØØ³ÙŠÙ† الأداء." +"إذا تم ØªØØ¯ÙŠØ¯Ù‡ ØŒ ÙØ³ÙŠØ¤Ø¯ÙŠ Ø´Ø¬Ø±Ø© المشهد البعيده (Remote) إلى توق٠المشروع ÙÙŠ كل " +"مرة يتم ØªØØ¯ÙŠØ« المشروع.\n" +"قمْ بالتبديل مرة أخرى إلى رصي٠شجرة المشهد المØÙ„ÙŠ Ù„ØªØØ³ÙŠÙ† الأداء." #: editor/scene_tree_dock.cpp msgid "Local" @@ -12750,6 +12725,11 @@ msgid "Stack Frames" msgstr "ØØ²Ù… الإطارات Stack Frames" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "تنقية البلاطات" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Ù…Ùنشئ Ø§Ù„Ù…Ù„ÙØ§Øª التعريÙية Profiler" @@ -13007,7 +12987,7 @@ msgstr "مكتبات: " #: modules/gdnative/register_types.cpp msgid "GDNative" -msgstr "GDNative" +msgstr "لغة البرمجة GDNative" #: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" @@ -13491,7 +13471,7 @@ msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة (عÙقد) من الشجرة" +msgstr "أضÙÙ’ ÙˆØØ¯Ø©(ÙˆØØ¯Ø§Øª) من الشجرة" #: modules/visual_script/visual_script_editor.cpp msgid "" @@ -14008,9 +13988,8 @@ msgid "Running on %s" msgstr "يعمل على %s" #: platform/android/export/export_plugin.cpp -#, fuzzy msgid "Exporting APK..." -msgstr "تصدير APK..." +msgstr "جاري تصدير APK..." #: platform/android/export/export_plugin.cpp msgid "Uninstalling..." @@ -14022,9 +14001,8 @@ msgid "Installing to device, please wait..." msgstr "يستقبل المرايا، من ÙØ¶Ù„Ùƒ إنتظر..." #: platform/android/export/export_plugin.cpp -#, fuzzy msgid "Could not install to device: %s" -msgstr "لم يتمكن من التثبيت على الجهاز: %s" +msgstr "لم نتمكن من التثبيت على الجهاز: %s" #: platform/android/export/export_plugin.cpp #, fuzzy @@ -14088,7 +14066,7 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Missing 'platform-tools' directory!" -msgstr "دليل Ù…Ù„ÙØ§Øª \"أدوات-المنصة platform-tools\" Ù…Ùقود!" +msgstr "المجلد 'أدوات-المنصة (platform-tools)' Ù…Ùقود!" #: platform/android/export/export_plugin.cpp msgid "Unable to find Android SDK platform-tools' adb command." @@ -14122,9 +14100,10 @@ msgstr "اسم Ø±ÙØ²Ù…Ø© غير صالØ:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"ÙˆØØ¯Ø© \"GodotPaymentV3\" المضمنة ÙÙŠ إعدادات المشروع \"android / modules\" غير " -"ØµØ§Ù„ØØ© (تم تغييره ÙÙŠ Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14205,9 +14184,8 @@ msgid "'apksigner' returned with error #%d" msgstr "أعاد 'apksigner' الخطأ التالي #%d" #: platform/android/export/export_plugin.cpp -#, fuzzy msgid "Verifying %s..." -msgstr "التأكيد من %s..." +msgstr "جاري التØÙ‚Ù‚ من %s..." #: platform/android/export/export_plugin.cpp msgid "'apksigner' verification of %s failed." @@ -14228,9 +14206,8 @@ msgid "APK Expansion not compatible with Android App Bundle." msgstr "توسيع APK غير متواÙÙ‚ مع ØØ²Ù…Ø© تطبيق الأندرويد Android App Bundle." #: platform/android/export/export_plugin.cpp -#, fuzzy msgid "Invalid filename! Android APK requires the *.apk extension." -msgstr "إسم مل٠غير صالØ! يتطلب مل٠اندرويد APK اللاØÙ‚Ø© â€.*.apk" +msgstr "أسم المل٠غير صالØ! يتطلب مل٠اندرويد APK أمتداد *.apk لتعمل." #: platform/android/export/export_plugin.cpp msgid "Unsupported export format!\n" @@ -14328,9 +14305,8 @@ msgid "Adding files..." msgstr "Ø¥Ø¶Ø§ÙØ© %s..." #: platform/android/export/export_plugin.cpp -#, fuzzy msgid "Could not export project files" -msgstr "لا يمكن كتابة الملÙ" +msgstr "لم نتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع" #: platform/android/export/export_plugin.cpp msgid "Aligning APK..." @@ -14512,9 +14488,7 @@ msgstr "ينشئ الصورة المصغرة" #: platform/osx/export/export.cpp #, fuzzy msgid "Could not find template app to export:" -msgstr "" -"لم يتم إيجاد قالب APK للتصدير:\n" -"%s" +msgstr "لم يتم إيجاد تطبيق القالب (Template app) للتصدير:" #: platform/osx/export/export.cpp msgid "" @@ -14730,19 +14704,16 @@ msgid "" msgstr "" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "مسار غير صالØ." +msgstr "مسار الأيقونة غير صالØ:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "صيغة غير ØµØ§Ù„ØØ©." +msgstr "إصدار المل٠غير صالØ:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "Ù…ÙØ¹Ø±Ù GUID (Ø§Ù„Ù…ÙØ¹Ø±Ù‘Ù Ø§Ù„ÙØ±ÙŠØ¯ العالمي) للمنتج غير صالØ." +msgstr "Ù…ÙØ¹Ø±Ù GUID (Ø§Ù„Ù…ÙØ¹Ø±Ù‘Ù Ø§Ù„ÙØ±ÙŠØ¯ العالمي) للمنتج غير صالØ:" #: scene/2d/animated_sprite.cpp msgid "" @@ -15268,7 +15239,7 @@ msgstr "" #: scene/3d/physics_joint.cpp msgid "Joint is not connected to any PhysicsBodies" -msgstr "" +msgstr "Ø§Ù„Ù…ÙØµÙ„ غير متصل لأي الاجسام الÙيزيائية (PhysicsBodies)" #: scene/3d/physics_joint.cpp msgid "Node A and Node B must be different PhysicsBodies" @@ -15332,7 +15303,7 @@ msgstr "" #: scene/3d/room_manager.cpp msgid "There should only be one RoomManager in the SceneTree." -msgstr "" +msgstr "يجب ØªÙˆØ§ÙØ± مدير-غر٠(RoomManager) ÙˆØ§ØØ¯ Ùقط ÙÙŠ شجرة المشهد." #: scene/3d/room_manager.cpp msgid "" @@ -15423,9 +15394,11 @@ msgstr "" "اضبط وضع الخلÙية لهذه البيئة على Ù„ÙˆØØ© (Canvas) (للمشاهد ثنائية Ø§Ù„Ø¨ÙØ¹Ø¯)." #: scene/animation/animation_blend_tree.cpp +#, fuzzy msgid "On BlendTree node '%s', animation not found: '%s'" msgstr "" -"ÙÙŠ عقدة خليط-الشجرة (BlendTree) '%s'ØŒ لم يتم العثور على الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©:'%s '" +"ÙÙŠ عقدة خليط-الشجرة (BlendTree) '%s'ØŒ لم يتم العثور على الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©: '%s " +"'" #: scene/animation/animation_blend_tree.cpp msgid "Animation not found: '%s'" @@ -15467,8 +15440,8 @@ msgstr "العÙقدة الرئيسة Ù„Ù…ÙØ´ØºÙ„ الرسومات Ø§Ù„Ù…ØªØØ± #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" -"لقد تم إهمال هذه العÙقدةز استخدم شجرة الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ© AnimationTree بدلاً عن " -"ذلك." +"لقد تم إهمال هذه Ø§Ù„ÙˆØØ¯Ø©, أستخدم شجرة الرسومات Ø§Ù„Ù…ØªØØ±ÙƒØ© (AnimationTree) بدلاً " +"عنها." #: scene/gui/color_picker.cpp #, fuzzy @@ -15569,7 +15542,7 @@ msgstr "" #: scene/gui/tree.cpp msgid "(Other)" -msgstr "(أخرى)" +msgstr "(آخر)" #: scene/main/scene_tree.cpp msgid "" diff --git a/editor/translations/az.po b/editor/translations/az.po index 46738301a9..c958bc1f45 100644 --- a/editor/translations/az.po +++ b/editor/translations/az.po @@ -1519,6 +1519,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2873,7 +2877,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5525,6 +5529,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7966,7 +7974,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8845,6 +8858,11 @@ msgid "Select Another Theme Resource:" msgstr "ÆvÉ™zetmÉ™ mÉ™nbÉ™yini axtarın:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "MÉ™nbÉ™" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8893,6 +8911,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8909,7 +8939,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "%s növünü dÉ™yiÅŸdirin" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9589,18 +9630,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "UyÄŸunlaÅŸmalar:" @@ -12163,6 +12192,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Siqnalları filtirlÉ™" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13455,6 +13489,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 7bb426d010..a91ee554b6 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -1471,6 +1471,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ðеправилно име." @@ -2843,7 +2847,7 @@ msgstr "" msgid "Add a new scene." msgstr "ДобавÑне на нови нова Ñцена." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Сцена" @@ -5530,6 +5534,10 @@ msgid "Bake Lightmaps" msgstr "Изпичане на карти на оÑветеноÑÑ‚" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Изберете файл за изпичане на карта на оÑветеноÑÑ‚:" @@ -7984,7 +7992,13 @@ msgid "Cinematic Preview" msgstr "КинематографÑки предварителен преглед" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Ðе е налично при използване на изчертаване чрез GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -8872,6 +8886,11 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "РеÑурÑ" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Друга тема" @@ -8918,6 +8937,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "ДобавÑне на тип елемент" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Показване на Ñтандартните" @@ -8934,8 +8965,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "ДобавÑне на тип елемент" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9620,18 +9661,6 @@ msgid "Commit list size" msgstr "Размер на ÑпиÑъка Ñ Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Клони" @@ -12198,6 +12227,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Филтриране на плочките" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13498,9 +13532,10 @@ msgstr "Ðеправилно име на пакет:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Ð’ наÑтройките на проекта, раздел „android/modules“, приÑÑŠÑтва неправилен " -"модул „GodotPaymentV3“ (това е променено във Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/bn.po b/editor/translations/bn.po index b8b8ccbf84..514a488c1f 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -1526,6 +1526,11 @@ msgstr "ডিফলà§à¦Ÿ বাস লেআউট লোড করà§à¦¨à¥¤" msgid "Create a new Bus Layout." msgstr "নতà§à¦¨ বাস লেআউট তৈরি করà§à¦¨à¥¤" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "অডিও বাস লেআউট ওপেন করà§à¦¨" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম।" @@ -3050,7 +3055,7 @@ msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড" msgid "Add a new scene." msgstr "নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমূহ যোগ করà§à¦¨à¥¤" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "দৃশà§à¦¯" @@ -6022,6 +6027,10 @@ msgid "Bake Lightmaps" msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "লাইটমà§à¦¯à¦¾à¦ª বেক ফাইলটি নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨:" @@ -8730,7 +8739,12 @@ msgid "Cinematic Preview" msgstr "মেস লাইবà§à¦°à§‡à¦°à¦¿ তৈরি হচà§à¦›à§‡" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9717,6 +9731,11 @@ msgstr "রিসোরà§à¦¸ অপসারণ করà§à¦¨" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "রিসোরà§à¦¸ পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" @@ -9771,6 +9790,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "বসà§à¦¤à§ যোগ করà§à¦¨" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "চলক/à¦à§‡à¦°à¦¿à§Ÿà§‡à¦¬à¦² সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "লোড ডিফলà§à¦Ÿ" @@ -9789,8 +9823,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "বসà§à¦¤à§ যোগ করà§à¦¨" +msgid "Base Type" +msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10567,18 +10611,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "মিলসমূহ:" @@ -13405,6 +13437,11 @@ msgid "Stack Frames" msgstr "ফà§à¦°à§‡à¦®à¦¸à¦®à§‚হ সà§à¦¤à§‚প করà§à¦¨" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "দà§à¦°à§à¦¤ ফাইলসমূহ ফিলà§à¦Ÿà¦¾à¦° করà§à¦¨..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à¦¾à¦°" @@ -14852,6 +14889,9 @@ msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ কà§à¦²à¦¾à¦¸ নাম" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/br.po b/editor/translations/br.po index 574adeb121..325635fe0e 100644 --- a/editor/translations/br.po +++ b/editor/translations/br.po @@ -1454,6 +1454,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2805,7 +2809,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5449,6 +5453,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7881,7 +7889,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8756,6 +8769,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8802,6 +8819,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8818,7 +8847,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9494,18 +9533,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12060,6 +12087,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13348,6 +13379,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ca.po b/editor/translations/ca.po index 144cbbad2e..c4208b23c4 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -1505,6 +1505,11 @@ msgstr "Carrega el disseny del Bus predeterminat." msgid "Create a new Bus Layout." msgstr "Crea un nou Disseny de Bus." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Obre un Disseny de Bus d'Àudio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nom no và lid." @@ -2970,7 +2975,7 @@ msgstr "Commutar el Mode Lliure de Distraccions." msgid "Add a new scene." msgstr "Afegeix una escena nova." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Escena" @@ -5795,6 +5800,10 @@ msgid "Bake Lightmaps" msgstr "Precalcular Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Seleccioneu un Fitxer de Plantilla:" @@ -8365,7 +8374,13 @@ msgid "Cinematic Preview" msgstr "Previsualització Cinemà tica" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "No disponible quan s'utilitza el renderitzador GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9311,6 +9326,11 @@ msgstr "Elimina el Recurs:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Reanomena el Recurs" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Importa un Tema" @@ -9365,6 +9385,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Afegeix un Element" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Estableix el Tipus de Variable" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Modifica el Tipus de Base" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Carrega Valors predeterminats" @@ -9383,8 +9418,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Afegeix un Element" +msgid "Base Type" +msgstr "Modifica el Tipus de Base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -10135,18 +10180,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Coincidències:" @@ -12991,6 +13024,11 @@ msgid "Stack Frames" msgstr "Fotogrames de la Pila" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrar tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Perfilador" @@ -14406,6 +14444,9 @@ msgstr "El nom del paquet no és và lid:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/cs.po b/editor/translations/cs.po index 3908694615..9094006744 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -34,7 +34,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-10 07:50+0000\n" +"PO-Revision-Date: 2022-03-08 08:59+0000\n" "Last-Translator: ZbynÄ›k <zbynek.fiala@gmail.com>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" @@ -43,7 +43,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1503,6 +1503,11 @@ msgstr "NaÄÃst výchozà rozvrženà sbÄ›rnice." msgid "Create a new Bus Layout." msgstr "VytvoÅ™it nové rozvrženà sbÄ›rnice." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "OtevÅ™Ãt rozloženà audio sbÄ›rnice" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Neplatný název." @@ -2936,7 +2941,7 @@ msgstr "Zapnout nerozptylujÃcà režim." msgid "Add a new scene." msgstr "PÅ™idat novou scénu." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scéna" @@ -4721,7 +4726,7 @@ msgstr "Odstranit polygon a bod" #: editor/plugins/animation_state_machine_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "PÅ™idat animaci" +msgstr "PÅ™idánà animace" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -5690,6 +5695,10 @@ msgid "Bake Lightmaps" msgstr "Zapéct lightmapy" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Vybrat soubor pro zapeÄenà svÄ›telných map:" @@ -8186,7 +8195,13 @@ msgid "Cinematic Preview" msgstr "Filmový náhled" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Nenà k dispozici pÅ™i použità vykreslovacÃho modulu GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9104,6 +9119,11 @@ msgstr "Vybrerte jiný zdroj motivu:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "PÅ™ejmenovat zdroj" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Importovat motiv" @@ -9155,6 +9175,21 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Add Item Type" +msgstr "PÅ™idat položku" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Nastavit typ promÄ›nné" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "ZmÄ›nit základnà typ" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Zobrazit výchozÃ" @@ -9172,8 +9207,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "PÅ™idat položku" +msgid "Base Type" +msgstr "ZmÄ›nit základnà typ" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9889,18 +9934,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Shody:" @@ -12628,6 +12661,11 @@ msgid "Stack Frames" msgstr "Rámce zásobnÃku" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrovat dlaždice" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler" @@ -13543,7 +13581,7 @@ msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "While" -msgstr "" +msgstr "While" #: modules/visual_script/visual_script_flow_control.cpp msgid "while (cond):" @@ -13977,9 +14015,10 @@ msgstr "Neplatné jméno balÃÄku:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Neplatný modul \"GodotPaymentV3\" v nastavenà projektu \"Android / " -"moduly\" (zmÄ›nÄ›no v Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/da.po b/editor/translations/da.po index 0fe9e67693..fa49368276 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -1543,6 +1543,11 @@ msgstr "Indlæs standard Bus Layout." msgid "Create a new Bus Layout." msgstr "Opret et nyt Bus Layout." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Ã…ben Audio Bus Layout" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ugyldigt navn." @@ -3027,7 +3032,7 @@ msgstr "Skift distraktions-fri modus." msgid "Add a new scene." msgstr "Tilføj en ny scene." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scene" @@ -5897,6 +5902,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Vælg template fil" @@ -8478,7 +8487,12 @@ msgid "Cinematic Preview" msgstr "Opretter Maske ForhÃ¥ndsvisninger" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9428,6 +9442,11 @@ msgstr "Søg Erstatnings Ressource:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Ressource" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Medlemmer" @@ -9480,6 +9499,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Sæt Variabel Type" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Skift Base Type" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Indlæs Default" @@ -9497,7 +9530,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Skift Base Type" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -10253,18 +10297,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Matches:" @@ -12972,6 +13004,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrer filer..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14353,6 +14390,9 @@ msgstr "Ugyldigt navn." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/de.po b/editor/translations/de.po index 88904ba7d7..aeb8000e85 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -76,13 +76,14 @@ # Tim <tim14speckenwirth@gmail.com>, 2021. # Antonio Noack <corperateraider@gmail.com>, 2022. # ‎ <artism90@googlemail.com>, 2022. +# Coxcopi70f00b67b61542fe <hn_vogel@gmx.net>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-16 08:44+0000\n" -"Last-Translator: ‎ <artism90@googlemail.com>\n" +"PO-Revision-Date: 2022-03-02 18:39+0000\n" +"Last-Translator: Coxcopi70f00b67b61542fe <hn_vogel@gmx.net>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -90,7 +91,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1556,6 +1557,11 @@ msgstr "Standard Bus-Layout laden." msgid "Create a new Bus Layout." msgstr "Neues Audiobus-Layout erstellen." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Öffne Audiobus-Layout" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ungültiger Name." @@ -2235,7 +2241,7 @@ msgstr "Stile" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "Aufzählungstypen" +msgstr "Aufzählungen" #: editor/editor_help.cpp msgid "Property Descriptions" @@ -3020,7 +3026,7 @@ msgstr "Ablenkungsfreien Modus umschalten." msgid "Add a new scene." msgstr "Eine neue Szene hinzufügen." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Szene" @@ -3396,14 +3402,12 @@ msgid "Update Continuously" msgstr "Fortlaufend aktualisieren" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Bei Änderungen aktualisieren" +msgstr "Bei allen Änderungen aktualisieren" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Materialänderungen:" +msgstr "Nur bei wichtigen Änderungen aktualisieren" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4181,6 +4185,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Diese Dateiendung wird nicht vom Editor erkannt.\n" +"Zum Durchführen der Umbenennung muss ein anderer Dateimanager genutzt " +"werden.\n" +"Dateien mit unbekannten Dateiendungen werden daraufhin nicht mehr im Editor " +"angezeigt." #: editor/filesystem_dock.cpp msgid "" @@ -5802,6 +5811,10 @@ msgid "Bake Lightmaps" msgstr "Lightmaps vorrendern" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Lightmap-Bake-Datei auswählen:" @@ -8299,7 +8312,13 @@ msgid "Cinematic Preview" msgstr "Cinematische Vorschau" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Nicht verfügbar wenn der GLES2–Renderer genutzt wird." #: editor/plugins/spatial_editor_plugin.cpp @@ -9199,6 +9218,11 @@ msgid "Select Another Theme Resource:" msgstr "Andere Thema-Ressource auswählen:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Ressource umbenennen" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Anderes Design" @@ -9247,6 +9271,20 @@ msgstr "" "StyleBox werden ebenfalls in allen StyleBoxen des gleichen Typs geändert." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Elementtyp hinzufügen" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Variablentyp festlegen" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Basistyp ändern" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Standard anzeigen" @@ -9263,8 +9301,19 @@ msgid "Override all default type items." msgstr "Alle Standard-Typelemente überbrücken." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Elementtyp hinzufügen" +#, fuzzy +msgid "Base Type" +msgstr "Basistyp ändern" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9972,18 +10021,6 @@ msgid "Commit list size" msgstr "Größe der Commit-Liste" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Zweige" @@ -12745,6 +12782,11 @@ msgid "Stack Frames" msgstr "Aufrufsverlauf" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Kacheln filtern" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler" @@ -12918,14 +12960,12 @@ msgid "Set Occluder Sphere Position" msgstr "Occluder-Sphärenposition festlegen" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Portal-Point-Position festlegen" +msgstr "Position von Occluder-Polygon-Punkt festlegen" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "Kurvenpunktposition festlegen" +msgstr "Position von Occluder-Loch-Punkt festlegen" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -14072,9 +14112,10 @@ msgstr "Ungültiger Paketname:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Ungültiges „GodotPaymentV3“-Modul eingebunden in den „android/modules“-" -"Projekteinstellungen (wurde in Godot 3.2.2 geändert).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14341,166 +14382,167 @@ msgstr "Fehler beim Starten des HTTP-Servers:" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "Dateisystemzugriff fehlgeschlagen." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "Lesen von Info.plist-Hash fehlgeschlagen." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "Ungültiger Projektname." +msgstr "Ungültige Info.plist, kein exe-Name." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "Ungültige Info.plist, keine bundle-id." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "Ungültige Geometrie, Polygon kann nicht erzeugt werden." +msgstr "Ungültige Info.plist, kann nicht geladen werden." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "Ordner konnte nicht erstellt werden." +msgstr "Erzeugen von Unterordner „%s“ fehlgeschlagen." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "Entpacken von thin binary fehlgeschlagen." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Ungültiger Basispfad." +msgstr "Ungültiges Binärformat." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Bereits signiert!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Laden der Ressource gescheitert." +msgstr "Verarbeiten verschachtelter Ressourcen fehlgeschlagen." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "Erzeugen von _CodeSignature-Unterordner fehlgeschlagen." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Laden der Ressource gescheitert." +msgstr "Erhalten von CodeResources-Hash fehlgeschlagen." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "Ungültige Dateiendung." +msgstr "Ungültige entitlements-Datei." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Ungültige Dateiendung." +msgstr "Ungültige ausführbare Datei." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "Signatur-Lade-Kommando kann nicht vergrößert/verkleinert werden." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "Erstellen von fat binary fehlgeschlagen." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "Unbekannter bundle-Typ." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Unbekannter Objekttyp." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"Hinweis: Der Beglaubigungsprozess dauert gewöhnlich weniger als eine Stunde. " +"Nach Ablauf wird eine Bestätigungsmail versandt." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Der Fortschritt kann manuell mithilfe des folgenden Befehls in der Konsole " +"überprüft werden:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Mit folgendem Befehl kann die Beglaubigungsbescheinigung an die exportierte " +"Anwendung geheftet werden (optional):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Keine Symbole gefunden." +msgstr "Keine Identität gefunden." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Erzeuge Miniaturansicht" +msgstr "Erzeuge App-Bundle" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"Konnte keine APK-Vorlage zum Exportieren finden:\n" -"%s" +msgstr "Es konnte keine Vorlagen-App zum Exportieren gefunden werden:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"Relative symbolische Links werden von diesem Betriebssystem nicht " +"unterstützt, das exportierte Projekt könnte fehlerhaft sein!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Benötigte Vorlagen-Binary ‚%s‘ nicht gefunden. Es könnte im Vorlagen-Archiv " +"fehlen." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Erzeuge PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Ad-hoc signierte Anwendungen benötigen die ‚Disable Library Validation‘-" +"Berechtigung um dynamische Bibliotheken zu laden." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "Codesignierungs-Bundle" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Erstelle DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "Codesignierendes DMG" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Erstelle ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"Der Beglaubigungsprozess setzt voraus dass die Anwendung archiviert wurde. " +"Das DMG- oder ZIP-Exportformat sollte stattdessen ausgewählt werden." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "Sende Archiv zur Beglaubigung" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14511,31 +14553,36 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"Warnung: Das eingebettete „codesign“ ist in den Editoreinstellungen " +"ausgewählt. Codesignierung ist eingeschränkt auf Ad-hoc-Signaturen." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"Warnung: Die Xcode-Kommandozeilenprogramme sind nicht installiert, verwende " +"eingebautes „codesign“. Codesignierung ist eingeschränkt auf Ad-hoc-" +"Signaturen." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." msgstr "" +"Beglaubigung: Beglaubigungen von Ad-hoc-Signaturen werden nicht erstellt." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "Beglaubigung: Code-Signierung wird benötigt." +msgstr "Beglaubigung: Code-Signierung wird zur Beglaubigung benötigt." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "Beglaubigung: Abgehärtete Ausführungsumgebung wird benötigt." +msgstr "" +"Beglaubigung: Abgehärtete Ausführungsumgebung wird zur Beglaubigung benötigt." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "Beglaubigung: Abgehärtete Ausführungsumgebung wird benötigt." +msgstr "" +"Beglaubigung: Zeitstempel-Ausführungsumgebung wird für Beglaubigung benötigt." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14550,63 +14597,87 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Warnung: Beglaubigungen sind deaktiviert. Das exportierte Projekt wird von " +"Gatekeeper geblockt werden, falls es von einer unbekannten Quelle " +"heruntergeladen wird." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"Code-Signierung ist deaktiviert. Das exportierte Projekt wird sich nicht auf " +"Macs mit aktiviertem Gatekeeper oder Apple-Silicon-Macs ausführen lassen." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Die abgehärtete Laufzeitumgebung ist nicht mit Ad-hoc-Signaturen kompatibel, " +"und wird deaktiviert!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" msgstr "" +"Zeitstempel sind nicht mit Ad-hoc-Signaturen kompatibel, und werden " +"deaktiviert!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Warnung: Beglaubigungen werden von diesem Betriebssystem nicht unterstützt. " +"Das exportierte Projekt wird von Gatekeeper blockiert, falls es aus einer " +"unbekannten Quelle geladen wurde." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"Privatsphäre: Mikrophonzugriff ist aktiviert, aber keine " +"Nutzungsbeschreibung angegeben." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"Privatsphäre: Kamerazugriff ist aktiviert, aber keine Nutzungsbeschreibung " +"angegeben." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"Privatsphäre: Standortzugriff ist aktiviert, aber keine Nutzungsbeschreibung " +"angegeben." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"Privatsphäre: Adressbuchzugriff ist aktiviert, aber keine " +"Nutzungsbeschreibung angegeben." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"Privatsphäre: Kalenderzugriff ist aktiviert, aber keine Nutzungsbeschreibung " +"angegeben." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"Privatsphäre: Photobibliothekszugriff ist aktiviert, aber keine " +"Nutzungsbeschreibung angegeben." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14665,21 +14736,21 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"Das Rcedit-Werkzeug muss in den Editoreinstellungen (Export > Windows > " +"Rcedit) festgelegt werden um Icon- oder Anwendungsinformation festlegen zu " +"können." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Ungültiger Pfad." +msgstr "Ungültiger Icon-Pfad:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Ungültige Dateiendung." +msgstr "Ungültige Dateiversion:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "Ungültige Produkt-GUID." +msgstr "Ungültige Produktversion:" #: scene/2d/animated_sprite.cpp msgid "" @@ -15443,14 +15514,13 @@ msgstr "" "AnimationTree." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" "RMB: Remove preset" msgstr "" "Farbe: #%s\n" -"LMT: Farbe festlegen\n" +"LMT: Farbe anwenden\n" "RMT: Voreinstellung entfernen" #: scene/gui/color_picker.cpp diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index f9d1c47b88..ae2e0321ff 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -1432,6 +1432,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2781,7 +2785,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5423,6 +5427,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7848,7 +7856,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8723,6 +8736,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8769,6 +8786,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8785,7 +8814,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9461,18 +9500,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12026,6 +12053,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13309,6 +13340,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/el.po b/editor/translations/el.po index d3cbb4b072..ebfb007a9d 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -1511,6 +1511,11 @@ msgstr "ΦόÏτωση Ï€ÏοεπιλεγμÎνης διάταξης διαÏÎ»Ï msgid "Create a new Bus Layout." msgstr "ΔημιουÏγία νÎας διάταξης διαÏλων ήχου." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Άνοιγμα διάταξης διαÏλων ήχου" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Μη ÎγκυÏο όνομα." @@ -2976,7 +2981,7 @@ msgstr "Εναλλαγή λειτουÏγίας χωÏίς πεÏÎ¹ÏƒÏ€Î±ÏƒÎ¼Î¿Ï msgid "Add a new scene." msgstr "Î Ïοσθήκη νÎας σκηνής." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Σκηνή" @@ -5792,6 +5797,10 @@ msgid "Bake Lightmaps" msgstr "Î Ïοετοιμασία Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Επιλογή ΑÏχείου Î ÏοτÏπων:" @@ -8356,7 +8365,13 @@ msgid "Cinematic Preview" msgstr "ΚινηματογÏαφική Î Ïοεπισκόπηση" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Δεν είναι διαθÎσιμο στην απόδοση GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9304,6 +9319,11 @@ msgstr "ΔιαγÏαφή πόÏου" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Μετονομασία πόÏου" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Εισαγωγή θÎματος" @@ -9358,6 +9378,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Î Ïοσθήκη στοιχείου" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "ΟÏισμός Ï„Ïπου μεταβλητής" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Αλλαγή Î²Î±ÏƒÎ¹ÎºÎ¿Ï Ï„Ïπου" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "ΦόÏτωση Ï€Ïοεπιλογής" @@ -9376,8 +9411,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Î Ïοσθήκη στοιχείου" +msgid "Base Type" +msgstr "Αλλαγή Î²Î±ÏƒÎ¹ÎºÎ¿Ï Ï„Ïπου" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10105,18 +10150,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Αντιστοιχίες:" @@ -12882,6 +12915,11 @@ msgid "Stack Frames" msgstr "Στοίβαξη καÏÎ" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "ΦιλτÏάÏισμα πλακιδίων" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Î ÏόγÏαμμα ΔημιουÏγίας Î Ïοφίλ" @@ -14270,9 +14308,10 @@ msgstr "ΆκυÏο όνομα πακÎτου:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"ΕσφαλμÎνη λειτουÏγική μονάδα «GodotPaymentV3» στην ÏÏθμιση εÏγου «Android/" -"Modules» (άλλαξε στην Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/en_Shaw.po b/editor/translations/en_Shaw.po new file mode 100644 index 0000000000..1251476928 --- /dev/null +++ b/editor/translations/en_Shaw.po @@ -0,0 +1,14652 @@ +# English (Shavian) translation of the Godot Engine editor. +# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). +# This file is distributed under the same license as the Godot source code. +# +# haley <haleyhalcyon@gmail.com>, 2022. +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" +"PO-Revision-Date: 2022-02-26 10:27+0000\n" +"Last-Translator: haley <haleyhalcyon@gmail.com>\n" +"Language-Team: English (Shavian) <https://hosted.weblate.org/projects/godot-" +"engine/godot/en-Shaw/>\n" +"Language: en-Shaw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.1-dev\n" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘‘ð‘²ð‘ ð‘¸ð‘œð‘˜ð‘©ð‘¥ð‘©ð‘¯ð‘‘ ð‘‘ convert(), ð‘¿ð‘Ÿ TYPE_* ð‘’ð‘ªð‘¯ð‘•ð‘‘ð‘©ð‘’ð‘‘ð‘•." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "ð‘¦ð‘’ð‘•ð‘ð‘§ð‘’ð‘‘ð‘©ð‘› ð‘© ð‘•ð‘‘ð‘®ð‘¦ð‘™ ð‘ ð‘¤ð‘§ð‘™ð‘” 1 (ð‘© ð‘’ð‘¨ð‘®ð‘©ð‘’ð‘‘ð‘¼)." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/mono/glue/gd_glue.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "ð‘¯ð‘ªð‘‘ ð‘¦ð‘¯ð‘³ð‘“ ð‘šð‘²ð‘‘ð‘• ð‘“ ð‘›ð‘°ð‘’ð‘´ð‘›ð‘¦ð‘™ ð‘šð‘²ð‘‘ð‘•, 𑹠ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘“ð‘¹ð‘¥ð‘¨ð‘‘." + +#: core/math/expression.cpp +msgid "Invalid input %i (not passed) in expression" +msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¦ð‘¯ð‘ð‘«ð‘‘ %i (ð‘¯ð‘ªð‘‘ ð‘ð‘ð‘•ð‘‘) ð‘¦ð‘¯ ð‘¦ð‘’ð‘•ð‘ð‘®ð‘§ð‘–ð‘©ð‘¯" + +#: core/math/expression.cpp +msgid "self can't be used because instance is null (not passed)" +msgstr "self ð‘’ð‘ð‘¯ð‘‘ ð‘šð‘° ð‘¿ð‘Ÿð‘› ð‘šð‘¦ð‘’ð‘ªð‘Ÿ ð‘¦ð‘¯ð‘•ð‘‘ð‘©ð‘¯ð‘• ð‘¦ð‘Ÿ ð‘¯ð‘³ð‘¤ (ð‘¯ð‘ªð‘‘ ð‘ð‘ð‘•ð‘‘)" + +#: core/math/expression.cpp +msgid "Invalid operands to operator %s, %s and %s." +msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘ªð‘ð‘¼ð‘¨ð‘¯ð‘›ð‘Ÿ ð‘‘ ð‘ªð‘ð‘¼ð‘±ð‘‘𑼠%s, %s 𑯠%s." + +#: core/math/expression.cpp +msgid "Invalid index of type %s for base type %s" +msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¦ð‘¯ð‘›ð‘§ð‘’ð‘• ð‘ ð‘‘ð‘²ð‘ %s ð‘“ ð‘šð‘±ð‘• ð‘‘ð‘²ð‘ %s" + +#: core/math/expression.cpp +msgid "Invalid named index '%s' for base type %s" +msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¯ð‘±ð‘¥ð‘› ð‘¦ð‘¯ð‘›ð‘§ð‘’ð‘• '%s' ð‘“ ð‘šð‘±ð‘• ð‘‘ð‘²ð‘ %s" + +#: core/math/expression.cpp +msgid "Invalid arguments to construct '%s'" +msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¸ð‘œð‘˜ð‘©ð‘¥ð‘©ð‘¯ð‘‘ð‘• ð‘‘ ð‘’ð‘©ð‘¯ð‘•ð‘‘ð‘®ð‘³ð‘’ð‘‘ '%s'" + +#: core/math/expression.cpp +msgid "On call to '%s':" +msgstr "ð‘ªð‘¯ ð‘’ð‘·ð‘¤ ð‘‘ '%s':" + +#: core/ustring.cpp +msgid "B" +msgstr "" + +#: core/ustring.cpp +msgid "KiB" +msgstr "" + +#: core/ustring.cpp +msgid "MiB" +msgstr "" + +#: core/ustring.cpp +msgid "GiB" +msgstr "" + +#: core/ustring.cpp +msgid "TiB" +msgstr "" + +#: core/ustring.cpp +msgid "PiB" +msgstr "" + +#: core/ustring.cpp +msgid "EiB" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Free" +msgstr "ð‘“ð‘®ð‘°" + +#: editor/animation_bezier_editor.cpp +msgid "Balanced" +msgstr "ð‘šð‘¨ð‘®ð‘©ð‘¯ð‘•ð‘‘" + +#: editor/animation_bezier_editor.cpp +msgid "Mirror" +msgstr "ð‘¥ð‘¦ð‘®ð‘¼" + +#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp +msgid "Time:" +msgstr "ð‘‘ð‘²ð‘¥:" + +#: editor/animation_bezier_editor.cpp +msgid "Value:" +msgstr "ð‘ð‘¨ð‘¤ð‘¿:" + +#: editor/animation_bezier_editor.cpp +msgid "Insert Key Here" +msgstr "ð‘¦ð‘¯ð‘•ð‘»ð‘‘ ð‘’ð‘° ð‘£ð‘½" + +#: editor/animation_bezier_editor.cpp +msgid "Duplicate Selected Key(s)" +msgstr "ð‘›ð‘¿ð‘ð‘¤ð‘¦ð‘’ð‘±ð‘‘ ð‘•ð‘¦ð‘¤ð‘§ð‘’ð‘‘ð‘©ð‘› ð‘’ð‘°(ð‘Ÿ)" + +#: editor/animation_bezier_editor.cpp +msgid "Delete Selected Key(s)" +msgstr "ð‘›ð‘¦ð‘¤ð‘°ð‘‘ ð‘•ð‘¦ð‘¤ð‘§ð‘’ð‘‘ð‘©ð‘› ð‘’ð‘°(ð‘Ÿ)" + +#: editor/animation_bezier_editor.cpp +msgid "Add Bezier Point" +msgstr "ð‘¨ð‘› ð‘šð‘§ð‘Ÿð‘¦ð‘± ð‘ð‘¶ð‘¯ð‘‘" + +#: editor/animation_bezier_editor.cpp +msgid "Move Bezier Points" +msgstr "ð‘¥ð‘µð‘ ð‘šð‘§ð‘Ÿð‘¦ð‘± ð‘ð‘¶ð‘¯ð‘‘ð‘•" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "ð‘›ð‘¿ð‘ð‘¤ð‘¦ð‘’ð‘±ð‘‘ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘Ÿ" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Delete Keys" +msgstr "ð‘›ð‘¦ð‘¤ð‘°ð‘‘ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘Ÿ" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Time" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘‘ð‘²ð‘¥" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transition" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘‘ð‘®ð‘¨ð‘¯ð‘Ÿð‘¦ð‘–ð‘©ð‘¯" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transform" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Value" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘ð‘¨ð‘¤ð‘¿" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Call" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘·ð‘¤" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Keyframe Time" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¥ð‘³ð‘¤ð‘‘ð‘¦ð‘ð‘©ð‘¤ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘‘ð‘²ð‘¥ð‘Ÿ" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Transition" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¥ð‘³ð‘¤ð‘‘ð‘¦ð‘ð‘©ð‘¤ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘‘ð‘®ð‘¨ð‘¯ð‘Ÿð‘¦ð‘–ð‘©ð‘¯ð‘Ÿ" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Transform" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¥ð‘³ð‘¤ð‘‘ð‘¦ð‘ð‘©ð‘¤ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Keyframe Value" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¥ð‘³ð‘¤ð‘‘ð‘¦ð‘ð‘©ð‘¤ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘ð‘¨ð‘¤ð‘¿ð‘Ÿ" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Call" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¥ð‘³ð‘¤ð‘‘ð‘¦ð‘ð‘©ð‘¤ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘°ð‘“ð‘®ð‘±ð‘¥ ð‘’ð‘·ð‘¤ð‘Ÿ" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Length" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘§ð‘™ð‘’ð‘”" + +#: editor/animation_track_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘µð‘" + +#: editor/animation_track_editor.cpp +msgid "Property Track" +msgstr "ð‘ð‘®ð‘ªð‘ð‘¼ð‘‘𑦠ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "3D Transform Track" +msgstr "3-ð‘› ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥ ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Call Method Track" +msgstr "ð‘’ð‘·ð‘¤ ð‘¥ð‘§ð‘”ð‘©ð‘› ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Bezier Curve Track" +msgstr "ð‘šð‘§ð‘Ÿð‘¦ð‘± ð‘’ð‘»ð‘ ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Audio Playback Track" +msgstr "ð‘·ð‘›ð‘¦ð‘´ ð‘ð‘®ð‘±ð‘šð‘¨ð‘’ ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Animation Playback Track" +msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘ð‘¤ð‘±ð‘šð‘¨ð‘’ ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Animation length (frames)" +msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘§ð‘™ð‘’ð‘” (ð‘“ð‘®ð‘±ð‘¥ð‘Ÿ)" + +#: editor/animation_track_editor.cpp +msgid "Animation length (seconds)" +msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘§ð‘™ð‘’ð‘” (ð‘•ð‘§ð‘’ð‘©ð‘¯ð‘›ð‘Ÿ)" + +#: editor/animation_track_editor.cpp +msgid "Add Track" +msgstr "ð‘¨ð‘› ð‘‘ð‘®ð‘¨ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Animation Looping" +msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘µð‘ð‘¦ð‘™" + +#: editor/animation_track_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:" + +#: editor/animation_track_editor.cpp +msgid "Audio Clips:" +msgstr "ð‘·ð‘›ð‘¦ð‘´ ð‘’ð‘¤ð‘¦ð‘ð‘•:" + +#: editor/animation_track_editor.cpp +msgid "Anim Clips:" +msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘¤ð‘¦ð‘ð‘•:" + +#: editor/animation_track_editor.cpp +msgid "Change Track Path" +msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘‘ð‘®ð‘¨ð‘’ ð‘ð‘ð‘”" + +#: editor/animation_track_editor.cpp +msgid "Toggle this track on/off." +msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘žð‘¦ð‘• ð‘‘ð‘®ð‘¨ð‘’ ð‘ªð‘¯/ð‘ªð‘“." + +#: editor/animation_track_editor.cpp +msgid "Update Mode (How this property is set)" +msgstr "ð‘³ð‘ð‘›ð‘±ð‘‘ ð‘¥ð‘´ð‘› (ð‘£ð‘¬ ð‘žð‘¦ð‘• ð‘ð‘®ð‘ªð‘ð‘¼ð‘‘𑦠ð‘¦ð‘Ÿ ð‘•ð‘§ð‘‘)" + +#: editor/animation_track_editor.cpp +msgid "Interpolation Mode" +msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›" + +#: editor/animation_track_editor.cpp +msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" +msgstr "ð‘¤ð‘µð‘ ð‘®ð‘¨ð‘ ð‘¥ð‘´ð‘› (ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘‘ ð‘§ð‘¯ð‘› ð‘¢ð‘¦ð‘ž ð‘šð‘¦ð‘œð‘¦ð‘¯ð‘¦ð‘™ ð‘ªð‘¯ ð‘¤ð‘µð‘)" + +#: editor/animation_track_editor.cpp +msgid "Remove this track." +msgstr "ð‘®ð‘¦ð‘¥ð‘µð‘ ð‘žð‘¦ð‘• ð‘‘ð‘®ð‘¨ð‘’." + +#: editor/animation_track_editor.cpp +msgid "Time (s): " +msgstr "ð‘‘ð‘²ð‘¥(ð‘Ÿ): " + +#: editor/animation_track_editor.cpp +msgid "Toggle Track Enabled" +msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›" + +#: editor/animation_track_editor.cpp +msgid "Continuous" +msgstr "ð‘’ð‘©ð‘¯ð‘‘ð‘¦ð‘¯ð‘˜ð‘«ð‘©ð‘•" + +#: editor/animation_track_editor.cpp +msgid "Discrete" +msgstr "ð‘›ð‘¦ð‘•ð‘’ð‘®ð‘°ð‘‘" + +#: editor/animation_track_editor.cpp +msgid "Trigger" +msgstr "ð‘‘ð‘®ð‘¦ð‘œð‘¼" + +#: editor/animation_track_editor.cpp +msgid "Capture" +msgstr "ð‘’ð‘¨ð‘ð‘—ð‘¼" + +#: editor/animation_track_editor.cpp +msgid "Nearest" +msgstr "ð‘¯ð‘½ð‘©ð‘•ð‘‘" + +#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp +#: editor/property_editor.cpp +msgid "Linear" +msgstr "ð‘¤ð‘¦ð‘¯ð‘½" + +#: editor/animation_track_editor.cpp +msgid "Cubic" +msgstr "ð‘’ð‘¿ð‘šð‘¦ð‘’" + +#: editor/animation_track_editor.cpp +msgid "Clamp Loop Interp" +msgstr "ð‘’ð‘¤ð‘¨ð‘¥ð‘ ð‘¤ð‘µð‘ ð‘¦ð‘¯ð‘‘ð‘»ð‘" + +#: editor/animation_track_editor.cpp +msgid "Wrap Loop Interp" +msgstr "ð‘®ð‘¨ð‘ ð‘¤ð‘µð‘ ð‘¦ð‘¯ð‘‘ð‘»ð‘" + +#: editor/animation_track_editor.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Key(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add RESET Value(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Delete Key(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Update Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Interpolation Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Loop Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#. TRANSLATORS: %s will be replaced by a phrase describing the target of track. +#: editor/animation_track_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: editor/animation_track_editor.cpp editor/create_dialog.cpp +#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/mesh_instance_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Create" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert" +msgstr "" + +#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. +#: editor/animation_track_editor.cpp +msgid "node '%s'" +msgstr "" + +#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. +#: editor/animation_track_editor.cpp +msgid "animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "AnimationPlayer can't animate itself, only other players." +msgstr "" + +#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. +#: editor/animation_track_editor.cpp +msgid "property '%s'" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Rearrange Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Transform tracks only apply to Spatial-based nodes." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"Audio tracks can only point to nodes of type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation tracks can only point to AnimationPlayer nodes." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Not possible to add a new track without a root" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Bezier Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track is not of type Spatial, can't insert key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Transform Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a method key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Method Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Method not found in object: " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Paste Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"This option does not work for Bezier editing, as it's only a single track." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Add RESET Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"This animation belongs to an imported scene, so changes to imported tracks " +"will not be saved.\n" +"\n" +"To enable the ability to add custom tracks, navigate to the scene's import " +"settings and set\n" +"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom " +"Tracks\", then re-import.\n" +"Alternatively, use an import preset that imports animations to separate " +"files." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Warning: Editing imported animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select an AnimationPlayer node to create and edit animations." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Only show tracks from nodes selected in tree." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Group tracks by node or display them as plain list." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Snap:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation step value." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "FPS" +msgstr "" + +#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp +#: editor/editor_resource_picker.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation properties." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Copy Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Delete Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Go to Next Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Go to Previous Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Apply Reset" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Pick the node that will be animated:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Use Bezier Curves" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Create RESET Track(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Optimize" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select Tracks to Copy" +msgstr "" + +#: editor/animation_track_editor.cpp editor/editor_log.cpp +#: editor/editor_resource_picker.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Copy" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select All/None" +msgstr "" + +#: editor/animation_track_editor_plugins.cpp +msgid "Add Audio Track Clip" +msgstr "" + +#: editor/animation_track_editor_plugins.cpp +msgid "Change Audio Track Clip Start Offset" +msgstr "" + +#: editor/animation_track_editor_plugins.cpp +msgid "Change Audio Track Clip End Offset" +msgstr "" + +#: editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: editor/code_editor.cpp +msgid "%d replaced." +msgstr "" + +#: editor/code_editor.cpp editor/editor_help.cpp +msgid "%d match." +msgstr "" + +#: editor/code_editor.cpp editor/editor_help.cpp +msgid "%d matches." +msgstr "" + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Match Case" +msgstr "" + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Whole Words" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp +#: editor/plugins/text_editor.cpp +msgid "Standard" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom In" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Out" +msgstr "" + +#: editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "" + +#: editor/code_editor.cpp +msgid "Warnings" +msgstr "" + +#: editor/code_editor.cpp +msgid "Line and column numbers." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Method in target node must be specified." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Method name must be a valid identifier." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "" +"Target method not found. Specify a valid method or attach a script to the " +"target node." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect to Node:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect to Script:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "From Signal:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Scene does not contain any script." +msgstr "" + +#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp +#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +msgid "Add" +msgstr "" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp +msgid "Remove" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Advanced" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "" +"Defers the signal, storing it in a queue and only firing it at idle time." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnects the signal after its first emission." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Cannot connect signal" +msgstr "" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/export_template_manager.cpp editor/groups_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Close" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Signal:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect '%s' from '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect all from signal: '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect..." +msgstr "" + +#: editor/connections_dialog.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect a Signal to a Method" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Edit Connection:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from the \"%s\" signal?" +msgstr "" + +#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Filter signals" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from this signal?" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect All" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Edit..." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Go to Method" +msgstr "" + +#: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp +msgid "Create New %s" +msgstr "" + +#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp +msgid "No results for \"%s\"." +msgstr "" + +#: editor/create_dialog.cpp editor/property_selector.cpp +msgid "No description available for %s." +msgstr "" + +#: editor/create_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search:" +msgstr "" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Matches:" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_feature_profile.cpp +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Description:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will only take effect when reloaded." +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will only take effect when reloaded." +msgstr "" + +#: editor/dependency_editor.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_resource_picker.cpp +msgid "Resource" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp +msgid "Path" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_property_selector.cpp +#: scene/gui/file_dialog.cpp +msgid "Open" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Remove the selected files from the project? (Cannot be undone.)\n" +"Depending on your filesystem configuration, the files will either be moved " +"to the system trash or deleted permanently." +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (Cannot be undone.)\n" +"Depending on your filesystem configuration, the files will either be moved " +"to the system trash or deleted permanently." +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Cannot remove:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Load failed due to missing dependencies:" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_node.cpp +msgid "Open Anyway" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Show Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp +msgid "Delete" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: editor/dictionary_property_edit.cpp +msgid "Change Dictionary Key" +msgstr "" + +#: editor/dictionary_property_edit.cpp +msgid "Change Dictionary Value" +msgstr "" + +#: editor/editor_about.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp +msgid "Click to copy." +msgstr "" + +#: editor/editor_about.cpp +msgid "Godot Engine contributors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Project Founders" +msgstr "" + +#: editor/editor_about.cpp +msgid "Lead Developer" +msgstr "" + +#. TRANSLATORS: This refers to a job title. +#. The trailing space is used to distinguish with the project list application, +#. you do not have to keep it in your translation. +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "" + +#: editor/editor_about.cpp +msgid "Developers" +msgstr "" + +#: editor/editor_about.cpp +msgid "Authors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Platinum Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Gold Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Silver Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Bronze Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Mini Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Gold Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Silver Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Bronze Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "License" +msgstr "" + +#: editor/editor_about.cpp +msgid "Third-party Licenses" +msgstr "" + +#: editor/editor_about.cpp +msgid "" +"Godot Engine relies on a number of third-party free and open source " +"libraries, all compatible with the terms of its MIT license. The following " +"is an exhaustive list of all such third-party components with their " +"respective copyright statements and license terms." +msgstr "" + +#: editor/editor_about.cpp +msgid "All Components" +msgstr "" + +#: editor/editor_about.cpp +msgid "Components" +msgstr "" + +#: editor/editor_about.cpp +msgid "Licenses" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Error opening asset file for \"%s\" (not in ZIP format)." +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "%s (already exists)" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Contents of asset \"%s\" - No files conflict with your project:" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Uncompressing Assets" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "The following files failed extraction from asset \"%s\":" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "(and %s more files)" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Asset \"%s\" installed successfully!" +msgstr "" + +#: editor/editor_asset_installer.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Success!" +msgstr "" + +#: editor/editor_asset_installer.cpp editor/editor_node.cpp +msgid "Install" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Asset Installer" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Speakers" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Rename Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Change Audio Bus Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Solo" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Mute" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Bypass Effects" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Select Audio Bus Send" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Move Bus Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Bus Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Drag & drop to rearrange." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Solo" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Mute" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Bypass" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Bus Options" +msgstr "" + +#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp +#: editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Reset Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Audio" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Master bus can't be deleted!" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Duplicate Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Reset Bus Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Move Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save Audio Bus Layout As..." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Location for New Layout..." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Open Audio Bus Layout" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "There is no '%s' file." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp +msgid "Layout" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Invalid file, not an audio bus layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Error saving file: %s" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add a new Audio Bus to this layout." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp +#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Load" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Load an existing Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save As" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save this Bus Layout to a file." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/import_dock.cpp +msgid "Load Default" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Load the default Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Create a new Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Invalid name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Cannot begin with a digit." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing engine class name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing built-in type name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing global constant name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Keyword cannot be used as an autoload name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp +msgid "Enable" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Rearrange Autoloads" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Can't add autoload:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "%s is an invalid path. File does not exist." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "%s is an invalid path. Not in resource path (res://)." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Add AutoLoad" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp +#: editor/editor_plugin_settings.cpp +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp +msgid "Path:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp +#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp +#: editor/project_manager.cpp editor/settings_config_dialog.cpp +msgid "Name" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Global Variable" +msgstr "" + +#: editor/editor_data.cpp +msgid "Paste Params" +msgstr "" + +#: editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: editor/editor_data.cpp +msgid "Storing local changes..." +msgstr "" + +#: editor/editor_data.cpp +msgid "Updating scene..." +msgstr "" + +#: editor/editor_data.cpp editor/editor_resource_picker.cpp +msgid "[empty]" +msgstr "" + +#: editor/editor_data.cpp editor/plugins/script_text_editor.cpp +#: editor/plugins/text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "[unsaved]" +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Please select a base directory first." +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp editor/project_manager.cpp +#: scene/gui/file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp +msgid "Name:" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: editor/editor_export.cpp +msgid "Storing File:" +msgstr "" + +#: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp +msgid "Packing" +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " +"Etc' in Project Settings." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC2' texture compression for GLES3. Enable " +"'Import Etc 2' in Project Settings." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC' texture compression for the driver fallback " +"to GLES2.\n" +"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " +"Enabled'." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'PVRTC' texture compression for GLES2. Enable " +"'Import Pvrtc' in Project Settings." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " +"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'PVRTC' texture compression for the driver fallback " +"to GLES2.\n" +"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback " +"Enabled'." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export_plugin.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export_plugin.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + +#: editor/editor_export.cpp platform/javascript/export/export.cpp +msgid "Template file not found:" +msgstr "" + +#: editor/editor_export.cpp +msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "3D Editor" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Script Editor" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Asset Library" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Scene Tree Editing" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Node Dock" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "FileSystem Dock" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Import Dock" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Allows to view and edit 3D scenes." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Allows to edit scripts using the integrated script editor." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Provides built-in access to the Asset Library." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Allows editing the node hierarchy in the Scene dock." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "" +"Allows to work with signals and groups of the node selected in the Scene " +"dock." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Allows to browse the local file system via a dedicated dock." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "" +"Allows to configure import settings for individual assets. Requires the " +"FileSystem dock to function." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(current)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(none)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Remove currently selected profile, '%s'? Cannot be undone." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Profile must be a valid filename and must not contain '.'" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Profile with this name already exists." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(Editor Disabled, Properties Disabled)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(Properties Disabled)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(Editor Disabled)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Class Options:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Enable Contextual Editor" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Class Properties:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Main Features:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Nodes and Classes:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "File '%s' format is invalid, import aborted." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "" +"Profile '%s' already exists. Remove it first before importing, import " +"aborted." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Error saving profile to path: '%s'." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Reset to Default" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Current Profile:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Create Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Remove Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Available Profiles:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Make Current" +msgstr "" + +#: editor/editor_feature_profile.cpp editor/editor_node.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: editor/editor_feature_profile.cpp editor/project_export.cpp +msgid "Export" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Configure Selected Profile:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Extra Options:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Create or import a profile to edit available classes and properties." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "New profile name:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Import Profile(s)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Export Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Manage Editor Feature Profiles" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select Current Folder" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File exists, overwrite?" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select This Folder" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Open in File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/project_manager.cpp +msgid "Show in File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "New Folder..." +msgstr "" + +#: editor/editor_file_dialog.cpp editor/find_in_files.cpp +msgid "Refresh" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp +#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp +msgid "Save" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Hidden Files" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go to previous folder." +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go to next folder." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Go to parent folder." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Refresh files." +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "(Un)favorite current folder." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Toggle the visibility of hidden files." +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "View items as a grid of thumbnails." +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "View items as a list." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp +#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Preview:" +msgstr "" + +#: editor/editor_file_dialog.cpp +#: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp +msgid "File:" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "" +"There are multiple importers for different types pointing to file %s, import " +"aborted" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "(Re)Importing Assets" +msgstr "" + +#: editor/editor_help.cpp +msgid "Top" +msgstr "" + +#: editor/editor_help.cpp +msgid "Class:" +msgstr "" + +#: editor/editor_help.cpp editor/scene_tree_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Description" +msgstr "" + +#: editor/editor_help.cpp +msgid "Online Tutorials" +msgstr "" + +#: editor/editor_help.cpp +msgid "Properties" +msgstr "" + +#: editor/editor_help.cpp +msgid "overrides %s:" +msgstr "" + +#: editor/editor_help.cpp +msgid "default:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Methods" +msgstr "" + +#: editor/editor_help.cpp +msgid "Theme Properties" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Colors" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constants" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Fonts" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Icons" +msgstr "" + +#: editor/editor_help.cpp +msgid "Styles" +msgstr "" + +#: editor/editor_help.cpp +msgid "Enumerations" +msgstr "" + +#: editor/editor_help.cpp +msgid "Property Descriptions" +msgstr "" + +#: editor/editor_help.cpp +msgid "(value)" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this property. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" + +#: editor/editor_help.cpp +msgid "Method Descriptions" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this method. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" + +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Display All" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Classes Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Methods Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Signals Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Constants Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Member Type" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Class" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + +#: editor/editor_inspector.cpp editor/project_settings_editor.cpp +msgid "Property:" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Pin value" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "" +"Pinning a value forces it to be saved even if it's equal to the default." +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Pin value [Disabled because '%s' is editor-only]" +msgstr "" + +#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp +#: modules/visual_script/visual_script_func_nodes.cpp +#: modules/visual_script/visual_script_nodes.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Set %s" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Set Multiple:" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Pinned %s" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Unpinned %s" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Copy Property" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Paste Property" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Copy Property Path" +msgstr "" + +#: editor/editor_log.cpp +msgid "Output:" +msgstr "" + +#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp +msgid "Copy Selection" +msgstr "" + +#: editor/editor_log.cpp editor/editor_network_profiler.cpp +#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/property_editor.cpp editor/scene_tree_dock.cpp +#: editor/script_editor_debugger.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Clear" +msgstr "" + +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + +#: editor/editor_network_profiler.cpp editor/editor_node.cpp +#: editor/editor_profiler.cpp +msgid "Stop" +msgstr "" + +#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp +#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp +msgid "Start" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "%s/s" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Down" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Up" +msgstr "" + +#: editor/editor_network_profiler.cpp editor/editor_node.cpp +msgid "Node" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Incoming RPC" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Incoming RSET" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Outgoing RPC" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Outgoing RSET" +msgstr "" + +#: editor/editor_node.cpp editor/project_manager.cpp +msgid "New Window" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Spins when the editor window redraws.\n" +"Update Continuously is enabled, which can increase power usage. Click to " +"disable it." +msgstr "" + +#: editor/editor_node.cpp +msgid "Spins when the editor window redraws." +msgstr "" + +#: editor/editor_node.cpp +msgid "Imported resources can't be saved." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource can't be saved because it does not belong to the edited scene. " +"Make it unique first." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Can't open '%s'. The file could have been moved or deleted." +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while parsing '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unexpected end of file '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Missing '%s' or its dependencies." +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while loading '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a tree root." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" + +#: editor/editor_node.cpp +msgid "Could not save one or more scenes!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save All Scenes" +msgstr "" + +#: editor/editor_node.cpp editor/scene_tree_dock.cpp +msgid "Can't overwrite scene that is still open!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"An error occurred while trying to save the editor layout.\n" +"Make sure the editor's user data path is writable." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Default editor layout overridden.\n" +"To restore the Default layout to its base settings, use the Delete Layout " +"option and delete the Default layout." +msgstr "" + +#: editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Restored the Default layout to its base settings." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was imported, so it's not editable.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was instanced or inherited.\n" +"Changes to it won't be kept when saving the current scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource was imported, so it's not editable. Change its settings in the " +"import panel and then re-import." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This scene was imported, so changes to it won't be kept.\n" +"Instancing it or inheriting will allow making changes to it.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This is a remote object, so changes to it won't be kept.\n" +"Please read the documentation relevant to debugging to better understand " +"this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save scene before running..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: editor/editor_node.cpp editor/filesystem_dock.cpp +msgid "Open Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Open..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Open Scene..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Open Script..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save & Close" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save changes to '%s' before closing?" +msgstr "" + +#: editor/editor_node.cpp +msgid "%s no longer exists! Please specify a new save location." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"The current scene has no root node, but %d modified external resource(s) " +"were saved anyway." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"A root node is required to save the scene. You can add a root node using the " +"Scene tree dock." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Scene As..." +msgstr "" + +#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a root node." +msgstr "" + +#: editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a selected node." +msgstr "" + +#: editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't undo while mouse buttons are pressed." +msgstr "" + +#: editor/editor_node.cpp +msgid "Nothing to undo." +msgstr "" + +#: editor/editor_node.cpp +msgid "Undo: %s" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't redo while mouse buttons are pressed." +msgstr "" + +#: editor/editor_node.cpp +msgid "Nothing to redo." +msgstr "" + +#: editor/editor_node.cpp +msgid "Redo: %s" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: editor/editor_node.cpp +msgid "Reload Saved Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"The current scene has unsaved changes.\n" +"Reload the saved scene anyway? This action cannot be undone." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Run Scene..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Project Manager?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save & Quit" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save changes to the following scene(s) before quitting?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save changes to the following scene(s) before opening Project Manager?" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This option is deprecated. Situations where refresh must be forced are now " +"considered a bug. Please report." +msgstr "" + +#: editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Reopen Closed Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to enable addon plugin at: '%s' parsing of config failed." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to find script field for addon plugin at: '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s'. This might be due to a code " +"error in that script.\n" +"Disabling the addon at '%s' to prevent further errors." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s' Base type is not EditorPlugin." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s' Script is not in tool mode." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Scene '%s' was automatically imported, so it can't be modified.\n" +"To make changes to it, a new inherited scene can be created." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Clear Recent Scenes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: editor/editor_node.cpp editor/import_dock.cpp +#: editor/script_create_dialog.cpp +msgid "Default" +msgstr "" + +#: editor/editor_node.cpp editor/editor_resource_picker.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp +msgid "Show in FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play This Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "Undo Close Tab" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Close Other Tabs" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Tabs to the Right" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close All Tabs" +msgstr "" + +#: editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more files or folders" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more folders" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more files" +msgstr "" + +#: editor/editor_node.cpp +msgid "Dock Position" +msgstr "" + +#: editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: editor/editor_node.cpp +msgid "Toggle distraction-free mode." +msgstr "" + +#: editor/editor_node.cpp +msgid "Add a new scene." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Copy Text" +msgstr "" + +#: editor/editor_node.cpp +msgid "Next tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "Previous tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "Filter Files..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "New Inherited Scene..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Scene..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Open Recent" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Convert To..." +msgstr "" + +#: editor/editor_node.cpp +msgid "MeshLibrary..." +msgstr "" + +#: editor/editor_node.cpp +msgid "TileSet..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Undo" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Redo" +msgstr "" + +#: editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp +msgid "Project" +msgstr "" + +#: editor/editor_node.cpp +msgid "Project Settings..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +msgid "Version Control" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +msgid "Set Up Version Control" +msgstr "" + +#: editor/editor_node.cpp +msgid "Shut Down Version Control" +msgstr "" + +#: editor/editor_node.cpp +msgid "Export..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Install Android Build Template..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Open User Data Folder" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp +msgid "Tools" +msgstr "" + +#: editor/editor_node.cpp +msgid "Orphan Resource Explorer..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Reload Current Project" +msgstr "" + +#: editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/project_export.cpp +msgid "Debug" +msgstr "" + +#: editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, using one-click deploy will make the executable " +"attempt to connect to this computer's IP so the running project can be " +"debugged.\n" +"This option is intended to be used for remote debugging (typically with a " +"mobile device).\n" +"You don't need to enable it to use the GDScript debugger locally." +msgstr "" + +#: editor/editor_node.cpp +msgid "Small Deploy with Network Filesystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, using one-click deploy for Android will only " +"export an executable without the project data.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploying will use the USB cable for faster performance. This " +"option speeds up testing for projects with large assets." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, collision shapes and raycast nodes (for 2D and " +"3D) will be visible in the running project." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, navigation meshes and polygons will be visible " +"in the running project." +msgstr "" + +#: editor/editor_node.cpp +msgid "Force Shader Fallbacks" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, shaders will be used in their fallback form " +"(either visible via an ubershader or hidden) during all the run time.\n" +"This is useful for verifying the look and performance of fallbacks, which " +"are normally displayed briefly.\n" +"Asynchronous shader compilation must be enabled in the project settings for " +"this option to make a difference." +msgstr "" + +#: editor/editor_node.cpp +msgid "Synchronize Scene Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, any changes made to the scene in the editor " +"will be replicated in the running project.\n" +"When used remotely on a device, this is more efficient when the network " +"filesystem option is enabled." +msgstr "" + +#: editor/editor_node.cpp +msgid "Synchronize Script Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, any script that is saved will be reloaded in " +"the running project.\n" +"When used remotely on a device, this is more efficient when the network " +"filesystem option is enabled." +msgstr "" + +#: editor/editor_node.cpp editor/script_create_dialog.cpp +msgid "Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Editor Settings..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: editor/editor_node.cpp +msgid "Take Screenshot" +msgstr "" + +#: editor/editor_node.cpp +msgid "Screenshots are stored in the Editor Data/Settings Folder." +msgstr "" + +#: editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Data/Settings Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Data Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Settings Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Editor Features..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Export Templates..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: editor/editor_node.cpp +msgid "Online Documentation" +msgstr "" + +#: editor/editor_node.cpp +msgid "Questions & Answers" +msgstr "" + +#: editor/editor_node.cpp +msgid "Report a Bug" +msgstr "" + +#: editor/editor_node.cpp +msgid "Suggest a Feature" +msgstr "" + +#: editor/editor_node.cpp +msgid "Send Docs Feedback" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: editor/editor_node.cpp +msgid "About Godot" +msgstr "" + +#: editor/editor_node.cpp +msgid "Support Godot Development" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: editor/editor_node.cpp +msgid "Play" +msgstr "" + +#: editor/editor_node.cpp +msgid "Pause the scene execution for debugging." +msgstr "" + +#: editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Changing the video driver requires restarting the editor." +msgstr "" + +#: editor/editor_node.cpp editor/project_settings_editor.cpp +#: editor/settings_config_dialog.cpp +msgid "Save & Restart" +msgstr "" + +#: editor/editor_node.cpp +msgid "Update Continuously" +msgstr "" + +#: editor/editor_node.cpp +msgid "Update All Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Update Vital Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Hide Update Spinner" +msgstr "" + +#: editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: editor/editor_node.cpp +msgid "Expand Bottom Panel" +msgstr "" + +#: editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: editor/editor_node.cpp +msgid "Don't Save" +msgstr "" + +#: editor/editor_node.cpp +msgid "Android build template is missing, please install relevant templates." +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Templates" +msgstr "" + +#: editor/editor_node.cpp +msgid "Install from file" +msgstr "" + +#: editor/editor_node.cpp +msgid "Select android sources file" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This will set up your project for custom Android builds by installing the " +"source template to \"res://android/build\".\n" +"You can then apply modifications and build your own custom APK on export " +"(adding modules, changing the AndroidManifest.xml, etc.).\n" +"Note that in order to make custom builds instead of using pre-built APKs, " +"the \"Use Custom Build\" option should be enabled in the Android export " +"preset." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"The Android build template is already installed in this project and it won't " +"be overwritten.\n" +"Remove the \"res://android/build\" directory manually before attempting this " +"operation again." +msgstr "" + +#: editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + +#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp +msgid "Export Library" +msgstr "" + +#: editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: editor/editor_node.cpp +msgid "Apply MeshInstance Transforms" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp +msgid "New Inherited" +msgstr "" + +#: editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp +#: modules/visual_script/visual_script_nodes.cpp +msgid "Select" +msgstr "" + +#: editor/editor_node.cpp +msgid "Select Current" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open 2D Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open 3D Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Script Editor" +msgstr "" + +#: editor/editor_node.cpp editor/project_manager.cpp +msgid "Open Asset Library" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open the next Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open the previous Editor" +msgstr "" + +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + +#: editor/editor_path.cpp +msgid "No sub-resources found." +msgstr "" + +#: editor/editor_path.cpp +msgid "Open a list of sub-resources." +msgstr "" + +#: editor/editor_plugin.cpp +msgid "Creating Mesh Previews" +msgstr "" + +#: editor/editor_plugin.cpp +msgid "Thumbnail..." +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Main Script:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Edit Plugin" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Update" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Version" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Author" +msgstr "" + +#: editor/editor_plugin_settings.cpp +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Status" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame Time (ms)" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Average Time (ms)" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Physics Frame %" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "" +"Inclusive: Includes time from other functions called by this function.\n" +"Use this to spot bottlenecks.\n" +"\n" +"Self: Only count the time spent in the function itself, not in other " +"functions called by that function.\n" +"Use this to find individual functions to optimize." +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Time" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Calls" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Edit Text:" +msgstr "" + +#: editor/editor_properties.cpp editor/script_create_dialog.cpp +msgid "On" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Layer" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Bit %d, value %d" +msgstr "" + +#: editor/editor_properties.cpp +msgid "[Empty]" +msgstr "" + +#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp +msgid "Assign..." +msgstr "" + +#: editor/editor_properties.cpp +msgid "Invalid RID" +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on resources saved as a file.\n" +"Resource needs to belong to a scene." +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on this resource because it's not set as " +"local to scene.\n" +"Please switch on the 'local to scene' property on it (and all resources " +"containing it up to a node)." +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Pick a Viewport" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Selected node is not a Viewport!" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Size: " +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Page: " +msgstr "" + +#: editor/editor_properties_array_dict.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "New Key:" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "New Value:" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Add Key/Value Pair" +msgstr "" + +#: editor/editor_resource_picker.cpp +msgid "" +"The selected resource (%s) does not match any type expected for this " +"property (%s)." +msgstr "" + +#: editor/editor_resource_picker.cpp +msgid "Quick Load" +msgstr "" + +#: editor/editor_resource_picker.cpp editor/property_editor.cpp +msgid "Make Unique" +msgstr "" + +#: editor/editor_resource_picker.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp +#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Paste" +msgstr "" + +#: editor/editor_resource_picker.cpp editor/property_editor.cpp +msgid "Convert to %s" +msgstr "" + +#: editor/editor_resource_picker.cpp editor/property_editor.cpp +msgid "New %s" +msgstr "" + +#: editor/editor_resource_picker.cpp editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp +msgid "Extend Script" +msgstr "" + +#: editor/editor_run_native.cpp +msgid "" +"No runnable export preset found for this platform.\n" +"Please add a runnable preset in the Export menu or define an existing preset " +"as runnable." +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: editor/editor_spin_slider.cpp +msgid "Hold %s to round to integers. Hold Shift for more precise changes." +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: editor/editor_sub_scene.cpp editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git"). +#: editor/editor_vcs_interface.cpp +msgid "%s Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Open the folder containing these templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uninstall these templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "There are no mirrors available." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Retrieving the mirror list..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Starting the download..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error requesting URL:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connecting to the mirror..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't resolve the requested address." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't connect to the mirror." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "No response from the mirror." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Request ended up in a redirect loop." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Request failed:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download complete; extracting templates..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Cannot remove temporary file:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"Templates installation failed.\n" +"The problematic templates archives can be found at '%s'." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON with the list of mirrors. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Best available mirror" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"No download links found for this version. Direct download is only available " +"for official releases." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Disconnected" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Resolving" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't Resolve" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connecting..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't Connect" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connected" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Requesting..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Downloading" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connection Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "SSL Handshake Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't open the export templates file." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Invalid version.txt format inside the export templates file: %s." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "No version.txt found inside the export templates file." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error creating path for extracting templates:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Extracting Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Importing:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Remove templates for the version '%s'?" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uncompressing Android Build Sources" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Export Template Manager" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Current Version:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Export templates are missing. Download them or install from a file." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Export templates are installed and ready to be used." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Open Folder" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Open the folder containing installed templates for the current version." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uninstall" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uninstall templates for the current version." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download from:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Open in Web Browser" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Copy Mirror URL" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download and Install" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"Download and install templates for the current version from the best " +"possible mirror." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Official export templates aren't available for development builds." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Install from File" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Install templates from a local file." +msgstr "" + +#: editor/export_template_manager.cpp editor/find_in_files.cpp +#: editor/progress_dialog.cpp scene/gui/dialogs.cpp +msgid "Cancel" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Cancel the download of the templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Other Installed Versions:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uninstall Template" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Select Template File" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"The templates will continue to download.\n" +"You may experience a short editor freeze when they finish." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Status: Import of file failed. Please fix file and reimport manually." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "" +"Importing has been disabled for this file, so it can't be opened for editing." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Cannot move/rename resources root." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Cannot move a folder into itself." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Error moving:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Error duplicating:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Unable to update dependencies:" +msgstr "" + +#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp +msgid "No name provided." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Provided name contains invalid characters." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "A file or folder with this name already exists." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Name contains invalid characters." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "" +"This file extension is not recognized by the editor.\n" +"If you want to rename it anyway, use your operating system's file manager.\n" +"After renaming to an unknown extension, the file won't be shown in the " +"editor anymore." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "" +"The following files or folders conflict with items in the target location " +"'%s':\n" +"\n" +"%s\n" +"\n" +"Do you wish to overwrite them?" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Renaming file:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Renaming folder:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicating file:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicating folder:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Inherited Scene" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Open Scenes" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Add to Favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Remove from Favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Edit Dependencies..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "View Owners..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move To..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Scene..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "New Script..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Resource..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/inspector_dock.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_editor_debugger.cpp +msgid "Expand All" +msgstr "" + +#: editor/filesystem_dock.cpp editor/inspector_dock.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_editor_debugger.cpp +msgid "Collapse All" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort files" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort by Name (Ascending)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort by Name (Descending)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort by Type (Ascending)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort by Type (Descending)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort by Last Modified" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Sort by First Modified" +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Rename..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Focus the search box" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Previous Folder/File" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Next Folder/File" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Toggle Split Mode" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Search files" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "" +"Scanning Files,\n" +"Please Wait..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move" +msgstr "" + +#: editor/filesystem_dock.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/project_manager.cpp editor/rename_dialog.cpp +#: editor/scene_tree_dock.cpp +msgid "Rename" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Overwrite" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Create Scene" +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +msgid "Find in Files" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find:" +msgstr "" + +#: editor/find_in_files.cpp editor/rename_dialog.cpp +msgid "Replace:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Folder:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Filters:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "" +"Include the files with the following extensions. Add or remove them in " +"ProjectSettings." +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find..." +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp +msgid "Replace..." +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +msgid "Replace in Files" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find: " +msgstr "" + +#: editor/find_in_files.cpp +msgid "Replace: " +msgstr "" + +#: editor/find_in_files.cpp +msgid "Replace All (NO UNDO)" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Searching..." +msgstr "" + +#: editor/find_in_files.cpp +msgid "%d match in %d file." +msgstr "" + +#: editor/find_in_files.cpp +msgid "%d matches in %d file." +msgstr "" + +#: editor/find_in_files.cpp +msgid "%d matches in %d files." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Group name already exists." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Invalid group name." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Rename Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Delete Group" +msgstr "" + +#: editor/groups_editor.cpp editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Nodes Not in Group" +msgstr "" + +#: editor/groups_editor.cpp editor/scene_tree_dock.cpp +#: editor/scene_tree_editor.cpp +msgid "Filter nodes" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Nodes in Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Empty groups will be automatically removed." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Group Editor" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Manage Groups" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Single Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes+Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Importing Scene..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating Lightmaps" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating for Mesh: " +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Running Custom Script..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Error running post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Did you return a Node-derived object in the `post_import()` method?" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Saving..." +msgstr "" + +#: editor/import_defaults_editor.cpp +msgid "Select Importer" +msgstr "" + +#: editor/import_defaults_editor.cpp +msgid "Importer:" +msgstr "" + +#: editor/import_defaults_editor.cpp +msgid "Reset to Defaults" +msgstr "" + +#: editor/import_dock.cpp +msgid "Keep File (No Import)" +msgstr "" + +#: editor/import_dock.cpp +msgid "%d Files" +msgstr "" + +#: editor/import_dock.cpp +msgid "Set as Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid "Clear Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid "Reimport" +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"You have pending changes that haven't been applied yet. Click Reimport to " +"apply changes made to the import options.\n" +"Selecting another resource in the FileSystem dock without clicking Reimport " +"first will discard changes made in the Import dock." +msgstr "" + +#: editor/import_dock.cpp +msgid "Import As:" +msgstr "" + +#: editor/import_dock.cpp +msgid "Preset" +msgstr "" + +#: editor/import_dock.cpp +msgid "Save Scenes, Re-Import, and Restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"Select a resource file in the filesystem or in the inspector to adjust " +"import settings." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Failed to load resource." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Paste Properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Save As..." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Extra resource options." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Edit Resource from Clipboard" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Resource" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Resource Built-In" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "History of recently edited objects." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Open documentation for this object." +msgstr "" + +#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp +msgid "Open Documentation" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Filter properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Manage object properties." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Changes may be lost!" +msgstr "" + +#: editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: editor/node_dock.cpp +msgid "Select a single node to edit its signals and groups." +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Edit a Plugin" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Create a Plugin" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Plugin Name:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Subfolder:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Author:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Version:" +msgstr "" + +#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp +msgid "Language:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Script Name:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Activate now?" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create points." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "" +"Edit points.\n" +"LMB: Move Point\n" +"RMB: Erase Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Erase points." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Insert Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon (Remove Point)" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Remove Polygon And Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Load..." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Move Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Change BlendSpace1D Limits" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Change BlendSpace1D Labels" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "This type of node can't be used. Only root nodes are allowed." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Animation Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Remove BlendSpace1D Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Move BlendSpace1D Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"AnimationTree is inactive.\n" +"Activate to enable playback, check node warnings if activation fails." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Set the blending position within the space" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Select and move points, create points with RMB." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp +msgid "Enable snap and show grid." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Open Editor" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Open Animation Node" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Triangle already exists." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Triangle" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Change BlendSpace2D Limits" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Change BlendSpace2D Labels" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Remove BlendSpace2D Point" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Remove BlendSpace2D Triangle" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "BlendSpace2D does not belong to an AnimationTree node." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "No triangles exist, so no blending can take place." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Toggle Auto Triangles" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create triangles by connecting points." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Erase points and triangles." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Generate blend triangles automatically (instead of manually)" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Parameter Changed:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Filters" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Output node can't be added to the blend tree." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Add Node to BlendTree" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Node Moved" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Unable to connect, port may be in use or connection may be invalid." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Nodes Connected" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Nodes Disconnected" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Set Animation" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Node" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Toggle Filter On/Off" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Change Filter" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "No animation player set, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Player path set is invalid, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "" +"Animation player has no valid root node path, so unable to retrieve track " +"names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Renamed" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node..." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Edit Filtered Tracks:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Enable Filtering" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Animation?" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Invalid animation name!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation name already exists!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to copy!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation resource on clipboard!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to edit!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp +msgid "New" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Transitions..." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Open in Inspector" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Enable Onion Skinning" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Onion Skinning Options" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Directions" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Past" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Future" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Depth" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "1 step" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "2 steps" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "3 steps" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Differences Only" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Force White Modulate" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Include Gizmos (3D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pin AnimationPlayer" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +msgid "Error!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Move Node" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Add Transition" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Immediate" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Sync" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "At End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Travel" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Start and end nodes are needed for a sub-transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "No playback resource set at path: %s." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Removed" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition Removed" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set Start Node (Autoplay)" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"Select and move nodes.\n" +"RMB to add new nodes.\n" +"Shift+LMB to create connections." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Create new nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Connect nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Remove selected node or transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Toggle autoplay this animation on start, restart or seek to zero." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set the end animation. This is useful for sub-transitions." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition: " +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Import Animations..." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Filters..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Contents:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "View Files" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connection error, please try again." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect to host:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response from host:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve hostname:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, return code:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Cannot save response to:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Write error." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, too many redirects" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Redirect loop." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, timeout" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Timeout." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Failed:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Bad download hash, assuming file has been tampered with." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Expected:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Got:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Failed SHA-256 hash check" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Asset Download Error:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading (%s / %s)..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Resolving..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Error making request" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Idle" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Install..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Retry" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download Error" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download for this asset is already in progress!" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "First" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Previous" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Next" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Last" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Search templates, projects, and demos" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Search assets (excluding templates, projects, and demos)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Import..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Plugins..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +msgid "Sort:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Category:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Support" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Loading..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: editor/plugins/audio_stream_editor_plugin.cpp +msgid "Audio Preview Play/Pause" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Can't determine a save path for lightmap images.\n" +"Save your scene and try again." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use " +"In Baked Light' and 'Generate Lightmap' flags are on." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Failed creating lightmap images, make sure path is writable." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Failed determining lightmap size. Maximum lightmap size too small?" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Some mesh is invalid. Make sure the UV2 channel values are contained within " +"the [0.0,1.0] square region." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Godot editor was built without ray tracing support, lightmaps can't be baked." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Bake Lightmaps" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Select lightmap bake file:" +msgstr "" + +#: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Vertical Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Vertical Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove Vertical Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Horizontal Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Horizontal Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove Horizontal Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Horizontal and Vertical Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate %d CanvasItems" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate CanvasItem \"%s\" to %d degrees" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move CanvasItem \"%s\" Anchor" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Node2D \"%s\" to (%s, %s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Resize Control \"%s\" to (%d, %d)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale %d CanvasItems" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale CanvasItem \"%s\" to (%s, %s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move %d CanvasItems" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move CanvasItem \"%s\" to (%d, %d)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Locked" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Grouped" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"When active, moving Control nodes changes their anchors instead of their " +"margins." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchors only" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors and Margins" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Project Camera Override\n" +"Overrides the running project's camera with the editor viewport camera." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Project Camera Override\n" +"No project instance running. Run the project from the editor to use this " +"feature." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Group Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Ungroup Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Custom Bone(s) from Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Warning: Children of a container get their position and size determined only " +"by their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Reset" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Select Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Drag: Rotate selected node around pivot." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move selected node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Scale selected node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "V: Set selected node's pivot position." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Alt+RMB: Show list of all nodes at position clicked, including locked." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "RMB: Add node at position clicked." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Shift: Scale proportionally." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Ruler Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle smart snapping." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Smart Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle grid snapping." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Grid Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snapping Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Smart Snapping" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap..." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Parent" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Anchor" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Sides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Other Nodes" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock Selected Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock Selected Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Group Selected Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Ungroup Selected Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Custom Bone(s) from Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Custom Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Always Show Grid" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Helpers" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Rulers" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Origin" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Viewport" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Group And Lock Icons" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Preview Canvas Scale" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated or scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation Key and Pose Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Add Node Here" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Instance Scene Here" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Multiply grid step by 2" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Divide grid step by 2" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 3.125%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 6.25%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 12.5%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 25%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 50%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 100%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 200%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 400%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 800%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom to 1600%" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Add %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Adding %s..." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Default Type" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Drag & drop + Shift : Add node as sibling\n" +"Drag & drop + Alt : Change node type" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Polygon3D" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Restart" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Solid Pixels" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Border Pixels" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Directed Border Pixels" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +msgid "CPUParticles" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Mesh" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Node" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat 0" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat 1" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Smoothstep" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Modify Curve Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Modify Curve Tangent" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Load Curve Preset" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Add Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Remove Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Left Linear" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Right Linear" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Load Preset" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Remove Curve Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Toggle Curve Linear Tangent" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Hold Shift to edit tangents individually" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Right click to add point" +msgstr "" + +#: editor/plugins/gi_probe_editor_plugin.cpp +msgid "Bake GI Probe" +msgstr "" + +#: editor/plugins/gradient_editor_plugin.cpp +msgid "Gradient Edited" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Couldn't create a Trimesh collision shape." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Can't create a single convex collision shape for the scene root." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Couldn't create a single convex collision shape." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Simplified Convex Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Single Convex Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Can't create multiple convex collision shapes for the scene root." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Couldn't create any collision shapes." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Multiple Convex Shapes" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Contained Mesh is not of type ArrayMesh." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Unwrap failed, mesh may not be manifold?" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "No mesh to debug." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has no UV in layer %d." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a StaticBody and assigns a polygon-based collision shape to it " +"automatically.\n" +"This is the most accurate (but slowest) option for collision detection." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a polygon-based collision shape.\n" +"This is the most accurate (but slowest) option for collision detection." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Single Convex Collision Sibling" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a single convex collision shape.\n" +"This is the fastest (but least accurate) option for collision detection." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Simplified Convex Collision Sibling" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a simplified convex collision shape.\n" +"This is similar to single collision shape, but can result in a simpler " +"geometry in some cases, at the cost of accuracy." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Multiple Convex Collision Siblings" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a polygon-based collision shape.\n" +"This is a performance middle-ground between a single convex collision and a " +"polygon-based collision." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh..." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a static outline mesh. The outline mesh will have its normals " +"flipped automatically.\n" +"This can be used instead of the SpatialMaterial Grow property when using " +"that property isn't possible." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "View UV1" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "View UV2" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Unwrap UV2 for Lightmap/AO" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import from Scene (Ignore Transforms)" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import from Scene (Apply Transforms)" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: editor/plugins/navigation_polygon_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Convert to CPUParticles" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generating Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generate Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Can only set point into a ParticlesMaterial process material" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Convert to CPUParticles2D" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generation Time (sec):" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "The geometry's faces don't contain any area." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "The geometry doesn't contain any faces." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't inherit from Spatial." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't contain geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't contain face geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Points:" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points+Normal (Directed)" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Source: " +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "A processor material of type 'ParticlesMaterial' is required." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generating AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate Visibility AABB" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Out-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove In-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Left Click: Split Segment (in curve)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +#: editor/plugins/theme_editor_preview.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp +msgid "Options" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Angles" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Lengths" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Out-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove In-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: editor/plugins/physical_bone_plugin.cpp +msgid "Move Joint" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"The skeleton property of the Polygon2D does not point to a Skeleton2D node" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"No texture in this polygon.\n" +"Set a texture to be able to edit UV." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Polygon 2D has internal vertices, so it can no longer be edited in the " +"viewport." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon & UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Invalid Polygon (need 3 different vertices)" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Add Custom Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Custom Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint Bone Weights" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Open Polygon 2D UV editor." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Points" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygons" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Points" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Command: Rotate" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Command: Scale" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create a custom polygon. Enables custom polygon rendering." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Remove a custom polygon. If none remain, custom polygon rendering is " +"disabled." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Unpaint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Radius:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Copy Polygon to UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Copy UV to Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Settings" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Configure Grid:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones to Polygon" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Type:" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + +#: editor/plugins/room_manager_editor_plugin.cpp +msgid "Flip Portals" +msgstr "" + +#: editor/plugins/room_manager_editor_plugin.cpp +msgid "Room Generate Points" +msgstr "" + +#: editor/plugins/room_manager_editor_plugin.cpp +msgid "Generate Points" +msgstr "" + +#: editor/plugins/room_manager_editor_plugin.cpp +msgid "Flip Portal" +msgstr "" + +#: editor/plugins/room_manager_editor_plugin.cpp +msgid "Occluder Set Transform" +msgstr "" + +#: editor/plugins/room_manager_editor_plugin.cpp +msgid "Center Node" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "AnimationTree has no path set to an AnimationPlayer" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Path to AnimationPlayer is invalid" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Files" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close and save changes?" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error writing TextFile:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Could not load file at:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving file!" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Saving" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Importing" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "New Text File..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open File" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save File As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "%s Class Reference" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Next" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Previous" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Filter scripts" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Toggle alphabetical sorting of the method list." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Filter methods" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Sort" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Up" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Down" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Next Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Previous Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reopen Closed Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Copy Script Path" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Previous" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "Search" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +#: editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Debug with External Editor" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Online Docs" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open Godot online documentation." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Discard" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Results" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Scripts" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Connections to method:" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp +msgid "Source" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Target" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "" +"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "[Ignore]" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Only resources from filesystem can be dropped." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Lookup Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Convert Case" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Uppercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Lowercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Capitalize" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Syntax Highlighter" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "Bookmarks" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Breakpoints" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "Go To" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Cut" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Select All" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Delete Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold/Unfold Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Unfold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Evaluate Selection" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Indent to Spaces" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Indent to Tabs" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Auto Indent" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Find in Files..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Replace in Files..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Bookmark" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Next Bookmark" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Bookmark" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Remove All Bookmarks" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Line..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Next Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Breakpoint" +msgstr "" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "" +"This shader has been modified on on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "Shader" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "This skeleton has no bones, create some children Bone2D nodes." +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Set Rest Pose to Bones" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Create Rest Pose from Bones" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Skeleton2D" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Reset to Rest Pose" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Overwrite Rest Pose" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical bones" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Skeleton" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical skeleton" +msgstr "" + +#: editor/plugins/skeleton_ik_editor_plugin.cpp +msgid "Play IK" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear Perspective" +msgstr "" + +#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled. +#: editor/plugins/spatial_editor_plugin.cpp +msgid " [auto]" +msgstr "" + +#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled. +#: editor/plugins/spatial_editor_plugin.cpp +msgid " [portals active]" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp +msgid "None" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate" +msgstr "" + +#. TRANSLATORS: This refers to the movement that changes the position of an object. +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling: " +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translating: " +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pitch:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Yaw:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Size:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Objects Drawn:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Material Changes:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Shader Changes:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Surface Changes:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Draw Calls:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Vertices:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "FPS: %d (%s ms)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Align Transform with View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Align Rotation with View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Auto Orthogonal Enabled" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock View Rotation" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Unshaded" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Environment" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Information" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View FPS" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Half Resolution" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Enable Doppler" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Cinematic Preview" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Left" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Right" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Forward" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Backwards" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Up" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Down" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Speed Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Slow Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Toggle Camera Preview" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Rotation Locked" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"To zoom further, change the camera's clipping planes (View -> Settings...)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Note: The FPS value displayed is the editor's framerate.\n" +"It cannot be used as a reliable indication of in-game performance." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Convert Rooms" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Click to toggle between visibility states.\n" +"\n" +"Open eye: Gizmo is visible.\n" +"Closed eye: Gizmo is hidden.\n" +"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Nodes to Floor" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Couldn't find a solid floor to snap the selection to." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Use Local Space" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Converts rooms for portal culling." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orbit View Down" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orbit View Left" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orbit View Right" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orbit View Up" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orbit View 180" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Switch Perspective/Orthogonal View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Insert Animation Key" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Selection" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Toggle Freelook" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Decrease Field of View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Increase Field of View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Reset Field of View to Default" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Object to Floor" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog..." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Portal Culling" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Occlusion Culling" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Settings..." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unnamed Gizmo" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite is empty!" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Can't convert a sprite using animation frames to mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't replace by mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Simplification: " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Shrink (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Grow (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Update Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Settings:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "No Frames Selected" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add %d Frame(s)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add a Texture from File" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frames from a Sprite Sheet" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move (Before)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move (After)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Select Frames" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Horizontal:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Vertical:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Select/Clear All Frames" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Create Frames from Sprite Sheet" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Region Rect" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Margin" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Separation:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "TextureRegion" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Styleboxes" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "{num} color(s)" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "No colors found." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "{num} constant(s)" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "No constants found." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "{num} font(s)" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "No fonts found." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "{num} icon(s)" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "No icons found." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "{num} stylebox(es)" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "No styleboxes found." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "{num} currently selected" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Nothing was selected for the import." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Importing Theme Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Importing items {n}/{n}" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Updating the editor" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Finalizing" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Filter:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "With Data" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select by data type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible color items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible color items and their data." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect all visible color items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible constant items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible constant items and their data." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect all visible constant items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible font items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible font items and their data." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect all visible font items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible icon items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible icon items and their data." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect all visible icon items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible stylebox items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all visible stylebox items and their data." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect all visible stylebox items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"Caution: Adding icon data may considerably increase the size of your Theme " +"resource." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Collapse types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Expand types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all Theme items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select With Data" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select all Theme items with item data." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect All" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Deselect all Theme items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Import Selected" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"Import Items tab has some items selected. Selection will be lost upon " +"closing this window.\n" +"Close anyway?" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"Select a theme type from the list to edit its items.\n" +"You can add a custom type or import a type with its items from another theme." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Color Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Rename Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Constant Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Font Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Icon Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All StyleBox Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"This theme type is empty.\n" +"Add more items to it manually or by importing from another theme." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Color Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Constant Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Font Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Icon Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Stylebox Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Rename Color Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Rename Constant Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Rename Font Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Rename Icon Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Rename Stylebox Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Invalid file, not a Theme resource." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Invalid file, same as the edited Theme resource." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Manage Theme Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Edit Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Types:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add StyleBox Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Items:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Custom Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Theme Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Old Name:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Import Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Default Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Editor Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select Another Theme Resource:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Another Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Filter the list of types or create a new custom type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Available Node-based types:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Type name is empty!" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Are you sure you want to create an empty type?" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Confirm Item Rename" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Cancel Item Rename" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Override Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Unpin this StyleBox as a main style." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"Pin this StyleBox as a main style. Editing its properties will update the " +"same properties in all other StyleBoxes of this type." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Show Default" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Show default type items alongside items that have been overridden." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Override All" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Override all default type items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Manage Items..." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add, remove, organize and import Theme items." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Preview" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Default Preview" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select UI Scene:" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "" +"Toggle the control picker, allowing to visually select control types for " +"edit." +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Toggle Button" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Disabled Button" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Disabled Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Check Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Checked Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Checked Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Named Separator" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Submenu" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Subitem 1" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Subitem 2" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Has" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Many" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Disabled LineEdit" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Tab 1" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Tab 2" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Tab 3" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Editable Item" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Subtree" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Has,Many,Options" +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Invalid path, the PackedScene resource was probably moved or removed." +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Invalid PackedScene resource, must have a Control node at its root." +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Invalid file, not a PackedScene resource." +msgstr "" + +#: editor/plugins/theme_editor_preview.cpp +msgid "Reload the scene to reflect its most actual state." +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Fix Invalid Tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cut Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Line Draw" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket Fill" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Find Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Disable Autotile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Enable Priority" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Filter tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Give a TileSet resource to this TileMap to use its tiles." +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "" +"Shift+LMB: Line Draw\n" +"Shift+Command+LMB: Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "" +"Shift+LMB: Line Draw\n" +"Shift+Ctrl+LMB: Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate Left" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate Right" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip Horizontally" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip Vertically" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Clear Transform" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Texture(s) to TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected Texture from TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Next Coordinate" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select the next shape, subtile, or Tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Previous Coordinate" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select the previous shape, subtile, or Tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Icon Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Copy bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Erase bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new rectangle." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Keep polygon inside region Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Enable snap and show grid (configurable via the Inspector)." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Display Tile Names (Hold Alt Key)" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Add or select a texture on the left panel to edit the tiles bound to it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected texture? This will remove all tiles which use it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "You haven't selected a texture to remove." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene? This will overwrite all current tiles." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Texture" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "%s file(s) were not added because was already on the list." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Drag handles to edit Rect.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete selected Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select current edited sub-tile.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: Set bit on.\n" +"RMB: Set bit off.\n" +"Shift+LMB: Set wildcard bit.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its priority.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its z index.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Icon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Clear Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Polygon Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Polygon Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "This property can't be changed." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "TileSet" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No VCS plugins are available." +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Error" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "" +"Remote settings are empty. VCS features that use the network may not work." +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No commit message was provided." +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Staged Changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Unstaged Changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit:" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Date:" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Subtitle:" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Do you want to remove the %s branch?" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Do you want to remove the %s remote?" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Apply" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Version Control System" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Initialize" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Remote Login" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Username" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Password" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "SSH Public Key Path" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Select SSH public key path" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "SSH Private Key Path" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Select SSH private key path" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "SSH Passphrase" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Detect new changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Discard all changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Stage all changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Unstage all changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit Message" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit Changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit List" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit list size" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Branches" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Create New Branch" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Remove Branch" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Branch Name" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Remotes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Create New Remote" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Remove Remote" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Remote Name" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Remote URL" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Fetch" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Pull" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Push" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Force Push" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Modified" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Renamed" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Deleted" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Typechange" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Unmerged" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "View:" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Split" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Unified" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(GLES3 only)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Output" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sampler" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add input port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add output port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change input port type" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change output port type" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change input port name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change output port name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Remove input port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Remove output port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set expression" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Resize VisualShader node" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set Uniform Name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set Input Default Port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node to Visual Shader" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Node(s) Moved" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Duplicate Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Visual Shader Input Type Changed" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "UniformRef Name Changed" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Light" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Show resulted shader code." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Create Shader Node" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Grayscale function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts HSV vector to RGB equivalent." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts RGB vector to HSV equivalent." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sepia function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Burn operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Darken operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Difference operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Dodge operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "HardLight operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Lighten operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Overlay operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Screen operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "SoftLight operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the boolean result of the %s comparison between two parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Equal (==)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Greater Than (>)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Greater Than or Equal (>=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated vector if the provided scalars are equal, greater or " +"less." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between INF and a scalar " +"parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between NaN and a scalar " +"parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Less Than (<)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Less Than or Equal (<=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Not Equal (!=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated vector if the provided boolean value is true or false." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated scalar if the provided boolean value is true or false." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the boolean result of the comparison between two parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between INF (or NaN) and a " +"scalar parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for all shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Input parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex and fragment shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for fragment and light shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for fragment shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for light shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex and fragment shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "E constant (2.718282). Represents the base of the natural logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Epsilon constant (0.00001). Smallest possible scalar number." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Phi constant (1.618034). Golden ratio." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi/4 constant (0.785398) or 45 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi/2 constant (1.570796) or 90 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi constant (3.141593) or 180 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Tau constant (6.283185) or 360 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sqrt2 constant (1.414214). Square root of 2." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the absolute value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-tangent of the parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Finds the nearest integer that is greater than or equal to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Constrains a value to lie between two further values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts a quantity in radians to degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-e Exponential." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-2 Exponential." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest integer less than or equal to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Computes the fractional part of the argument." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse of the square root of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Natural logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-2 logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the greater of two values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the lesser of two values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the opposite value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 - scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the value of the first parameter raised to the power of the second." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts a quantity in degrees to radians." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 / scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest integer to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest even integer to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Clamps the value between 0.0 and 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Extracts the sign of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the square root of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( scalar(edge), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the truncated value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Adds scalar to scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Divides scalar by scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies scalar by scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the remainder of the two scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Subtracts scalar from scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Perform the cubic texture lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Perform the texture lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Cubic texture uniform lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "2D texture uniform lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "2D texture uniform lookup with triplanar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Calculate the outer product of a pair of vectors.\n" +"\n" +"OuterProduct treats the first parameter 'c' as a column vector (matrix with " +"one column) and the second parameter 'r' as a row vector (matrix with one " +"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix " +"whose number of rows is the number of components in 'c' and whose number of " +"columns is the number of components in 'r'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Composes transform from four vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Decomposes transform to four vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the determinant of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the inverse of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the transpose of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies transform by transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies vector by transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Composes vector from three scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Decomposes vector to three scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the cross product of two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the distance between two points." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the dot product of two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the vector that points in the same direction as a reference vector. " +"The function has three vector parameters : N, the vector to orient, I, the " +"incident vector, and Nref, the reference vector. If the dot product of I and " +"Nref is smaller than zero the return value is N. Otherwise -N is returned." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the length of a vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two vectors using scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the normalize product of vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 - vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 / vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the vector that points in the direction of reflection ( a : incident " +"vector, b : normal vector )." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the vector that points in the direction of refraction." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( vector(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Adds vector to vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Divides vector by vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies vector by vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the remainder of the two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Subtracts vector from vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Custom Godot Shader Language expression, with custom amount of input and " +"output ports. This is a direct injection of code into the vertex/fragment/" +"light function, do not use it to write the function declarations inside." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns falloff based on the dot product of surface normal and view " +"direction of camera (pass associated inputs to it)." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Custom Godot Shader Language expression, which is placed on top of the " +"resulted shader. You can place various function definitions inside and call " +"it later in the Expressions. You can also declare varyings, uniforms and " +"constants." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "A reference to an existing uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(Fragment/Light mode only) Scalar derivative function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(Fragment/Light mode only) Vector derivative function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'x' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'y' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " +"'y'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " +"'y'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "VisualShader" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Edit Visual Property:" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Visual Shader Mode Changed" +msgstr "" + +#: editor/project_export.cpp +msgid "Runnable" +msgstr "" + +#: editor/project_export.cpp +msgid "Delete preset '%s'?" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Failed to export the project for platform '%s'.\n" +"Export templates seem to be missing or invalid." +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Failed to export the project for platform '%s'.\n" +"This might be due to a configuration issue in the export preset or your " +"export settings." +msgstr "" + +#: editor/project_export.cpp +msgid "Release" +msgstr "" + +#: editor/project_export.cpp +msgid "Exporting All" +msgstr "" + +#: editor/project_export.cpp +msgid "The given export path doesn't exist:" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing/corrupted:" +msgstr "" + +#: editor/project_export.cpp +msgid "Presets" +msgstr "" + +#: editor/project_export.cpp editor/project_settings_editor.cpp +msgid "Add..." +msgstr "" + +#: editor/project_export.cpp +msgid "" +"If checked, the preset will be available for use in one-click deploy.\n" +"Only one preset per platform may be marked as runnable." +msgstr "" + +#: editor/project_export.cpp +msgid "Export Path" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: editor/project_export.cpp +msgid "Export all resources in the project" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected scenes (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected resources (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources to export:" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to export non-resource files/folders\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to exclude files/folders from project\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" + +#: editor/project_export.cpp +msgid "Features" +msgstr "" + +#: editor/project_export.cpp +msgid "Custom (comma-separated):" +msgstr "" + +#: editor/project_export.cpp +msgid "Feature List:" +msgstr "" + +#: editor/project_export.cpp +msgid "Script" +msgstr "" + +#: editor/project_export.cpp +msgid "GDScript Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Text" +msgstr "" + +#: editor/project_export.cpp +msgid "Compiled Bytecode (Faster Loading)" +msgstr "" + +#: editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: editor/project_export.cpp +msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)" +msgstr "" + +#: editor/project_export.cpp +msgid "GDScript Encryption Key (256-bits as hexadecimal):" +msgstr "" + +#: editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: editor/project_export.cpp +msgid "Export mode?" +msgstr "" + +#: editor/project_export.cpp +msgid "Export All" +msgstr "" + +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing:" +msgstr "" + +#: editor/project_export.cpp +msgid "Manage Export Templates" +msgstr "" + +#: editor/project_export.cpp +msgid "Export With Debug" +msgstr "" + +#: editor/project_manager.cpp +msgid "The path specified doesn't exist." +msgstr "" + +#: editor/project_manager.cpp +msgid "Error opening package file (it's not in ZIP format)." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose an empty folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose a \"project.godot\" or \".zip\" file." +msgstr "" + +#: editor/project_manager.cpp +msgid "This directory already contains a Godot project." +msgstr "" + +#: editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid project name." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "" + +#: editor/project_manager.cpp +msgid "It would be a good idea to name your project." +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Couldn't load project.godot in project path (error %d). It may be missing or " +"corrupted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't edit project.godot in project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't create project.godot in project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "Error opening package file, not in ZIP format." +msgstr "" + +#: editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Package installed successfully!" +msgstr "" + +#: editor/project_manager.cpp +msgid "Rename Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "" + +#: editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "" + +#: editor/project_manager.cpp +msgid "Install Project:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Installation Path:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "Not supported by your GPU drivers." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Missing Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Error: Project is missing on the filesystem." +msgstr "" + +#: editor/project_manager.cpp +msgid "Can't open project at '%s'." +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file was generated by an older engine " +"version, and needs to be converted for this version:\n" +"\n" +"%s\n" +"\n" +"Do you want to convert it?\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The project settings were created by a newer engine version, whose settings " +"are not compatible with this version." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Can't run project: no main scene defined.\n" +"Please edit the project and set the main scene in the Project Settings under " +"the \"Application\" category." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Can't run project: Assets need to be imported.\n" +"Please edit the project to trigger the initial import." +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to run %d projects at once?" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove %d projects from the list?" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove this project from the list?" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Remove all missing projects from the list?\n" +"The project folders' contents won't be modified." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Language changed.\n" +"The interface will update after restarting the editor or project manager." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Are you sure to scan %s folders for existing Godot projects?\n" +"This could take a while." +msgstr "" + +#. TRANSLATORS: This refers to the application where users manage their Godot projects. +#: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp +msgid "Local Projects" +msgstr "" + +#: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp +msgid "Edit Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Run Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: editor/project_manager.cpp +msgid "Scan Projects" +msgstr "" + +#: editor/project_manager.cpp +msgid "Select a Folder to Scan" +msgstr "" + +#: editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Import Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove Missing" +msgstr "" + +#: editor/project_manager.cpp +msgid "About" +msgstr "" + +#: editor/project_manager.cpp +msgid "Asset Library Projects" +msgstr "" + +#: editor/project_manager.cpp +msgid "Restart Now" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove All" +msgstr "" + +#: editor/project_manager.cpp +msgid "Also delete project contents (no undo!)" +msgstr "" + +#: editor/project_manager.cpp +msgid "Can't run project" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"You currently don't have any projects.\n" +"Would you like to explore official example projects in the Asset Library?" +msgstr "" + +#: editor/project_manager.cpp +msgid "Filter projects" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"This field filters projects by name and last path component.\n" +"To filter projects by name and full path, the query must contain at least " +"one `/` character." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Physical Key" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Key " +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joy Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joy Axis" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Mouse Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "An action with the name '%s' already exists." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Change Action deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "All Devices" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid " (Physical)" +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "Press a Key..." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Left Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Right Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Middle Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Up Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Down Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Left Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Right Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "X Button 1" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "X Button 2" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joypad Axis Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Axis" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joypad Button Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Left Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Right Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Middle Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Up." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Down." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Global Property" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Select a setting item first!" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "No property '%s' exists." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Setting '%s' is internal, and it can't be deleted." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Delete Item" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Error saving settings." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Settings saved OK." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Moved Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Override for Feature" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add %d Translations" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Translation" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translation Resource Remap: Add %d Path(s)" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translation Resource Remap: Add %d Remap(s)" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Changed Locale Filter" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Changed Locale Filter Mode" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Project Settings (project.godot)" +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Override For..." +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "The editor must be restarted for changes to take effect." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Input Map" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Localization" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translations" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translations:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remaps" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Resources:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locale" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locales Filter" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Show All Locales" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Show Selected Locales Only" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Filter mode:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locales:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "AutoLoad" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Plugins" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Import Defaults" +msgstr "" + +#: editor/property_editor.cpp +msgid "Preset..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: editor/property_editor.cpp +msgid "File..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Dir..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: editor/property_editor.cpp +msgid "Select Node" +msgstr "" + +#: editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: editor/property_editor.cpp +msgid "Pick a Node" +msgstr "" + +#: editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Virtual Method" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Method" +msgstr "" + +#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp +msgid "Batch Rename" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Prefix:" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Suffix:" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Use Regular Expressions" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Advanced Options" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Substitute" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node's parent name, if available" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node type" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Current scene name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Root node name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Sequential integer counter.\n" +"Compare counter options." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Per-level Counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "If set, the counter restarts for each group of child nodes." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Initial value for the counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Step" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Amount by which counter is incremented for each node" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Padding" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Minimum number of digits for the counter.\n" +"Missing digits are padded with leading zeros." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Post-Process" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Style" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Keep" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "PascalCase to snake_case" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "snake_case to PascalCase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Case" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Lowercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Uppercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Reset" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Regular Expression Error:" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "At character %s" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Replace with Branch Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't paste root node into the same scene." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Paste Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Detach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make node as Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete %d nodes?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete the root node \"%s\"?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete node \"%s\" and its children?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete node \"%s\"?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Saving the branch as a scene requires having a scene open in the editor." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Saving the branch as a scene requires selecting only one node, but you have " +"selected %d nodes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Can't save the root node branch as an instanced scene.\n" +"To create an editable copy of the current scene, duplicate it using the " +"FileSystem dock context menu\n" +"or create an inherited scene using Scene > New Inherited Scene... instead." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Can't save the branch of an already instanced scene.\n" +"To create a variation of a scene, you can make an inherited scene based on " +"the instanced scene using Scene > New Inherited Scene... instead." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Can't save a branch which is a child of an already instantiated scene.\n" +"To save this branch into its own scene, open the original scene, right click " +"on this branch, and select \"Save Branch as Scene\"." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Can't save a branch which is part of an inherited scene.\n" +"To save this branch into its own scene, open the original scene, right click " +"on this branch, and select \"Save Branch as Scene\"." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Save New Scene As..." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Disabling \"editable_instance\" will cause all properties of the node to be " +"reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and " +"cause all properties of the node to be reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Create Root Node:" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "2D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "3D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "User Interface" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Other Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Cut Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Change type of node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Sub-Resources" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Editable Children" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Load As Placeholder" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Cannot attach a script: there are no languages registered.\n" +"This is probably because this editor was built with all language modules " +"disabled." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Expand/Collapse All" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Reparent to New Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Copy Node Path" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add/Create a New Node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach a new or existing script to the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Detach the script from the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remote" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"If selected, the Remote scene tree dock will cause the project to stutter " +"every time it updates.\n" +"Switch back to the Local scene tree dock to improve performance." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visible" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Unlock Node" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Button Group" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "(Connecting From)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node configuration warning:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has %s connection(s) and %s group(s).\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has %s connection(s).\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is in %s group(s).\n" +"Click to show groups dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Open Script:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is locked.\n" +"Click to unlock it." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Children are not selectable.\n" +"Click to make selectable." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visibility" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"AnimationPlayer is pinned.\n" +"Click to unpin." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node Configuration Warning!" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path is empty." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Filename is empty." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path is not local." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid base path." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "A directory with the same name exists." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "File does not exist." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid extension." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Wrong extension chosen." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Error loading template '%s'" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Error - Could not create script in filesystem." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Error loading script from %s" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Overrides" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Open Script / Choose Location" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Open Script" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "File exists, it will be reused." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid path." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid class name." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid inherited parent name or path." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Script path/name is valid." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Allowed: a-z, A-Z, 0-9, _ and ." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Built-in script (into scene file)." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Will create a new script file." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Will load an existing script file." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Script file already exists." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "" +"Note: Built-in scripts have some limitations and can't be edited using an " +"external editor." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "" +"Warning: Having the script name be the same as a built-in type is usually " +"not desired." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Template:" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Built-in Script:" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Attach Node Script" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Remote " +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Warning:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Error" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Error:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Source" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Source:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Stack Trace" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Child process connected." +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Open C++ Source on GitHub" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Video RAM" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Skip Breakpoints" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Network Profiler" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Pick one or more items from the list to display the graph." +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Export list to a CSV file" +msgstr "" + +#: editor/script_editor_debugger.cpp +#: modules/visual_script/visual_script_nodes.cpp +msgid "Resource Path" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Export measures as CSV" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Erase Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Restore Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Change Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Binding" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change AudioStreamPlayer3D Emission Angle" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Notifier AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Particles AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Probe Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Set Room Point Position" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Set Portal Point Position" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Set Occluder Sphere Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Set Occluder Sphere Position" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Set Occluder Polygon Point Position" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Set Occluder Hole Point Position" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Height" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Inner Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Outer Radius" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select the dynamic library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select dependencies of the library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Remove current entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Double click to create a new entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform:" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dynamic Library" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Add an architecture entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "GDNativeLibrary" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Enabled GDNative Singleton" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Disabled GDNative Singleton" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Library" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Libraries: " +msgstr "" + +#: modules/gdnative/register_types.cpp +msgid "GDNative" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Step argument is zero!" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Object can't provide a length." +msgstr "" + +#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp +msgid "Export Mesh GLTF2" +msgstr "" + +#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp +msgid "Export GLTF..." +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Plane:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Floor:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Delete Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Paste Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Paint" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Grid Map" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Snap View" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Disabled" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Above" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Below" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit X Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Y Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Z Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Clear Rotation" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clear Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Settings" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Pick Distance:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Filter meshes" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Give a MeshLibrary resource to this GridMap to use its meshes." +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Begin Bake" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Preparing data structures" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Generate buffers" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Direct lighting" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Indirect lighting" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Post processing" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Plotting lightmaps" +msgstr "" + +#: modules/mono/csharp_script.cpp +msgid "Class name can't be a reserved keyword" +msgstr "" + +#: modules/mono/csharp_script.cpp +msgid "Build Solution" +msgstr "" + +#: modules/mono/mono_gd/gd_mono_utils.cpp +msgid "End of inner exception stack trace" +msgstr "" + +#: modules/navigation/navigation_mesh_editor_plugin.cpp +#: scene/3d/navigation_mesh_instance.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: modules/navigation/navigation_mesh_editor_plugin.cpp +msgid "Bake NavMesh" +msgstr "" + +#: modules/navigation/navigation_mesh_editor_plugin.cpp +msgid "Clear the navigation mesh." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Setting up Configuration..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Calculating grid size..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Creating heightfield..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Marking walkable triangles..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Constructing compact heightfield..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Eroding walkable area..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Partitioning..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Creating contours..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Creating polymesh..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Converting to native navigation mesh..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Navigation Mesh Generator Setup:" +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Parsing Geometry..." +msgstr "" + +#: modules/navigation/navigation_mesh_generator.cpp +msgid "Done!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Signal Arguments" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Default Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Port Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Port Name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Override an existing built-in function." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new function." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new variable." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Signals:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new signal." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name is not a valid identifier:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name already in use by another func/var/signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete input port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Duplicate VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s)" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "" +"Can't drop properties because script '%s' is not used in this scene.\n" +"Drop holding 'Shift' to just copy the signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Move Node(s)" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove VisualScript Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Disconnect Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Data" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Script already has function '%s'" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Input Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Resize Comment" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't copy the function node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't create function with a function node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't create function of nodes from nodes of multiple functions." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select at least one node with sequence port." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Try to only have one sequence input in selection." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Make Tool:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Members:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "function_name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit its graph." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete Selected" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Make Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Refresh Graph" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Member" +msgstr "" + +#: modules/visual_script/visual_script_expression.cpp +msgid "Expression" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "if (cond) is:" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "while (cond):" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "for (elem) in (input):" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "in order:" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "'input' is:" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Type Cast" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Is %s?" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "On %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "On Self" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Subtract %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Multiply %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Divide %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Mod %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "ShiftLeft %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "ShiftRight %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "BitAnd %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "BitOr %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "BitXor %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +#: modules/visual_script/visual_script_nodes.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Get %s" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Emit %s" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Function" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Compose Array" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "a if cond, else b" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Preload" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Get Index" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Set Index" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Global Constant" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Class Constant" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Basic Constant" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Math Constant" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Get Engine Singleton" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Get Scene Node" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Get Scene Tree" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Get Self" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "CustomNode" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "SubCall" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Construct %s" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Get Local Var" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Set Local Var" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Action %s" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Deconstruct %s" +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search VisualScript" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "Yield" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "Wait" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "Next Frame" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "Next Physics Frame" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "%s sec(s)" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "WaitSignal" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "WaitNodeSignal" +msgstr "" + +#: modules/visual_script/visual_script_yield_nodes.cpp +msgid "WaitInstanceSignal" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Select device from the list" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Running on %s" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Exporting APK..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Uninstalling..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Installing to device, please wait..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not install to device: %s" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Running on device..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not execute on device." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Unable to find the 'apksigner' tool." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Android build template not installed in the project. Install it from the " +"Project menu." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Either Debug Keystore, Debug User AND Debug Password settings must be " +"configured OR none of them." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Either Release Keystore, Release User AND Release Password settings must be " +"configured OR none of them." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Release keystore incorrectly configured in the export preset." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "A valid Android SDK path is required in Editor Settings." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Invalid Android SDK path in Editor Settings." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Unable to find Android SDK platform-tools' adb command." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Please check in the Android SDK directory specified in Editor Settings." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Unable to find Android SDK build-tools' apksigner command." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " +"project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "\"Use Custom Build\" must be enabled to use the plugins." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VrApi\" " +"or \"OpenXR\"." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "\"Passthrough\" is only valid when \"Xr Mode\" is \"OpenXR\"." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Changing the \"Min Sdk\" is only valid when \"Use Custom Build\" is enabled." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Changing the \"Target Sdk\" is only valid when \"Use Custom Build\" is " +"enabled." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"'apksigner' could not be found.\n" +"Please check the command is available in the Android SDK build-tools " +"directory.\n" +"The resulting %s is unsigned." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Signing debug %s..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Signing release %s..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not find keystore, unable to export." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "'apksigner' returned with error #%d" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Verifying %s..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "'apksigner' verification of %s failed." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Exporting for Android" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Unsupported export format!\n" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Trying to build from a custom built template, but no version info for it " +"exists. Please reinstall from the 'Project' menu." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Android build version mismatch:\n" +" Template installed: %s\n" +" Godot Version: %s\n" +"Please reinstall Android build template from 'Project' menu." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Unable to overwrite res://android/build/res/*.xml files with project name" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not export project files to gradle project\n" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not write expansion package file!" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Building Android Project (gradle)" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Building of Android project failed, check output for the error.\n" +"Alternatively visit docs.godotengine.org for Android build documentation." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Moving output" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Unable to copy and rename export file, check gradle project directory for " +"outputs." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Package not found: %s" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Creating APK..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Could not find template APK to export:\n" +"%s" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "" +"Missing libraries in the export template for the selected architectures: " +"%s.\n" +"Please build a template with all required libraries, or uncheck the missing " +"architectures in the export preset." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Adding files..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not export project files" +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export_plugin.cpp +msgid "Could not unzip temporary unaligned APK." +msgstr "" + +#: platform/iphone/export/export.cpp platform/osx/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp platform/osx/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Stop HTTP Server" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run in Browser" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run exported HTML in the system's default browser." +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Invalid export template:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not write file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read HTML shell:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not create HTTP server directory:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Error starting HTTP server:" +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Can't get filesystem access." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to get Info.plist hash." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Invalid Info.plist, no exe name." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Invalid Info.plist, no bundle id." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Invalid Info.plist, can't load." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to create \"%s\" subfolder." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to extract thin binary." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Invalid binary format." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Already signed!" +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to process nested resources." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to create _CodeSignature subfolder." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to get CodeResources hash." +msgstr "" + +#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp +msgid "Invalid entitlements file." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Invalid executable file." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Can't resize signature load command." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Failed to create fat binary." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Unknown bundle type." +msgstr "" + +#: platform/osx/export/codesign.cpp +msgid "Unknown object type." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Note: The notarization process generally takes less than an hour. When the " +"process is completed, you'll receive an email." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"You can check progress manually by opening a Terminal and running the " +"following command:" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Run the following command to staple the notarization ticket to the exported " +"application (optional):" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "No identity found." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Creating app bundle" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Could not find template app to export:" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Relative symlinks are not supported on this OS, the exported project might " +"be broken!" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Requested template binary '%s' not found. It might be missing from your " +"template archive." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Making PKG" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Ad-hoc signed applications require the 'Disable Library Validation' " +"entitlement to load dynamic libraries." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Code signing bundle" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Making DMG" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Code signing DMG" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Making ZIP" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Notarization requires the app to be archived first, select the DMG or ZIP " +"export format instead." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Sending archive for notarization" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Invalid bundle identifier:" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " +"signing is limited to ad-hoc signature only." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Warning: Xcode command line tools are not installed, using built-in " +"\"codesign\". Code signing is limited to ad-hoc signature only." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Notarization: Notarization with an ad-hoc signature is not supported." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Notarization: Code signing is required for notarization." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Notarization: Hardened runtime is required for notarization." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Notarization: Timestamp runtime is required for notarization." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Notarization: Apple ID name not specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "Notarization: Apple ID password not specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Warning: Notarization is disabled. The exported project will be blocked by " +"Gatekeeper if it's downloaded from an unknown source." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Code signing is disabled. The exported project will not run on Macs with " +"enabled Gatekeeper and Apple Silicon powered Macs." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Hardened Runtime is not compatible with ad-hoc signature, and will be " +"disabled!" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Timestamping is not compatible with ad-hoc signature, and will be disabled!" +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Warning: Notarization is not supported from this OS. The exported project " +"will be blocked by Gatekeeper if it's downloaded from an unknown source." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Privacy: Microphone access is enabled, but usage description is not " +"specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Privacy: Camera access is enabled, but usage description is not specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Privacy: Location information access is enabled, but usage description is " +"not specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Privacy: Address book access is enabled, but usage description is not " +"specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Privacy: Calendar access is enabled, but usage description is not specified." +msgstr "" + +#: platform/osx/export/export.cpp +msgid "" +"Privacy: Photo library access is enabled, but usage description is not " +"specified." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + +#: platform/windows/export/export.cpp +msgid "" +"The rcedit tool must be configured in the Editor Settings (Export > Windows " +"> Rcedit) to change the icon or app information data." +msgstr "" + +#: platform/windows/export/export.cpp +msgid "Invalid icon path:" +msgstr "" + +#: platform/windows/export/export.cpp +msgid "Invalid file version:" +msgstr "" + +#: platform/windows/export/export.cpp +msgid "Invalid product version:" +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the \"Frames\" property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " +"define its shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"Polygon-based shapes are not meant be used nor edited directly through the " +"CollisionShape2D node. Please use the CollisionPolygon2D node instead." +msgstr "" + +#: scene/2d/cpu_particles_2d.cpp +msgid "" +"CPUParticles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/joints_2d.cpp +msgid "Node A and Node B must be PhysicsBody2Ds" +msgstr "" + +#: scene/2d/joints_2d.cpp +msgid "Node A must be a PhysicsBody2D" +msgstr "" + +#: scene/2d/joints_2d.cpp +msgid "Node B must be a PhysicsBody2D" +msgstr "" + +#: scene/2d/joints_2d.cpp +msgid "Joint is not connected to two PhysicsBody2Ds" +msgstr "" + +#: scene/2d/joints_2d.cpp +msgid "Node A and Node B must be different PhysicsBody2Ds" +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the \"Texture\" " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon." +msgstr "" + +#: scene/2d/navigation_agent_2d.cpp +msgid "The NavigationAgent2D can be used only under a Node2D node." +msgstr "" + +#: scene/2d/navigation_obstacle_2d.cpp +msgid "" +"The NavigationObstacle2D only serves to provide collision avoidance to a " +"Node2D object." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles2D\" toolbar option for this purpose." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"On macOS, Particles2D rendering is much slower than CPUParticles2D due to " +"transform feedback being implemented on the CPU instead of the GPU.\n" +"Consider using CPUParticles2D instead when targeting macOS.\n" +"You can use the \"Convert to CPUParticles2D\" toolbar option for this " +"purpose." +msgstr "" + +#: scene/2d/particles_2d.cpp scene/3d/particles.cpp +msgid "" +"A material to process the particles is not assigned, so no behavior is " +"imprinted." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"Particles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/physics_body_2d.cpp +msgid "" +"Size changes to RigidBody2D (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "This Bone2D chain should end at a Skeleton2D node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "" +"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." +msgstr "" + +#: scene/2d/tile_map.cpp +msgid "" +"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes " +"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " +"KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnabler2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRCamera must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRController must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "" +"The controller ID must not be 0 or this controller won't be bound to an " +"actual controller." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRAnchor must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "" +"The anchor ID must not be 0 or this anchor won't be bound to an actual " +"anchor." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVROrigin requires an ARVRCamera child node." +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Finding meshes and lights" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Preparing geometry (%d/%d)" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Preparing environment" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Generating capture" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Saving lightmaps" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Done" +msgstr "" + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape or CollisionPolygon as a child to define " +"its shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"Plane shapes don't work well and will be removed in future versions. Please " +"don't use them." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"ConcavePolygonShape doesn't support RigidBody in another mode than static." +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "Nothing is visible because no mesh has been assigned." +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "" +"CPUParticles animation requires the usage of a SpatialMaterial whose " +"Billboard Mode is set to \"Particle Billboard\"." +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "Plotting Meshes" +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "Finishing Plot" +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "" +"GIProbes are not supported by the GLES2 video driver.\n" +"Use a BakedLightmap instead." +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "" +"The GIProbe Compress property has been deprecated due to known bugs and no " +"longer has any effect.\n" +"To remove this warning, disable the GIProbe's Compress property." +msgstr "" + +#: scene/3d/light.cpp +msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." +msgstr "" + +#: scene/3d/navigation_agent.cpp +msgid "The NavigationAgent can be used only under a spatial node." +msgstr "" + +#: scene/3d/navigation_mesh_instance.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/navigation_obstacle.cpp +msgid "" +"The NavigationObstacle only serves to provide collision avoidance to a " +"spatial object." +msgstr "" + +#: scene/3d/occluder.cpp +msgid "No shape is set." +msgstr "" + +#: scene/3d/occluder.cpp +msgid "Only uniform scales are supported." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to " +"CPUParticles\" toolbar option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"On macOS, Particles rendering is much slower than CPUParticles due to " +"transform feedback being implemented on the CPU instead of the GPU.\n" +"Consider using CPUParticles instead when targeting macOS.\n" +"You can use the \"Convert to CPUParticles\" toolbar option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Nothing is visible because meshes have not been assigned to draw passes." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Particles animation requires the usage of a SpatialMaterial whose Billboard " +"Mode is set to \"Particle Billboard\"." +msgstr "" + +#: scene/3d/path.cpp +msgid "PathFollow only works when set as a child of a Path node." +msgstr "" + +#: scene/3d/path.cpp +msgid "" +"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " +"parent Path's Curve resource." +msgstr "" + +#: scene/3d/physics_body.cpp +msgid "" +"Size changes to RigidBody (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Node A and Node B must be PhysicsBodies" +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Node A must be a PhysicsBody" +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Node B must be a PhysicsBody" +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Joint is not connected to any PhysicsBodies" +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Node A and Node B must be different PhysicsBodies" +msgstr "" + +#: scene/3d/portal.cpp +msgid "The RoomManager should not be a child or grandchild of a Portal." +msgstr "" + +#: scene/3d/portal.cpp +msgid "A Room should not be a child or grandchild of a Portal." +msgstr "" + +#: scene/3d/portal.cpp +msgid "A RoomGroup should not be a child or grandchild of a Portal." +msgstr "" + +#: scene/3d/remote_transform.cpp +msgid "" +"The \"Remote Path\" property must point to a valid Spatial or Spatial-" +"derived node to work." +msgstr "" + +#: scene/3d/room.cpp +msgid "A Room cannot have another Room as a child or grandchild." +msgstr "" + +#: scene/3d/room.cpp +msgid "The RoomManager should not be placed inside a Room." +msgstr "" + +#: scene/3d/room.cpp +msgid "A RoomGroup should not be placed inside a Room." +msgstr "" + +#: scene/3d/room.cpp +msgid "" +"Room convex hull contains a large number of planes.\n" +"Consider simplifying the room bound in order to increase performance." +msgstr "" + +#: scene/3d/room_group.cpp +msgid "The RoomManager should not be placed inside a RoomGroup." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "The RoomList has not been assigned." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "The RoomList node should be a Spatial (or derived from Spatial)." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "" +"Portal Depth Limit is set to Zero.\n" +"Only the Room that the Camera is in will render." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "There should only be one RoomManager in the SceneTree." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "" +"RoomList path is invalid.\n" +"Please check the RoomList branch has been assigned in the RoomManager." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "RoomList contains no Rooms, aborting." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "Misnamed nodes detected, check output log for details. Aborting." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "Portal link room not found, check output log for details." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "" +"Portal autolink failed, check output log for details.\n" +"Check the portal is facing outwards from the source room." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "" +"Room overlap detected, cameras may work incorrectly in overlapping area.\n" +"Check output log for details." +msgstr "" + +#: scene/3d/room_manager.cpp +msgid "" +"Error calculating room bounds.\n" +"Ensure all rooms contain geometry or manual bounds." +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "This body will be ignored until you set a mesh." +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "" +"Size changes to SoftBody will be overridden by the physics engine when " +"running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the \"Frames\" property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/3d/vehicle_body.cpp +msgid "" +"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " +"it as a child of a VehicleBody." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"WorldEnvironment requires its \"Environment\" property to contain an " +"Environment to have a visible effect." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set " +"this environment's Background Mode to Canvas (for 2D scenes)." +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "On BlendTree node '%s', animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "Animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_player.cpp +msgid "Anim Apply Reset" +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "In node '%s', invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Nothing connected to input '%s' of node '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "No root AnimationNode for the graph is set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path to an AnimationPlayer node containing animations is not set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "The AnimationPlayer root node is not a valid node." +msgstr "" + +#: scene/animation/animation_tree_player.cpp +msgid "This node has been deprecated. Use AnimationTree instead." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "" +"Color: #%s\n" +"LMB: Apply color\n" +"RMB: Remove preset" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Pick a color from the editor window." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "HSV" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Raw" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Add current color as a preset." +msgstr "" + +#: scene/gui/container.cpp +msgid "" +"Container by itself serves no purpose unless a script configures its " +"children placement behavior.\n" +"If you don't intend to add a script, use a plain Control node instead." +msgstr "" + +#: scene/gui/control.cpp +msgid "" +"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to " +"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"." +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/graph_edit.cpp +msgid "Enable grid minimap." +msgstr "" + +#: scene/gui/nine_patch_rect.cpp +msgid "" +"The Tile and Tile Fit options for Axis Stretch properties are only effective " +"when using the GLES3 rendering backend.\n" +"The GLES2 backend is currently in use, so these modes will act like Stretch " +"instead." +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine, but they will hide upon " +"running." +msgstr "" + +#: scene/gui/range.cpp +msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." +msgstr "" + +#: scene/gui/scroll_container.cpp +msgid "" +"ScrollContainer is intended to work with a single child control.\n" +"Use a container as child (VBox, HBox, etc.), or a Control and set the custom " +"minimum size manually." +msgstr "" + +#: scene/gui/tree.cpp +msgid "(Other)" +msgstr "" + +#: scene/main/scene_tree.cpp +msgid "" +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." +msgstr "" + +#: scene/main/timer.cpp +msgid "" +"Very low timer wait times (< 0.05 seconds) may behave in significantly " +"different ways depending on the rendered or physics frame rate.\n" +"Consider using a script's process loop instead of relying on a Timer for " +"very low wait times." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"The Viewport size must be greater than or equal to 2 pixels on both " +"dimensions to render anything." +msgstr "" + +#: scene/resources/occluder_shape.cpp +msgid "OccluderShapeSphere Set Spheres" +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "" +"The sampler port is connected but not used. Consider changing the source to " +"'SamplerPort'." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for preview." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for shader." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid comparison function for that type." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Varying may not be assigned in the '%s' function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "" +"Varyings which assigned in 'vertex' function may not be reassigned in " +"'fragment' or 'light'." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "" +"Varyings which assigned in 'fragment' function may not be reassigned in " +"'vertex' or 'light'." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to uniform." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Constants cannot be modified." +msgstr "" diff --git a/editor/translations/eo.po b/editor/translations/eo.po index 1a95fb6702..f77d1da645 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -1484,6 +1484,11 @@ msgstr "Åœargi la defaÅlta busaranÄo." msgid "Create a new Bus Layout." msgstr "Krei nova busaranÄo." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Malfermi aranÄon de aÅdia buso" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Malvalida nomo." @@ -2927,7 +2932,7 @@ msgstr "Baskuli sendistran reÄimon." msgid "Add a new scene." msgstr "Aldoni novan scenon." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Sceno" @@ -5711,6 +5716,10 @@ msgid "Bake Lightmaps" msgstr "Baki lummapojn" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Elekti dosieron por bakado de lummapo:" @@ -8219,7 +8228,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9149,6 +9163,11 @@ msgid "Select Another Theme Resource:" msgstr "Serĉi anstataÅiga risurco:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Renomi risurcon" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -9202,6 +9221,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "ÅœanÄu la tipon de %s" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "ÅœanÄu la tipon de %s" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Åœargi defaÅlton" @@ -9220,7 +9253,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "ÅœanÄi tipon" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9919,18 +9963,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Matĉoj:" @@ -12570,6 +12602,11 @@ msgid "Stack Frames" msgstr "Stakaj Framoj" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtri signalojn" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profililo" @@ -13912,6 +13949,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/es.po b/editor/translations/es.po index d4f2364598..218eee6470 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -18,7 +18,7 @@ # Jose Maria Martinez <josemar1992@hotmail.com>, 2018. # Juan Quiroga <juanquiroga9@gmail.com>, 2017. # Kiji Pixel <raccoon.fella@gmail.com>, 2017. -# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017, 2019, 2020, 2021. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017, 2019, 2020, 2021, 2022. # Lonsfor <lotharw@protonmail.com>, 2017-2018. # Mario Nachbaur <manachbaur@gmail.com>, 2018. # Oscar Carballal <oscar.carballal@protonmail.com>, 2017-2018. @@ -73,13 +73,14 @@ # Anderson Guzman Abreu <chicobello1111@gmail.com>, 2021. # Manuel Cantón Guillén <manuelcanton8@gmail.com>, 2021. # Alfonso V <alfonsov96@gmail.com>, 2022. +# Cristhian Pineda Castro <kurgancpc@hotmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-01-16 13:19+0000\n" -"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" +"PO-Revision-Date: 2022-02-20 00:54+0000\n" +"Last-Translator: Cristhian Pineda Castro <kurgancpc@hotmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -87,7 +88,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1553,6 +1554,11 @@ msgstr "Cargar el Bus Layout predeterminado." msgid "Create a new Bus Layout." msgstr "Crear un nuevo Bus Layout." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Abrir Layout de Bus de Audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nombre inválido." @@ -2336,7 +2342,7 @@ msgstr "Propiedad:" #: editor/editor_inspector.cpp msgid "Pin value" -msgstr "Valor de fijación" +msgstr "Fijar Valor" #: editor/editor_inspector.cpp msgid "" @@ -2345,7 +2351,7 @@ msgstr "Fijar un valor obliga a guardarlo aunque sea igual al predeterminado." #: editor/editor_inspector.cpp msgid "Pin value [Disabled because '%s' is editor-only]" -msgstr "Valor de fijación [Desactivado porque '%s' es solo para el editor]" +msgstr "Fijar Valor [Desactivado porque '%s' es solo para el editor]" #: editor/editor_inspector.cpp editor/scene_tree_dock.cpp #: modules/visual_script/visual_script_func_nodes.cpp @@ -3008,7 +3014,7 @@ msgstr "Act./Desact. modo sin distracciones." msgid "Add a new scene." msgstr "Añadir nueva escena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Escena" @@ -3385,14 +3391,12 @@ msgid "Update Continuously" msgstr "Actualizar Continuamente" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Actualizar Al Cambiar" +msgstr "Actualizar todos los cambios" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Cambios del Material:" +msgstr "Actualizar cambios vitales" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4178,6 +4182,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Esta extensión de archivo no es reconocida por el editor.\n" +"Si desea cambiarle el nombre de todos modos, use el administrador de " +"archivos de su sistema operativo.\n" +"Después de cambiar el nombre a una extensión desconocida, el archivo ya no " +"se mostrará en el editor." #: editor/filesystem_dock.cpp msgid "" @@ -5799,6 +5808,10 @@ msgid "Bake Lightmaps" msgstr "Calcular Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Selecciona un archivo lightmap bakeado:" @@ -6268,7 +6281,7 @@ msgstr "Asegura que los hijos del objeto no sean seleccionables." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Group Selected Node(s)" -msgstr "Grupo Nodo(s) Seleccionado(s)" +msgstr "Agrupar Nodo(s) Seleccionado(s)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -8294,7 +8307,13 @@ msgid "Cinematic Preview" msgstr "Vista Previa Cinemática" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "No disponible al utilizar el renderizador GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9190,6 +9209,11 @@ msgid "Select Another Theme Resource:" msgstr "Seleccionar Otro Recurso del Theme:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Renombrar Recurso" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Otro Theme" @@ -9239,6 +9263,20 @@ msgstr "" "de este tipo." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Añadir Tipo de Elemento" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Establecer Tipo de la Variable" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Cambiar Tipo Base" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Mostrar Por Defecto" @@ -9257,8 +9295,19 @@ msgid "Override all default type items." msgstr "Anular todos los elementos de tipo por defecto." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Añadir Tipo de Elemento" +#, fuzzy +msgid "Base Type" +msgstr "Cambiar Tipo Base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9962,18 +10011,6 @@ msgid "Commit list size" msgstr "Tamaño de la lista de confirmación" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Ramas" @@ -12732,6 +12769,11 @@ msgid "Stack Frames" msgstr "Fotogramas Apilados" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrar tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Perfilador" @@ -12905,14 +12947,12 @@ msgid "Set Occluder Sphere Position" msgstr "Establecer Posición de la Esfera de Oclusión" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Establecer Posición del Portal Point" +msgstr "Establecer posición del polÃgono oclusor" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "Establecer Posición de Punto de Curva" +msgstr "Establecer posición del orificio del oclusor" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -14064,9 +14104,10 @@ msgstr "Nombre de paquete inválido:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"El módulo \"GodotPaymentV3\" incluido en los ajustes del proyecto \"android/" -"modules\" es inválido (cambiado en Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14332,166 +14373,167 @@ msgstr "Error al iniciar el servidor HTTP:" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "No se puede obtener acceso al sistema de archivos." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "No se pudo obtener el hash de Info.plist." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "Nombre de Proyecto Inválido." +msgstr "Info.plist no válido, sin nombre de exe." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "Info.plist no válido, sin ID de paquete." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "GeometrÃa inválida, no es posible crear un polÃgono." +msgstr "Info.plist no válido, no se puede cargar." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "No se pudo crear la carpeta." +msgstr "No se pudo crear la subcarpeta \"%s\"." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "No se pudo extraer el binario delgado." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Ruta base incorrecta." +msgstr "Formato binario no válido." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "¡Ha sido firmado!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Error al cargar el recurso." +msgstr "No se pudieron procesar los recursos anidados." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "No se pudo crear la subcarpeta _CodeSignature." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Error al cargar el recurso." +msgstr "No se pudo obtener el hash de CodeResources." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "Extensión inválida." +msgstr "Archivo de derechos no válido." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Extensión inválida." +msgstr "Archivo ejecutable no válido." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "No se puede cambiar el tamaño del comando de carga de la firma." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "No se pudo crear el binario gordo." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "Tipo de paquete desconocido." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Tipo de objeto desconocido." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"Nota: El proceso de notarización generalmente toma menos de una hora. Cuando " +"se complete el proceso, recibirá un correo electrónico." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Puede verificar el progreso manualmente abriendo una Terminal y ejecutando " +"el siguiente comando:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Ejecute el siguiente comando para engrapar el boleto de certificación " +"notarial a la aplicación exportada (opcional):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "No se han encontrado icons." +msgstr "No se encontró identidad." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Creando Miniatura" +msgstr "Crear paquete de aplicaciones" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"No se pudo encontrar la plantilla APK para exportar:\n" -"%s" +msgstr "No se pudo encontrar la aplicación de plantilla para exportar:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"Los enlaces simbólicos relativos no son compatibles con este sistema " +"operativo, ¡el proyecto exportado podrÃa estar dañado!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Plantilla binaria solicitada '%s' no encontrada. Es posible que falte en el " +"archivo de plantillas." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "haciendo paquete" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Las aplicaciones firmadas ad-hoc requieren el derecho 'Desactivar validación " +"de biblioteca' para cargar bibliotecas dinámicas." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "Paquete de firma de código" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Haciendo DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "Firma de código DMG" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Haciendo ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"La notarización requiere que la aplicación se archive primero, seleccione el " +"formato de exportación DMG o ZIP en su lugar." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "Enviando archivo para notarización" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14502,31 +14544,39 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"Advertencia: El \"codiseño\" incorporado está seleccionado en la " +"configuración del editor. La firma de código se limita únicamente a la firma " +"ad-hoc." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"Advertencia: las herramientas de lÃnea de comandos de Xcode no están " +"instaladas, utilizando el \"codiseño\" incorporado. La firma de código se " +"limita únicamente a la firma ad-hoc." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." msgstr "" +"Notarización: No se admite la certificación notarial con una firma ad-hoc." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "Notarización: se requiere firma de código." +msgstr "Notarización: Se requiere la firma del código para la notarización." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "Notarización: se requiere tiempo de ejecución reforzado." +msgstr "" +"Notarización: se requiere tiempo de ejecución endurecido para la " +"certificación notarial." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "Notarización: se requiere tiempo de ejecución reforzado." +msgstr "" +"Notarización: se requiere el tiempo de ejecución de la marca de tiempo para " +"la certificación notarial." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14541,63 +14591,84 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Advertencia: La notarización está deshabilitada. Gatekeeper bloqueará el " +"proyecto exportado si se descarga de una fuente desconocida." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"La firma de código está deshabilitada. El proyecto exportado no se ejecutará " +"en Mac con Gatekeeper habilitado y Mac con tecnologÃa Apple Silicon." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Hardened Runtime no es compatible con la firma ad-hoc, y se desactivará!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" msgstr "" +"El sellado de tiempo no es compatible con la firma ad-hoc, y se desactivará!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Advertencia: la notarización no es compatible con este sistema operativo. " +"Gatekeeper bloqueará el proyecto exportado si se descarga de una fuente " +"desconocida." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"Privacidad: el acceso al micrófono está habilitado, pero no se especifica la " +"descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"Privacidad: el acceso a la cámara está habilitado, pero no se especifica la " +"descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"Privacidad: el acceso a la información de ubicación está habilitado, pero no " +"se especifica la descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"Privacidad: el acceso a la libreta de direcciones está habilitado, pero no " +"se especifica la descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"Privacidad: el acceso al calendario está habilitado, pero no se especifica " +"la descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"Privacidad: el acceso a la biblioteca de fotos está habilitado, pero no se " +"especifica la descripción de uso." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14669,21 +14740,21 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"La herramienta rcedit debe configurarse en la configuración del editor " +"(Exportar > Windows > Rcedit) para cambiar los datos de información del " +"Ãcono o la aplicación." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Ruta inválida." +msgstr "Ruta de icono no válida:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Extensión inválida." +msgstr "Versión de archivo inválida:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "GUID de producto inválido." +msgstr "Versión de producto no válida:" #: scene/2d/animated_sprite.cpp msgid "" @@ -15429,14 +15500,13 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Este nodo ha quedado obsoleto. Usa AnimationTree en su lugar." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" "RMB: Remove preset" msgstr "" "Color: #%s\n" -"Clic izq: Configurar color\n" +"Clic izq: Aplicar color\n" "Clic der: Borrar configuración predeterminada" #: scene/gui/color_picker.cpp diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 25d0908e26..44d5ce2975 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -3,7 +3,7 @@ # Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Diego López <diegodario21@gmail.com>, 2017. -# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018, 2019, 2020, 2021. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018, 2019, 2020, 2021, 2022. # Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018. # Sebastian Silva <sebastian@sugarlabs.org>, 2016. # Jose Luis Bossio <joseluisbossio@gmail.com>, 2018. @@ -17,15 +17,15 @@ # Cristian Yepez <cristianyepez@gmail.com>, 2020. # Skarline <lihue-molina@hotmail.com>, 2020. # Joakker <joaquinandresleon108@gmail.com>, 2020. -# M3CG <cgmario1999@gmail.com>, 2021. +# M3CG <cgmario1999@gmail.com>, 2021, 2022. # Manuel González <mgoopazo@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-12-11 06:25+0000\n" -"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" +"PO-Revision-Date: 2022-02-28 13:54+0000\n" +"Last-Translator: M3CG <cgmario1999@gmail.com>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/" "godot-engine/godot/es_AR/>\n" "Language: es_AR\n" @@ -33,7 +33,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.10-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -337,9 +337,8 @@ msgid "Duplicate Key(s)" msgstr "Duplicar Clave(s)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add RESET Value(s)" -msgstr "Agregar %d Frame(s)" +msgstr "Agregar Valor(es) de RESET" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" @@ -513,9 +512,8 @@ msgstr "" "única." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Add RESET Keys" -msgstr "Escalar Keys de Anim" +msgstr "Anim: Agregar Claves de RESET" #: editor/animation_track_editor.cpp msgid "" @@ -1499,13 +1497,18 @@ msgstr "Cargar el Bus Layout predeterminado." msgid "Create a new Bus Layout." msgstr "Crear un nuevo Bus Layout." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Abrir Layout de Bus de Audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nombre inválido." #: editor/editor_autoload_settings.cpp msgid "Cannot begin with a digit." -msgstr "" +msgstr "No puede comenzar con un dÃgito." #: editor/editor_autoload_settings.cpp msgid "Valid characters:" @@ -2137,9 +2140,8 @@ msgid "Properties" msgstr "Propiedades" #: editor/editor_help.cpp -#, fuzzy msgid "overrides %s:" -msgstr "reemplazar(override):" +msgstr "reemplaza(overrides) %s:" #: editor/editor_help.cpp msgid "default:" @@ -2279,18 +2281,18 @@ msgid "Property:" msgstr "Propiedad:" #: editor/editor_inspector.cpp -#, fuzzy msgid "Pin value" -msgstr "(valor)" +msgstr "Fijar Valor" #: editor/editor_inspector.cpp msgid "" "Pinning a value forces it to be saved even if it's equal to the default." msgstr "" +"Fijar un valor fuerza que sea guardado incluso si es igual predeterminado." #: editor/editor_inspector.cpp msgid "Pin value [Disabled because '%s' is editor-only]" -msgstr "" +msgstr "Fijar Valor [Desactivado porque '%s' es solo para el editor]" #: editor/editor_inspector.cpp editor/scene_tree_dock.cpp #: modules/visual_script/visual_script_func_nodes.cpp @@ -2305,26 +2307,23 @@ msgstr "Asignar Múltiples:" #: editor/editor_inspector.cpp msgid "Pinned %s" -msgstr "" +msgstr "Fijado %s" #: editor/editor_inspector.cpp msgid "Unpinned %s" -msgstr "" +msgstr "Desfijado %s" #: editor/editor_inspector.cpp -#, fuzzy msgid "Copy Property" -msgstr "Copiar Propiedades" +msgstr "Copiar Propiedad" #: editor/editor_inspector.cpp -#, fuzzy msgid "Paste Property" -msgstr "Pegar Propiedades" +msgstr "Pegar Propiedad" #: editor/editor_inspector.cpp -#, fuzzy msgid "Copy Property Path" -msgstr "Copiar Ruta de Script" +msgstr "Copiar Ruta de Propiedad" #: editor/editor_log.cpp msgid "Output:" @@ -2957,7 +2956,7 @@ msgstr "Act./Desact. modo sin distracciones." msgid "Add a new scene." msgstr "Agregar nueva escena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Escena" @@ -3061,9 +3060,8 @@ msgid "Install Android Build Template..." msgstr "Instalar Plantilla de Compilación de Android..." #: editor/editor_node.cpp -#, fuzzy msgid "Open User Data Folder" -msgstr "Abrir Carpeta de Datos del Editor" +msgstr "Abrir Carpeta de Datos del Usuario" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" @@ -3152,7 +3150,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Force Shader Fallbacks" -msgstr "" +msgstr "Forzar Shader Fallbacks" #: editor/editor_node.cpp msgid "" @@ -3163,6 +3161,13 @@ msgid "" "Asynchronous shader compilation must be enabled in the project settings for " "this option to make a difference." msgstr "" +"Cuando esta opción está activada, los shaders se utilizarán en su forma de " +"fallback (ya sea visible a través de un ubershader u oculto) durante todo el " +"tiempo de ejecución.\n" +"Esto es útil para verificar el aspecto y el rendimiento de los fallbacks, " +"que normalmente se muestran brevemente.\n" +"La compilación asÃncrona de los shaders debe estar activada en la " +"configuración del proyecto para que esta opción suponga una diferencia." #: editor/editor_node.cpp msgid "Synchronize Scene Changes" @@ -3326,14 +3331,12 @@ msgid "Update Continuously" msgstr "Actualizar Continuamente" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Actualizar Al Cambiar" +msgstr "Actualizar Todos Los Cambios" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Cambios de Material:" +msgstr "Actualizar Cambios Vitales" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -3782,9 +3785,8 @@ msgstr "Importar Desde Nodo:" #. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git"). #: editor/editor_vcs_interface.cpp -#, fuzzy msgid "%s Error" -msgstr "Error" +msgstr "Error de %s" #: editor/export_template_manager.cpp msgid "Open the folder containing these templates." @@ -4120,6 +4122,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Esta extensión de archivo no es reconocida por el editor.\n" +"Si querés renombrarla de todos modos, usá el administrador de archivos de tu " +"sistema operativo.\n" +"Después de renombrar a una extensión desconocida, el archivo ya no se " +"mostrará en el editor." #: editor/filesystem_dock.cpp msgid "" @@ -4342,9 +4349,8 @@ msgid "Replace..." msgstr "Reemplazar..." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Replace in Files" -msgstr "Reemplazar Todo" +msgstr "eemplazar en Archivos" #: editor/find_in_files.cpp msgid "Find: " @@ -4355,9 +4361,8 @@ msgid "Replace: " msgstr "Reemplazar: " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace All (NO UNDO)" -msgstr "Reemplazar Todo" +msgstr "Reemplazar Todo (NO SE PUEDE DESHACER)" #: editor/find_in_files.cpp msgid "Searching..." @@ -4584,6 +4589,8 @@ msgid "" "Select a resource file in the filesystem or in the inspector to adjust " "import settings." msgstr "" +"Seleccioná un archivo de recursos en el sistema de archivos o en el " +"inspector para ajustar la configuración de importación." #: editor/inspector_dock.cpp msgid "Failed to load resource." @@ -5741,6 +5748,10 @@ msgid "Bake Lightmaps" msgstr "Bake Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Selecciona un archivo de lightmap bakeado:" @@ -6054,9 +6065,8 @@ msgid "Alt+Drag: Move selected node." msgstr "Alt+Arrastrar: Mover el nodo seleccionado." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Alt+Drag: Scale selected node." -msgstr "Alt+Arrastrar: Mover el nodo seleccionado." +msgstr "Alt+Arrastrar: Escalar el nodo seleccionado." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "V: Set selected node's pivot position." @@ -6090,7 +6100,7 @@ msgstr "Modo de Escalado" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Shift: Scale proportionally." -msgstr "" +msgstr "Shift: Escalar proporcionalmente." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6189,9 +6199,8 @@ msgstr "Bloquear el objeto seleccionado en su sitio (no se puede mover)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock Selected Node(s)" -msgstr "Bloqueo Seleccionado" +msgstr "Bloquear Nodo(s) Seleccionado(s)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6200,9 +6209,8 @@ msgstr "Desbloquear el objeto seleccionado (puede ser movido)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Unlock Selected Node(s)" -msgstr "Desbloquear Seleccionados" +msgstr "Desbloquear Nodo(s) Seleccionado(s)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6211,9 +6219,8 @@ msgstr "Asegurarse que los hijos de un objeto no sean seleccionables." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected Node(s)" -msgstr "Agrupar Seleccionados" +msgstr "Agrupar Nodo(s) Seleccionado(s)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6222,9 +6229,8 @@ msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected Node(s)" -msgstr "Desagrupar Seleccionados" +msgstr "Desagrupar Nodo(s) Seleccionado(s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton Options" @@ -7873,9 +7879,8 @@ msgid "Find in Files..." msgstr "Buscar en Archivos..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Replace in Files..." -msgstr "Reemplazar..." +msgstr "Reemplazar en Archivos..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" @@ -8236,7 +8241,13 @@ msgid "Cinematic Preview" msgstr "Vista Previa Cinemática" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "No disponible usando el renderizador GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -8403,16 +8414,15 @@ msgstr "Act./Desact. Vista Libre" #: editor/plugins/spatial_editor_plugin.cpp msgid "Decrease Field of View" -msgstr "" +msgstr "Disminuir el Campo de Visión" #: editor/plugins/spatial_editor_plugin.cpp msgid "Increase Field of View" -msgstr "" +msgstr "Incrementar el Campo de Visión" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Reset Field of View to Default" -msgstr "Restablecer a Valores Por Defecto" +msgstr "Restablecer el Campo de Visión por Defecto" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8830,7 +8840,7 @@ msgstr "{num} stylebox(es)" #: editor/plugins/theme_editor_plugin.cpp msgid "No styleboxes found." -msgstr "No se encontraron styleboxes." +msgstr "No se encontró ninguna caja de estilo." #: editor/plugins/theme_editor_plugin.cpp msgid "{num} currently selected" @@ -9132,6 +9142,11 @@ msgid "Select Another Theme Resource:" msgstr "Seleccionar Otro Recurso del Theme:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Renombrar Recurso" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Otro Theme" @@ -9141,22 +9156,19 @@ msgstr "Añadir Tipo" #: editor/plugins/theme_editor_plugin.cpp msgid "Filter the list of types or create a new custom type:" -msgstr "" +msgstr "Filtrar la lista de tipos o crea un nuevo tipo personalizado:" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Available Node-based types:" -msgstr "Perfiles Disponibles:" +msgstr "Tipos disponibles basados en nodos:" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Type name is empty!" -msgstr "El nombre del archivo está vacÃo." +msgstr "¡El nombre del tipo está vacÃo!" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Are you sure you want to create an empty type?" -msgstr "¿Estás seguro/a que quieres abrir más de un proyecto?" +msgstr "¿Estás seguro/a que querés crear un tipo vacÃo?" #: editor/plugins/theme_editor_plugin.cpp msgid "Confirm Item Rename" @@ -9184,6 +9196,20 @@ msgstr "" "de este tipo." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Añadir Tipo de Elemento" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Editar Tipo de Variable" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Cambiar Tipo Base" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Mostrar Valores por Defecto" @@ -9202,8 +9228,19 @@ msgid "Override all default type items." msgstr "Anular todos los elementos de tipo por defecto." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Añadir Tipo de Elemento" +#, fuzzy +msgid "Base Type" +msgstr "Cambiar Tipo Base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9778,9 +9815,8 @@ msgid "TileSet" msgstr "TileSet" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS plugins are available." -msgstr "No hay addons de VCS disponibles." +msgstr "No hay plugins de VCS disponibles." #: editor/plugins/version_control_editor_plugin.cpp msgid "Error" @@ -9790,53 +9826,48 @@ msgstr "Error" msgid "" "Remote settings are empty. VCS features that use the network may not work." msgstr "" +"La configuración remota está vacÃa. Las funciones de VCS que utilizan la red " +"pueden no funcionar." #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided." -msgstr "No se indicó ningún nombre." +msgstr "No se proporcionó ningún mensaje de commit" #: editor/plugins/version_control_editor_plugin.cpp msgid "Commit" msgstr "Commit" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Staged Changes" -msgstr "Cambios de Shaders:" +msgstr "Cambios en Staging Area" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unstaged Changes" -msgstr "Cambios de Shaders:" +msgstr "Cambios Fuera de Staging Area" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit:" -msgstr "Commit" +msgstr "Commit:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Date:" -msgstr "" +msgstr "Fecha:" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Subtitle:" -msgstr "Subárbol" +msgstr "SubtÃtulo:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Do you want to remove the %s branch?" -msgstr "" +msgstr "¿Quieres eliminar la rama %s?" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Do you want to remove the %s remote?" -msgstr "¿Estás seguro/a que quieres abrir más de un proyecto?" +msgstr "¿Quieres eliminar el %s remoto?" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Apply" -msgstr "Aplicar Reset" +msgstr "Aplicar" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" @@ -9847,148 +9878,120 @@ msgid "Initialize" msgstr "Inicializar" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote Login" -msgstr "Quitar Punto" +msgstr "Inicio de Sesión Remoto" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Username" -msgstr "Renombrar" +msgstr "Nombre de usuario" #: editor/plugins/version_control_editor_plugin.cpp msgid "Password" -msgstr "" +msgstr "Contraseña" #: editor/plugins/version_control_editor_plugin.cpp msgid "SSH Public Key Path" -msgstr "" +msgstr "Ruta de la clave pública SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "Select SSH public key path" -msgstr "" +msgstr "Selecciona la ruta de la clave pública SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "SSH Private Key Path" -msgstr "" +msgstr "Ruta de la Clave Privada SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "Select SSH private key path" -msgstr "" +msgstr "elecciona la ruta de la clave privada SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "SSH Passphrase" -msgstr "" +msgstr "Contraseña SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect new changes" msgstr "Detectar nuevos cambios" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Discard all changes" -msgstr "¿Cerrar y guardar cambios?" +msgstr "Descartar todos los cambios" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage all changes" -msgstr "Guardando cambios locales..." +msgstr "Pasar todos los cambios al area de staging." #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unstage all changes" -msgstr "Cambios de Material:" +msgstr "Quitar todos los cambios del area de staging" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Message" -msgstr "Commitear Cambios" +msgstr "Mensaje de Commit" #: editor/plugins/version_control_editor_plugin.cpp msgid "Commit Changes" msgstr "Commitear Cambios" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit List" -msgstr "Commit" +msgstr "Lista de Commits" #: editor/plugins/version_control_editor_plugin.cpp msgid "Commit list size" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" +msgstr "Tamaño de la lista de commits" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Branches" -msgstr "Coincidencias:" +msgstr "Branches" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Create New Branch" -msgstr "Crear Proyecto Nuevo" +msgstr "Crear un Nuevo Branch" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remove Branch" -msgstr "Quitar pista de animación" +msgstr "Eliminar Branch" #: editor/plugins/version_control_editor_plugin.cpp msgid "Branch Name" -msgstr "" +msgstr "Nombre del Branch" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remotes" -msgstr "Remoto" +msgstr "Remotes" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Create New Remote" -msgstr "Crear Proyecto Nuevo" +msgstr "Crear un Nuevo Remote" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remove Remote" -msgstr "Remover Item" +msgstr "Eliminar Remote" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote Name" -msgstr "Remoto " +msgstr "Nombre del Remote" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote URL" -msgstr "Remoto " +msgstr "URL del Remote" #: editor/plugins/version_control_editor_plugin.cpp msgid "Fetch" -msgstr "" +msgstr "Fetch" #: editor/plugins/version_control_editor_plugin.cpp msgid "Pull" -msgstr "" +msgstr "Pull" #: editor/plugins/version_control_editor_plugin.cpp msgid "Push" -msgstr "" +msgstr "Push" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Force Push" -msgstr "Mesh de Origen:" +msgstr "Forzar Push" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" @@ -10008,22 +10011,19 @@ msgstr "Cambio de Tipo" #: editor/plugins/version_control_editor_plugin.cpp msgid "Unmerged" -msgstr "" +msgstr "Sin mergear" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "View:" -msgstr "Vista" +msgstr "Vista:" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Split" -msgstr "Partir Path" +msgstr "Dividida" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unified" -msgstr "Modificado/s" +msgstr "Unificada" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" @@ -12184,6 +12184,10 @@ msgid "" "To save this branch into its own scene, open the original scene, right click " "on this branch, and select \"Save Branch as Scene\"." msgstr "" +"No se puede guardar una rama que es hija de una escena ya instanciada.\n" +"Para guardar esta rama en su propia escena, abrà la escena original, hacé " +"click con el botón derecho del mouse en esta rama y seleccioná \"Guardar " +"Rama como Escena\"." #: editor/scene_tree_dock.cpp msgid "" @@ -12191,6 +12195,10 @@ msgid "" "To save this branch into its own scene, open the original scene, right click " "on this branch, and select \"Save Branch as Scene\"." msgstr "" +"No se puede guardar una rama que forma parte de una escena heredada.\n" +"Para guardar esta rama en la propia escena, abre la escena original, hacé " +"clic con el botón derecho en esta rama y seleccioná \"Guardar Rama como " +"Escena\"." #: editor/scene_tree_dock.cpp msgid "Save New Scene As..." @@ -12696,6 +12704,11 @@ msgid "Stack Frames" msgstr "Frames del Stack" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrar tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler" @@ -12869,14 +12882,12 @@ msgid "Set Occluder Sphere Position" msgstr "Establecer Posición de la Esfera de Oclusión" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Establecer Posición del Portal Point" +msgstr "Establecer Posición del PolÃgono Oclusor" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "Setear Posición de Punto de Curva" +msgstr "Establecer Posición del Punto del Agujero Oclusor" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -13591,38 +13602,36 @@ msgid "Edit Member" msgstr "Editar Miembros" #: modules/visual_script/visual_script_expression.cpp -#, fuzzy msgid "Expression" -msgstr "Establecer expresión" +msgstr "Expresión" #: modules/visual_script/visual_script_flow_control.cpp msgid "Return" -msgstr "" +msgstr "Retornar" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Condition" -msgstr "animación" +msgstr "Condición" #: modules/visual_script/visual_script_flow_control.cpp msgid "if (cond) is:" -msgstr "" +msgstr "if (cond) is:" #: modules/visual_script/visual_script_flow_control.cpp msgid "While" -msgstr "" +msgstr "Mientras" #: modules/visual_script/visual_script_flow_control.cpp msgid "while (cond):" -msgstr "" +msgstr "while (cond):" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator" -msgstr "" +msgstr "Iterador" #: modules/visual_script/visual_script_flow_control.cpp msgid "for (elem) in (input):" -msgstr "" +msgstr "for (elem) in (input):" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -13638,79 +13647,71 @@ msgstr "El iterador se volvió inválido: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Sequence" -msgstr "" +msgstr "Secuencia" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "in order:" -msgstr "Renombrar carpeta:" +msgstr "en orden:" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Switch" -msgstr "Cabeceo:" +msgstr "Switch" #: modules/visual_script/visual_script_flow_control.cpp msgid "'input' is:" -msgstr "" +msgstr "'input' is:" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Type Cast" -msgstr "Tipos:" +msgstr "Casteo de Tipo" #: modules/visual_script/visual_script_flow_control.cpp msgid "Is %s?" -msgstr "" +msgstr "¿Es %s?" #: modules/visual_script/visual_script_func_nodes.cpp msgid "On %s" -msgstr "" +msgstr "On %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "On Self" -msgstr "Propio" +msgstr "On Self" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Subtract %s" -msgstr "En el carácter %s" +msgstr "Restar %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Multiply %s" -msgstr "" +msgstr "Multiplicar %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Divide %s" -msgstr "" +msgstr "Dividir %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Mod %s" -msgstr "Agregar %s" +msgstr "Mod %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "ShiftLeft %s" -msgstr "Asignar %s" +msgstr "ShiftLeft %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "ShiftRight %s" -msgstr "" +msgstr "ShiftRight %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "BitAnd %s" -msgstr "Agregar %s" +msgstr "BitAnd %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "BitOr %s" -msgstr "" +msgstr "BitOr %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "BitXor %s" -msgstr "" +msgstr "BitXor %s" #: modules/visual_script/visual_script_func_nodes.cpp #: modules/visual_script/visual_script_nodes.cpp @@ -13735,19 +13736,16 @@ msgid "Invalid index property name '%s' in node %s." msgstr "Nombre de propiedad Ãndice '%s' inválido en nodo %s." #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Emit %s" -msgstr "Asignar %s" +msgstr "Emitir %s" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Function" -msgstr "Funciones" +msgstr "Función" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Compose Array" -msgstr "Redimensionar Array" +msgstr "Componer Array" #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -13759,7 +13757,7 @@ msgstr ": Argumentos inválidos: " #: modules/visual_script/visual_script_nodes.cpp msgid "a if cond, else b" -msgstr "" +msgstr "a if cond, else b" #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -13770,64 +13768,52 @@ msgid "VariableSet not found in script: " msgstr "VariableSet no encontrado en el script: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Preload" -msgstr "Volver a Cargar" +msgstr "Preload" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Index" -msgstr "Z Index" +msgstr "Obtener Ãndice" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Set Index" -msgstr "Z Index" +msgstr "Establecer Ãndice" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Global Constant" -msgstr "Constante" +msgstr "Constante Global" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Class Constant" -msgstr "Constante" +msgstr "Constante Global" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Basic Constant" -msgstr "Constante" +msgstr "Constante Básica" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Math Constant" -msgstr "Constante" +msgstr "Constante Matemática" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Engine Singleton" -msgstr "Activar Singleton GDNative" +msgstr "Obtener Engine Singleton" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Scene Node" -msgstr "Nodo TimeSeek" +msgstr "Obtener Nodo de Escena" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Scene Tree" -msgstr "Edición de Ãrbol de Escenas" +msgstr "Obtener Ãrbol de Escenas" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Self" -msgstr "Propio" +msgstr "Obtener Self" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "CustomNode" -msgstr "Cortar Nodos" +msgstr "CustomNode" #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." @@ -13844,33 +13830,28 @@ msgstr "" "(error)." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "SubCall" -msgstr "Llamadas" +msgstr "SubCall" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Construct %s" -msgstr "Constantes" +msgstr "Construir %s" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Local Var" -msgstr "Usar Espacio Local" +msgstr "Obtener Var local" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Set Local Var" -msgstr "Usar Espacio Local" +msgstr "Establecer Var Local" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Action %s" -msgstr "Acción" +msgstr "Acción %s" #: modules/visual_script/visual_script_nodes.cpp msgid "Deconstruct %s" -msgstr "" +msgstr "Deconstruir %s" #: modules/visual_script/visual_script_property_selector.cpp msgid "Search VisualScript" @@ -13878,40 +13859,35 @@ msgstr "Buscar en VisualScript" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "Yield" -msgstr "" +msgstr "Yield" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "Wait" -msgstr "" +msgstr "Esperar" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "Next Frame" -msgstr "Mover Fotograma" +msgstr "Siguiente Fotograma" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "Next Physics Frame" msgstr "Frames de FÃsica %" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "%s sec(s)" -msgstr "" +msgstr "%s seg(s)" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "WaitSignal" -msgstr "Señal" +msgstr "WaitSignal" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "WaitNodeSignal" -msgstr "Señal" +msgstr "WaitNodeSignal" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "WaitInstanceSignal" -msgstr "Instancia" +msgstr "WaitInstanceSignal" #: platform/android/export/export_plugin.cpp msgid "Package name is missing." @@ -14055,9 +14031,10 @@ msgstr "Nombre de paquete inválido:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"El módulo \"GodotPaymentV3\" incluido en el ajuste de proyecto \"android/" -"modules\" es inválido (cambiado en Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14324,166 +14301,167 @@ msgstr "Error al iniciar el servidor HTTP:" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "No se puede obtener acceso al sistema de archivos." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "No se pudo obtener el hash de Info.plist." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "Nombre de proyecto Inválido." +msgstr "Info.plist no válido, sin nombre de exe." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "Info.plist no válido, sin ID de paquete." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "GeometrÃa inválida, no es posible crear un polÃgono." +msgstr "Info.plist no válido, no se puede cargar." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "No se pudo crear la carpeta." +msgstr "No se pudo crear la subcarpeta \"%s\"." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "No se pudo extraer el binario delgado." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Ruta base inválida." +msgstr "Formato binario no válido." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Ya está firmado!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Fallo al cargar recurso." +msgstr "No se pudieron procesar los recursos anidados." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "No se pudo crear la subcarpeta _CodeSignature." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Fallo al cargar recurso." +msgstr "No se pudo obtener el hash de CodeResources." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "Extensión inválida." +msgstr "Archivo de entitlements no válido." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Extensión inválida." +msgstr "Archivo ejecutable no válido." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "No se puede cambiar el tamaño del comando de carga de la firma." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "No se pudo crear el binario gordo." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "Tipo de paquete desconocido." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Tipo de objeto desconocido." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"Nota: El proceso de notarización generalmente toma menos de una hora. Cuando " +"se complete el proceso, recibirás un correo electrónico." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Podés verificar el progreso manualmente abriendo una Terminal y ejecutando " +"el siguiente comando:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Ejecutá el siguiente comando para engrapar el boleto de certificación " +"notarial a la aplicación exportada (opcional):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "No se encontraron Ãconos." +msgstr "No se encontró identidad." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Creando Miniatura" +msgstr "Crearndo paquete de aplicaciones" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"No se pudo encontrar la plantilla APK para exportar:\n" -"%s" +msgstr "No se pudo encontrar la aplicación de plantilla para exportar:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"Los enlaces simbólicos relativos no son compatibles con este sistema " +"operativo, ¡el proyecto exportado podrÃa estar dañado!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Plantilla binaria solicitada '%s' no encontrada. Es posible que falte en el " +"archivo de plantillas." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Creando PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Las aplicaciones firmadas ad-hoc requieren el entitlement 'Disable Library " +"Validation' para cargar bibliotecas dinámicas." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "Firmando código del paquete" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Creando DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "Firmando código de DMG" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Creando ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"La notarización requiere que la aplicación se archive primero, seleccioná el " +"formato de exportación DMG o ZIP en su lugar." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "Enviando archivo para notarización" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14494,31 +14472,37 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"Advertencia: El \"codesign\" incorporado está seleccionado en la " +"configuración del editor. La firma de código se limita únicamente a la firma " +"ad-hoc." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"Advertencia: las herramientas de lÃnea de comandos de Xcode no están " +"instaladas, utilizando el \"codesign\" incorporado. La firma de código se " +"limita únicamente a la firma ad-hoc." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." msgstr "" +"Notarización: No se admite la certificación notarial con una firma ad-hoc." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "Notarización: se requiere firma de código." +msgstr "Notarización: Se requiere la firma del código para la notarización." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "Notarización: se requiere hardened runtime." +msgstr "" +"Notarización: se requiere hardened runtime para la certificación notarial." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "Notarización: se requiere hardened runtime." +msgstr "" +"Notarización: Se requienre Timestamp runtime para la certificación notarial." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14533,57 +14517,75 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Advertencia: La notarización está deshabilitada. Gatekeeper bloqueará el " +"proyecto exportado si se descarga de una fuente desconocida." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"La firma de código está deshabilitada. El proyecto exportado no se ejecutará " +"en Mac con Gatekeeper habilitado y Mac con tecnologÃa Apple Silicon." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Hardened Runtime no es compatible con la firma ad-hoc y se desactivará!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" -msgstr "" +msgstr "Timestamping no es compatible con la firma ad-hoc y se desactivará!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Advertencia: la notarización no es compatible con este sistema operativo. " +"Gatekeeper bloqueará el proyecto exportado si se descarga de una fuente " +"desconocida." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"Privacidad: el acceso al micrófono está habilitado, pero no se especifica la " +"descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"Privacidad: el acceso a la cámara está habilitado, pero no se especifica la " +"descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"Privacidad: el acceso a la información de ubicación está habilitado, pero no " +"se especifica la descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"Privacidad: el acceso a la libreta de direcciones está habilitado, pero no " +"se especifica la descripción de uso." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"Privacidad: el acceso al calendario está habilitado, pero no se especifica " +"la descripción de uso." #: platform/osx/export/export.cpp msgid "" @@ -14661,19 +14663,16 @@ msgid "" msgstr "" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Ruta inválida." +msgstr "Ruta de icono no válida:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Extensión inválida." +msgstr "Versión de archivo inválida:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "GUID de producto inválido." +msgstr "versión de producto inválida." #: scene/2d/animated_sprite.cpp msgid "" diff --git a/editor/translations/et.po b/editor/translations/et.po index 9b70c32d20..6684f4bbb6 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -1456,6 +1456,11 @@ msgstr "Lae vaikimise siini paigutus." msgid "Create a new Bus Layout." msgstr "Loo uus siini paigutus." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Ava heliliinide paigutus" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Vigane nimi." @@ -2859,7 +2864,7 @@ msgstr "" msgid "Add a new scene." msgstr "Lisa uus stseen." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Stseen" @@ -5531,6 +5536,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7986,7 +7995,12 @@ msgid "Cinematic Preview" msgstr "Kinemaatiline eelvaade" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8893,6 +8907,11 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Ressurss" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8941,6 +8960,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Laadi vaikimisi" @@ -8959,7 +8990,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Muuda tüüpi" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9650,18 +9692,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Vasted:" @@ -12245,6 +12275,11 @@ msgid "Stack Frames" msgstr "Virnakaadrid" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtreeri sõlmed" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profileerija" @@ -13557,6 +13592,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/eu.po b/editor/translations/eu.po index 2918926ac7..d315bb8d1c 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -1464,6 +1464,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2828,7 +2832,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5505,6 +5509,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Hautatu txantiloi fitxategia" @@ -7944,7 +7952,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8848,6 +8861,11 @@ msgstr "Bilatu ordezko baliabidea:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Baliabidea" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Inportatu azala" @@ -8897,6 +8915,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Inportatu profila(k)" @@ -8915,7 +8945,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Kide mota" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9600,18 +9641,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12190,6 +12219,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13494,6 +13527,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/fa.po b/editor/translations/fa.po index e75b0277a6..d1c2a87acc 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -1492,6 +1492,11 @@ msgstr "Ø·Ø±Ø Ù¾ÛŒØ´ ÙØ±Ø¶ اتوبوس را بارگیری کنید." msgid "Create a new Bus Layout." msgstr "Ø·Ø±Ø Ø¬Ø¯ÛŒØ¯ اتوبوس ایجاد کنید." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "چیدمان اتوبوس صوتی را باز کنید" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "نام نامعتبر." @@ -2870,7 +2875,7 @@ msgstr "" msgid "Add a new scene." msgstr "Ø§ÙØ²ÙˆØ¯Ù† صØÙ†Ù‡ جدید." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "صØÙ†Ù‡" @@ -5698,6 +5703,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "انتخاب پرونده قالب" @@ -8286,7 +8295,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9249,6 +9263,11 @@ msgstr "منبع جایگزینی را جستجو Ú©Ù†:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "تغییر نام منبع" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "عضوها" @@ -9302,6 +9321,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "متغیر را ویرایش Ú©Ù†:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "تغییر نوع پایه" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "بارگیری پیش ÙØ±Ø¶" @@ -9319,8 +9353,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد" +msgid "Base Type" +msgstr "تغییر نوع پایه" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10076,18 +10120,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "تطبیق‌ها:" @@ -12807,6 +12839,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "صاÙÛŒ کردن گره‌ها" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14206,6 +14243,9 @@ msgstr "نام نامعتبر." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/fi.po b/editor/translations/fi.po index bd2dd36308..a1d3ed6b5a 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -17,7 +17,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-04 13:45+0000\n" +"PO-Revision-Date: 2022-02-16 16:36+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -1480,6 +1480,11 @@ msgstr "Lataa väylän oletusasettelu." msgid "Create a new Bus Layout." msgstr "Luo uusi ääniväylän asettelu." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Avaa ääniväylän asettelu" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Virheellinen nimi." @@ -2919,7 +2924,7 @@ msgstr "Käytä häiriötöntä tilaa." msgid "Add a new scene." msgstr "Lisää uusi skene." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Skene" @@ -3293,14 +3298,12 @@ msgid "Update Continuously" msgstr "Päivitä jatkuvasti" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Päivitä kun muuttuu" +msgstr "Päivitä kaikki muutokset" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Materiaalimuutokset:" +msgstr "Päivitä olennaiset muutokset" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4075,6 +4078,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Editori ei tunnista tätä tiedostopäätettä.\n" +"Jos haluat nimetä tiedoston uudelleen joka tapauksessa, tee se " +"käyttöjärjestelmäsi tiedostonhallintaa käyttäen.\n" +"Sen jälkeen, kun tiedosto on nimetty tuntemattomalla päätteellä, sitä ei " +"enää näytetä editorissa." #: editor/filesystem_dock.cpp msgid "" @@ -5693,6 +5701,10 @@ msgid "Bake Lightmaps" msgstr "Kehitä Lightmapit" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Valitse lightmapin kehitystiedosto:" @@ -8179,7 +8191,13 @@ msgid "Cinematic Preview" msgstr "Elokuvallinen esikatselu" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Ei käytettävissä GLES2-renderöijää käytettäessä." #: editor/plugins/spatial_editor_plugin.cpp @@ -9073,6 +9091,11 @@ msgid "Select Another Theme Resource:" msgstr "Valitse toinen teemaresurssi:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Nimeä resurssi uudelleen" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Toinen teema" @@ -9121,6 +9144,20 @@ msgstr "" "päivittää kaikkien muiden tämän tyyppisten tyylilaatikoiden ominaisuuksia." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Lisää osan tyyppi" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Aseta muuttujan tyyppi" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Muuta kantatyyppiä" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Näytä oletus" @@ -9137,8 +9174,19 @@ msgid "Override all default type items." msgstr "Ylikirjoita kaikki oletustyypin osat." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Lisää osan tyyppi" +#, fuzzy +msgid "Base Type" +msgstr "Muuta kantatyyppiä" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9844,18 +9892,6 @@ msgid "Commit list size" msgstr "Vahvistuslistan koko" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Haarat" @@ -12599,6 +12635,11 @@ msgid "Stack Frames" msgstr "Pinokehykset" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Suodata laattoja" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiloija" @@ -12772,14 +12813,12 @@ msgid "Set Occluder Sphere Position" msgstr "Aseta peittopallon sijainti" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Aseta portaalin pisteen sijainti" +msgstr "Aseta peittopolygonin pisteen sijainti" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "Aseta käyräpisteen sijainti" +msgstr "Aseta peittoreiän pisteen sijainti" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -13916,9 +13955,10 @@ msgstr "Virheellinen paketin nimi:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"\"android/modules\" projektiasetukseen on liitetty virheellinen " -"\"GodotPaymentV3\" moduuli (muuttunut Godotin versiossa 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14187,166 +14227,167 @@ msgstr "Virhe käynnistettäessä HTTP-palvelinta:" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "Ei saada pääsyä tiedostojärjestelmään." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "Info.plist hajautusarvoa ei saada." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "Virheellinen projektin nimi." +msgstr "Virheellinen Info.plist, exe-nimi puuttuu." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "Virheellinen Info.plist, bundle id puuttuu." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "Virheellinen geometria, ei voida luoda polygonia." +msgstr "Virheellinen Info.plist, ei voida ladata." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "Kansiota ei voitu luoda." +msgstr "Alikansion \"%s\" luonti epäonnistui." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "Binäärin ohennus epäonnistui." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Virheellinen kantapolku." +msgstr "Virheellinen binäärimuoto." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Jo allekirjoitettu!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Resurssin lataaminen epäonnistui." +msgstr "Sisäkkäisten resurssien käsittely epäonnistui." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "_CodeSignature alikansion luonti epäonnistui." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Resurssin lataaminen epäonnistui." +msgstr "CodeResources hajautusarvon saanti epäonnistui." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "Virheellinen tiedostopääte." +msgstr "Virheellinen oikeutustiedosto (entitlements)." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Virheellinen tiedostopääte." +msgstr "Virheellinen käynnistystiedosto." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "Ei voida muuttaa allekirjoituksen latauskäskyn kokoa." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "Laajennetun binäärin luonti epäonnistui." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "Tuntematon bundle-tyyppi." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Tuntematon objektityyppi." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"Huom: Notarisointiprosessi kestää yleensä alle tunnin. Kun käsittely on " +"valmis, saat sähköpostin." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Voit tarkistaa edistymisen manuaalisesti avaamalla Terminaalin ja " +"suorittamalla seuraavan komennon:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Suorita seuraava komento nitoaksesi notarisointilipukkeen vietyyn " +"sovellukseen (vapaavalintainen):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Kuvakkeita ei löytynyt." +msgstr "Identiteettiä ei löytynyt." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Luodaan pienoiskuvaa" +msgstr "Luodaan app bundlea" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"Ei löydetty APK-vientimallia vientiä varten:\n" -"%s" +msgstr "Ei löydetty app-vientimallia vientiä varten:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"Suhteelliset symboliset linkit eivät ole tuettuja tässä " +"käyttöjärjestelmässä, viety projekti saattaa olla rikkinäinen!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Pyydettyä binäärivientimallia '%s' ei löydy. Se saattaa puuttua " +"vientimalliesi arkistosta." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Tehdään PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Ad-hoc allekirjoitetut sovellukset tarvitsevat 'Disable Library Validation' " +"oikeutuksen ladatakseen dynaamisia kirjastoja." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "Allekirjoitetaan bundle-koodi" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Tehdään DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "Allekirjoitetaan DMG-koodi" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Tehdään ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"Notarisointi edellyttää, että sovellus on ensin pakattu; valitse sen sijaan " +"DMG- tai ZIP-vientimuoto." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "Lähetetään tiedostopaketti notarisointia varten" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14357,31 +14398,33 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"Varoitus: Editorin asetuksissa on valittuna sisäänrakennettu \"codesign\". " +"Koodin allekirjoitus on rajoitettu vain ad-hoc allekirjoituksiin." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"Varoitus: Xcode-komentorivityökaluja ei ole asennettu, käytetään " +"sisäänrakennettua \"codesign\"-työkalua. Koodin allekirjoitus on rajoitettu " +"vain ad-hoc allekirjoituksiin." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." -msgstr "" +msgstr "Notarisointi: notarisointi ad-hoc allekirjoituksella ei ole tuettua." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "Notarisointi: koodin allekirjoitus tarvitaan." +msgstr "Notarisointi: koodin allekirjoitus tarvitaan notarisointia varten." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "Notarisointi: hardened runtime tarvitaan." +msgstr "Notarisointi: hardened runtime tarvitaan notarisointia varten." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "Notarisointi: hardened runtime tarvitaan." +msgstr "Notarisointi: timestamp runtime tarvitaan notarisointia varten." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14396,63 +14439,86 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Varoitus: notarisointi on pois päältä. Gatekeeper estää viedyn projektin " +"käytön, jos se on ladattu tuntemattomasta lähteestä." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"Koodin allekirjoitus on pois päältä. Viedyt projektit eivät toimi Maceillä, " +"joissa on Gatekeeper päällä, eivätkä Apple Silicon suorittimia käyttävillä " +"Maceillä." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Hardened Runtime ei ole yhteensopiva ad-hoc allekirjoituksen kanssa ja " +"kytketään pois päältä!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" msgstr "" +"Timestamping ei ole yhteensopiva ad-hoc allekirjoituksen kanssa ja kytketään " +"pois päältä!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Varoitus: notarisointi ei ole tuettu tästä käyttöjärjestelmästä. Gatekeeper " +"estää viedyn projektin käytön, jos se on ladattu tuntemattomasta lähteestä." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"Yksityisyys: mikrofonin käyttö on sallittu, mutta käyttökuvausta ei ole " +"määritelty." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"Yksityisyys: kameran käyttö on sallittu, mutta käyttökuvausta ei ole " +"määritelty." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"Yksityisyys: sijaintitiedon käyttö on sallittu, mutta käyttökuvausta ei ole " +"määritelty." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"Yksityisyys: osoitekirjan käyttö on sallittu, mutta käyttökuvausta ei ole " +"määritelty." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"Yksityisyys: kalenterin käyttö on sallittu, mutta käyttökuvausta ei ole " +"määritelty." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"Yksityisyys: kuvakirjaston käyttö on sallittu, mutta käyttökuvausta ei ole " +"määritelty." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14513,21 +14579,20 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"rcedit-työkalu täytyy olla konfiguroituna editorin asetuksissa (Export > " +"Windows > Rcedit) ikonin tai sovelluksen tietojen muuttamiseksi." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Virheellinen polku." +msgstr "Virheellinen ikonin polku:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Virheellinen tiedostopääte." +msgstr "Virheellinen tiedoston versio:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "Tuotteen GUID (yleisesti yksilöllinen tunniste) on virheellinen." +msgstr "Virheellinen tuotteen versio:" #: scene/2d/animated_sprite.cpp msgid "" @@ -15262,7 +15327,6 @@ msgstr "" "Tämä solmu on poistettu käytöstä. Käytä sen sijaan AnimationTree solmua." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 1cab78fd72..dd6e9aaa68 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -1448,6 +1448,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2803,7 +2807,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5459,6 +5463,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7897,7 +7905,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8780,6 +8793,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8826,6 +8843,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8842,7 +8871,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9525,18 +9564,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12098,6 +12125,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13393,6 +13424,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 03dff89a24..37752a1a22 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -40,7 +40,7 @@ # Tommy Melançon-Roy <tommel1234@hotmail.com>, 2017-2018. # Willow <theotimefd@aol.com>, 2018. # Xananax <xananax@yelostudio.com>, 2017-2018. -# Perrier Mathis <mathis.perrier73@gmail.com>, 2018. +# Perrier Mathis <mathis.perrier73@gmail.com>, 2018, 2022. # Ewan Lehnebach <ewan.lehnebach@gmail.com>, 2018. # Hugo Locurcio <hugo.locurcio@hugo.pro>, 2018, 2019, 2020, 2021. # Grigore Antoniuc <grisa181@gmail.com>, 2018. @@ -70,7 +70,7 @@ # Camille Mohr-Daurat <pouleyketchoup@gmail.com>, 2019. # Pierre Stempin <pierre.stempin@gmail.com>, 2019. # Pierre Caye <pierrecaye@laposte.net>, 2020, 2021, 2022. -# Kevin Bouancheau <kevin.bouancheau@gmail.com>, 2020. +# Kevin Bouancheau <kevin.bouancheau@gmail.com>, 2020, 2022. # LaurentOngaro <laurent@gameamea.com>, 2020. # Julien Humbert <julroy67@gmail.com>, 2020. # Nathan <bonnemainsnathan@gmail.com>, 2020, 2021, 2022. @@ -88,13 +88,14 @@ # Maxime Leroy <lisacintosh@gmail.com>, 2022. # Adi-df <adidf-web@laposte.net>, 2022. # MinusKube <minuskube@gmail.com>, 2022. +# Alexandre <alexandre.blanquero00@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-10 07:50+0000\n" -"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n" +"PO-Revision-Date: 2022-03-04 08:19+0000\n" +"Last-Translator: Alexandre <alexandre.blanquero00@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -102,7 +103,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1571,6 +1572,11 @@ msgstr "Charger l'agencement de transport par défaut." msgid "Create a new Bus Layout." msgstr "Créer une nouvel agencement de tranport." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Ouvrir une disposition de bus audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nom invalide." @@ -3036,7 +3042,7 @@ msgstr "Basculer en mode sans distraction." msgid "Add a new scene." msgstr "Ajouter une nouvelle scène." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scène" @@ -3414,14 +3420,13 @@ msgid "Update Continuously" msgstr "Mettre à jour en continu" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Mettre à jour quand modifié" +msgstr "Mettre à jour les changements" #: editor/editor_node.cpp #, fuzzy msgid "Update Vital Changes" -msgstr "Changements de matériau :" +msgstr "Changements de matériau" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4206,6 +4211,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Cette extension de fichier n'est pas reconnue par l'éditeur.\n" +"Si vous voulez quand même le renommer, utilisez le gestionnaire de fichiers " +"de votre système d'exploitation.\n" +"Après avoir été renommé avec une extension inconnue, le fichier ne sera plus " +"affiché dans l'éditeur." #: editor/filesystem_dock.cpp msgid "" @@ -4848,7 +4858,7 @@ msgstr "Supprimer le polygone et le point" #: editor/plugins/animation_state_machine_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "Ajouter une animation" +msgstr "Ajouter une Animation" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -5831,6 +5841,10 @@ msgid "Bake Lightmaps" msgstr "Précalculer les lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Sélectionnez le fichier de précalcul de lightmap :" @@ -8334,7 +8348,13 @@ msgid "Cinematic Preview" msgstr "Aperçu cinématographique" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Non disponible quand le moteur de rendu GLES2 est utilisé." #: editor/plugins/spatial_editor_plugin.cpp @@ -9239,6 +9259,11 @@ msgid "Select Another Theme Resource:" msgstr "Sélectionnez une autre ressource Theme :" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Renommer une ressource" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Autre thème" @@ -9288,6 +9313,20 @@ msgstr "" "appartenant à ce type." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Ajouter un item de type" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Définir type de variable" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Changer le type de base" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Afficher par défaut" @@ -9305,8 +9344,19 @@ msgid "Override all default type items." msgstr "Surcharge tous les items de type par défaut." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Ajouter un item de type" +#, fuzzy +msgid "Base Type" +msgstr "Changer le type de base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -10013,18 +10063,6 @@ msgid "Commit list size" msgstr "Valider la taille des listes" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Branches" @@ -12793,6 +12831,11 @@ msgid "Stack Frames" msgstr "Pile des appels" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrer les tuiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profileur" @@ -14128,9 +14171,10 @@ msgstr "Nom de paquet invalide :" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Module \"GodotPaymentV3\" invalide inclus dans le paramétrage du projet " -"\"android/modules\" (modifié dans Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14403,43 +14447,40 @@ msgstr "Erreur de démarrage du serveur HTTP :" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "Le système de fichiers ne peut être accédé." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "Le hachage de « Info.plist » n'a pu être récupéré." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "Nom du projet invalide." +msgstr "« Info.plist » invalide, aucun nom d'exécutable." #: platform/osx/export/codesign.cpp +#, fuzzy msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "« Info.plist » invalide, aucun identifiant de bundle." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "Géométrie invalide, impossible de créer le polygone." +msgstr "« Info.plist » invalide, n'a pu être chargé." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "Impossible de créer le dossier." +msgstr "Échec de création du sous-dossier « %s »." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." msgstr "" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Chemin de base invalide." +msgstr "Format binaire invalide." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Déjà signé !" #: platform/osx/export/codesign.cpp #, fuzzy @@ -14461,9 +14502,8 @@ msgid "Invalid entitlements file." msgstr "Extension invalide." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Extension invalide." +msgstr "Fichier exécutable invalide." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." @@ -14479,7 +14519,7 @@ msgstr "" #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Type d'objet inconnu." #: platform/osx/export/export.cpp msgid "" @@ -14500,9 +14540,8 @@ msgid "" msgstr "" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Pas d'icônes trouvées." +msgstr "Aucune identité trouvée." #: platform/osx/export/export.cpp #, fuzzy @@ -14530,7 +14569,7 @@ msgstr "" #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Création du PKG" #: platform/osx/export/export.cpp msgid "" @@ -14544,7 +14583,7 @@ msgstr "" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Création du DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" @@ -14552,7 +14591,7 @@ msgstr "" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Création du ZIP" #: platform/osx/export/export.cpp msgid "" @@ -14641,34 +14680,46 @@ msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"Confidentialité : L'accès au microphone est actif, mais son usage n'a pas " +"été spécifié." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"Confidentialité : L'accès à la caméra est actif, mais son usage n'a pas été " +"spécifié." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"Confidentialité : L'accès au informations de positionnement est actif, mais " +"son usage n'a pas été spécifié." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"Confidentialité : L'accès au carnet d'adresses est actif, mais son usage n'a " +"pas été spécifié." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"Confidentialité : L'accès au calendrier est actif, mais son usage n'a pas " +"été spécifié." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"Confidentialité : L'accès à la bibliothèque de photos est actif, mais son " +"usage n'a pas été spécifié." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14740,21 +14791,21 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"L'outil « rcedit » doit être configuré dans les préférences de l'éditeur " +"(Exporter > Windows > Rcedit) for modifier l'icône ou les informations de " +"l'application." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Chemin invalide." +msgstr "Chemin d'icône invalide :" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Extension invalide." +msgstr "Version de fichier invalide :" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "GUID produit invalide." +msgstr "Version du produit invalide :" #: scene/2d/animated_sprite.cpp msgid "" @@ -15508,14 +15559,13 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Ce nÅ“ud est désormais déprécié. Utilisez AnimationTree à la place." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" "RMB: Remove preset" msgstr "" "Couleur : #%s\n" -"Clic gauche : Définir la couleur\n" +"Clic gauche : Appliquer la couleur\n" "Clic droit : Supprimer le préréglage" #: scene/gui/color_picker.cpp diff --git a/editor/translations/ga.po b/editor/translations/ga.po index 4db0862314..734f2c1f82 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -1440,6 +1440,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2792,7 +2796,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5439,6 +5443,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7867,7 +7875,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8747,6 +8760,11 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Acmhainn" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8793,6 +8811,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8809,7 +8839,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9488,18 +9528,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12061,6 +12089,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "ScagairÃ..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13354,6 +13387,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/gl.po b/editor/translations/gl.po index b88f8f0430..420ad5ebf3 100644 --- a/editor/translations/gl.po +++ b/editor/translations/gl.po @@ -1488,6 +1488,11 @@ msgstr "Cargar a disposición de Bus por defecto." msgid "Create a new Bus Layout." msgstr "Crear unha nova Disposición de Bus." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Abrir Disposición do Bus de Son" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nome inválido." @@ -2947,7 +2952,7 @@ msgstr "Act./Desact. modo sen distraccións." msgid "Add a new scene." msgstr "Engadir unha nova escena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Escena" @@ -5684,6 +5689,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -8193,7 +8202,13 @@ msgid "Cinematic Preview" msgstr "Vista Previa Cinemática" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Non dispoñible cando se está usando o renderizador GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9137,6 +9152,11 @@ msgstr "Eliminar Recurso" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Renomear Recurso" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Importar Tema" @@ -9190,6 +9210,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Engadir Elemento" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Cambiar Tipo Base:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Cambiar Tipo Base:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Cargar Valores por Defecto" @@ -9208,8 +9243,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Engadir Elemento" +msgid "Base Type" +msgstr "Cambiar Tipo Base:" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -9904,18 +9949,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Coincidencias:" @@ -12584,6 +12617,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrar sinais" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "AnalÃtica de Rendemento" @@ -13913,6 +13951,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/he.po b/editor/translations/he.po index c7966a9536..668cc67dd0 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -1480,6 +1480,11 @@ msgstr "×˜×¢×™× ×ª בררת המחדל של פריסת ×פיקי השמע." msgid "Create a new Bus Layout." msgstr "יצירת פריסת ××¤×™×§×™× ×—×“×©×”." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "פתיחת פריסת ×פיקי שמע" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "×©× ×©×’×•×™." @@ -2891,7 +2896,7 @@ msgstr "הפעל/בטל מצב ×œ×œ× ×”×¡×—×•×ª דעת." msgid "Add a new scene." msgstr "הוספת ×¡×¦× ×” חדשה." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "×¡×¦× ×”" @@ -5692,6 +5697,10 @@ msgid "Bake Lightmaps" msgstr "×פיית Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "בחירת קובץ ×ª×‘× ×™×ª" @@ -8271,7 +8280,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9230,6 +9244,11 @@ msgstr "מחיקת מש×ב" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "×©×™× ×•×™ ×©× ×ž×©×ב" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב" @@ -9283,6 +9302,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "קביעת סוג ×ž×©×ª× ×”" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "×©×™× ×•×™ סוג בסיס" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "×˜×¢×™× ×ª בררת המחדל" @@ -9301,7 +9334,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "×©×™× ×•×™ סוג בסיס" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -10053,18 +10097,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "הת×מות:" @@ -12736,6 +12768,11 @@ msgid "Stack Frames" msgstr "×ž×—×¡× ×™×ª מסגרות" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "מ××¤×™×™× ×™ פריט." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "מ×פיין" @@ -14085,9 +14122,10 @@ msgstr "×©× ×—×‘×™×œ×” ×œ× ×—×•×§×™:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"מודול \"GodotPaymentV3\" ×œ× ×—×•×§×™ × ×ž×¦× ×‘×”×’×“×¨×ª ×”×ž×™×–× " -"ב-\"×× ×“×¨×•×יד/מודולי×\" (×©×™× ×•×™ בגודו 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/hi.po b/editor/translations/hi.po index eb5c524b8a..6911744a46 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -1490,6 +1490,11 @@ msgstr "पà¥à¤°à¤¾à¤¯à¤¿à¤• बस लेआउट लोड कीजियॠmsgid "Create a new Bus Layout." msgstr "नई बस लेआउट बनाइये." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "ऑडियो बस लेआउट खोलिये" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "अमानà¥à¤¯ नाम." @@ -2915,7 +2920,7 @@ msgstr "वà¥à¤¯à¤¾à¤•à¥à¤²à¤¤à¤¾ मà¥à¤•à¥à¤¤ मोड टॉगल।" msgid "Add a new scene." msgstr "à¤à¤• नया दृशà¥à¤¯ जोड़ें।" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "दृशà¥à¤¯" @@ -5659,6 +5664,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ फ़ाइल का चयन करें" @@ -8141,7 +8150,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9073,6 +9087,11 @@ msgid "Select Another Theme Resource:" msgstr "खोज रिपà¥à¤²à¥‡à¤¸à¤®à¥‡à¤‚ट संसाधन:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "संसाधन" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -9123,6 +9142,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "पà¥à¤°à¤¾à¤¯à¤¿à¤• लोड कीजिये" @@ -9141,7 +9172,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "%s का टाइप बदले" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9867,18 +9909,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "à¤à¤• जैसा:" @@ -12503,6 +12533,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "सà¥à¤•à¥à¤°à¥€à¤¨à¤¿à¤‚ग सिगà¥à¤¨à¤²" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13843,6 +13878,9 @@ msgstr "गलत फॉणà¥à¤Ÿ का आकार |" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/hr.po b/editor/translations/hr.po index 91849fe548..418c07c345 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -1460,6 +1460,11 @@ msgstr "UÄitaj zadani Bus Izgled." msgid "Create a new Bus Layout." msgstr "Kreiraj novi Bus izgled." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Promijeni glasnoću zvuÄne sabirnice" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nevažeće ime." @@ -2821,7 +2826,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5489,6 +5494,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7934,7 +7943,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8825,6 +8839,11 @@ msgid "Select Another Theme Resource:" msgstr "Traži zamjenu resursa:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Resurs" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8874,6 +8893,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Promijeni vrstu baze:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Promijeni vrstu baze:" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "UÄitaj Zadano" @@ -8891,7 +8924,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Promijeni vrstu baze:" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9582,18 +9626,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Podudaranja:" @@ -12170,6 +12202,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtriraj signale" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13473,6 +13510,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 85150bd14d..4a1d254c59 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -1498,6 +1498,11 @@ msgstr "Betölti az alapértelmezett Busz Elrendezést." msgid "Create a new Bus Layout." msgstr "Új Buszelrendezés létrehozása." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Hangbusz Elrendezés Megnyitása" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Érvénytelen név." @@ -2965,7 +2970,7 @@ msgstr "Zavarmentes mód váltása." msgid "Add a new scene." msgstr "Hozzáad egy új jelenetet." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Jelenet" @@ -5716,6 +5721,10 @@ msgid "Bake Lightmaps" msgstr "Fény Besütése" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Válasszon fénytérkép sablonfájlt:" @@ -8213,7 +8222,12 @@ msgid "Cinematic Preview" msgstr "Filmszerű elÅ‘nézet" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9142,6 +9156,11 @@ msgstr "ErÅ‘forrás Törlése" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "ErÅ‘forrás Ãtnevezése" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Téma Importálása" @@ -9196,6 +9215,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Elem Hozzáadása" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "AlaptÃpus módosÃtása:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "AlaptÃpus módosÃtása:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Alapértelmezett Betöltése" @@ -9214,8 +9248,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Elem Hozzáadása" +msgid "Base Type" +msgstr "AlaptÃpus módosÃtása:" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -9908,18 +9952,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Egyezések:" @@ -12504,6 +12536,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Csempék szűrése" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13842,6 +13879,9 @@ msgstr "Érvénytelen csomagnév:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/id.po b/editor/translations/id.po index 6955f05f3a..775ab4d8c1 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -24,7 +24,7 @@ # Modeus Darksono <garuga17@gmail.com>, 2019. # Akhmad Zulfikar <azuldegratz@gmail.com>, 2020. # Ade Fikri Malihuddin <ade.fm97@gmail.com>, 2020. -# zephyroths <ridho.hikaru@gmail.com>, 2020, 2021. +# zephyroths <ridho.hikaru@gmail.com>, 2020, 2021, 2022. # Richard Urban <redasuio1@gmail.com>, 2020. # yusuf afandi <afandi.yusuf.04@gmail.com>, 2020. # Habib Rohman <revolusi147id@gmail.com>, 2020. @@ -40,8 +40,8 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-11-19 08:43+0000\n" -"Last-Translator: Brian <brian@brianthe.dev>\n" +"PO-Revision-Date: 2022-02-23 17:54+0000\n" +"Last-Translator: zephyroths <ridho.hikaru@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot/id/>\n" "Language: id\n" @@ -49,7 +49,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.9.1-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -352,9 +352,8 @@ msgid "Duplicate Key(s)" msgstr "Duplikat Key" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add RESET Value(s)" -msgstr "Tambah %d Frame" +msgstr "Tambahkan Nilai RESET" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" @@ -1507,6 +1506,11 @@ msgstr "Muat default Layout Bus." msgid "Create a new Bus Layout." msgstr "Buat Layout Bus Baru." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Buka Layout Suara Bus" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nama tidak sah." @@ -2956,7 +2960,7 @@ msgstr "Toggle mode tanpa gangguan." msgid "Add a new scene." msgstr "Tambah skena baru." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Skena" @@ -5706,6 +5710,10 @@ msgid "Bake Lightmaps" msgstr "Panggang Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Pilih berkas lightmap bake:" @@ -8201,7 +8209,13 @@ msgid "Cinematic Preview" msgstr "Pratinjau Sinematik" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Tidak tersedia ketika menggunakan perender GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9135,6 +9149,11 @@ msgstr "Pilih Tema Lain Aset:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Ubah Nama Resource" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Impor Tema" @@ -9189,6 +9208,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Tambah Item" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Atur Jenis variabel" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Ubah Tipe Basis" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Muat Default" @@ -9207,8 +9241,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Tambah Item" +msgid "Base Type" +msgstr "Ubah Tipe Basis" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9928,18 +9972,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Kecocokan:" @@ -12699,6 +12731,11 @@ msgid "Stack Frames" msgstr "Stack Frame" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filter tile" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler(debugger/pemantauan)" @@ -14059,9 +14096,10 @@ msgstr "Nama paket tidak valid:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Modul \"GodotPaymentV3\" tidak valid yang dimasukkan dalam pengaturan proyek " -"\"android/modules\" (diubah di Godot 3.2.2)\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/is.po b/editor/translations/is.po index 824f7a7248..45098e09ee 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -1476,6 +1476,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2834,7 +2838,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5504,6 +5508,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7959,7 +7967,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8854,6 +8867,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8902,6 +8919,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8918,7 +8947,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9619,18 +9658,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12221,6 +12248,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13531,6 +13562,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/it.po b/editor/translations/it.po index 3da90af619..6ca5230b6b 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -66,13 +66,14 @@ # Theraloss <danilo.polani@gmail.com>, 2021. # Pietro Grungo <pietro.grungo@libero.it>, 2021. # Alfonso Scarpino <alfonso.scarpino@gmail.com>, 2022. +# Federico Caprini <caprinifede@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-01-31 22:50+0000\n" -"Last-Translator: Mirko <miknsop@gmail.com>\n" +"PO-Revision-Date: 2022-02-23 17:54+0000\n" +"Last-Translator: Federico Caprini <caprinifede@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -103,7 +104,7 @@ msgstr "Input %i non valido (assente) nell'espressione" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "self non può essere usato perché l'istanza è nulla (non passata)" +msgstr "self non può essere usato perché l'istanza è null (non passata)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -1543,6 +1544,11 @@ msgstr "Carica la disposizione di bus predefinita." msgid "Create a new Bus Layout." msgstr "Crea una nuova disposizione di bus." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Apri la disposizione di un bus audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nome non valido." @@ -1948,7 +1954,7 @@ msgstr "Rendi attuale" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp msgid "Import" -msgstr "Importazione" +msgstr "Importa" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -3002,7 +3008,7 @@ msgstr "Commuta la modalità senza distrazioni." msgid "Add a new scene." msgstr "Aggiungi una nuova scena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scena" @@ -3382,9 +3388,8 @@ msgid "Update All Changes" msgstr "Aggiorna quando modificata" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Cambiamenti dei materiali:" +msgstr "Cambiamenti dei materiali" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4168,6 +4173,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Quest'estensione file non è riconosciuta dall'editore.\n" +"Se vuoi comunque rinominarla, usa il file manager del tuo sistema " +"operativo.\n" +"Dopo averlo rinominato ad un'estensione sconosciuta, il file non verrà più " +"visualizzato nell'editore." #: editor/filesystem_dock.cpp msgid "" @@ -4629,6 +4639,8 @@ msgid "" "Select a resource file in the filesystem or in the inspector to adjust " "import settings." msgstr "" +"Seleziona un file risorsa nel filesystem o nell'ispettore per aggiustare le " +"impostazioni di importazione." #: editor/inspector_dock.cpp msgid "Failed to load resource." @@ -5789,6 +5801,10 @@ msgid "Bake Lightmaps" msgstr "Preprocessa Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Seleziona il file bake della lightmap:" @@ -8324,7 +8340,13 @@ msgid "Cinematic Preview" msgstr "Anteprima Cinematografica" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Non disponibile quando il renderer GLES2 è in uso." #: editor/plugins/spatial_editor_plugin.cpp @@ -8455,15 +8477,15 @@ msgstr "Vista laterale destra" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orbit View Down" -msgstr "" +msgstr "Orbita la visuale in giù" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orbit View Left" -msgstr "" +msgstr "Orbita la visuale in su" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orbit View Right" -msgstr "" +msgstr "Orbita la visuale a destra" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy @@ -8496,11 +8518,11 @@ msgstr "Commuta la vista libera" #: editor/plugins/spatial_editor_plugin.cpp msgid "Decrease Field of View" -msgstr "" +msgstr "Diminuisci il Campo Visivo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Increase Field of View" -msgstr "" +msgstr "Aumenta il Campo Visivo" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy @@ -8949,7 +8971,7 @@ msgstr "Importa tema" #: editor/plugins/theme_editor_plugin.cpp msgid "Importing items {n}/{n}" -msgstr "" +msgstr "Importa oggetti {n}/{n}" #: editor/plugins/theme_editor_plugin.cpp msgid "Updating the editor" @@ -8978,11 +9000,11 @@ msgstr "Seleziona tutti gli oggetti colorati visibili." #: editor/plugins/theme_editor_plugin.cpp msgid "Select all visible color items and their data." -msgstr "" +msgstr "Seleziona tutti gli oggetti colorati e i loro dati." #: editor/plugins/theme_editor_plugin.cpp msgid "Deselect all visible color items." -msgstr "" +msgstr "Deseleziona tutti gli oggetti colorati." #: editor/plugins/theme_editor_plugin.cpp msgid "Select all visible constant items." @@ -8990,7 +9012,7 @@ msgstr "Seleziona tutti gli oggetti visibili." #: editor/plugins/theme_editor_plugin.cpp msgid "Select all visible constant items and their data." -msgstr "" +msgstr "Seleziona tutti gli oggetti costanti e i loro dati." #: editor/plugins/theme_editor_plugin.cpp msgid "Deselect all visible constant items." @@ -9251,6 +9273,11 @@ msgstr "Seleziona un'altra risorsa del tema:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Rinomina risorsa" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Importa tema" @@ -9304,6 +9331,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Aggiungi Elemento" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Imposta Tipo di Variabile" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Cambia Tipo di Base" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Carica i predefiniti" @@ -9322,8 +9364,18 @@ msgstr "Sovrascrivi tutti gli elementi predefiniti." #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Aggiungi Elemento" +msgid "Base Type" +msgstr "Cambia Tipo di Base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9940,18 +9992,16 @@ msgid "Unstaged Changes" msgstr "Cambiamenti degli shader:" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit:" -msgstr "Commit" +msgstr "Commit:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Date:" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Subtitle:" -msgstr "Sottoalbero" +msgstr "Sottotitolo:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Do you want to remove the %s branch?" @@ -10024,9 +10074,8 @@ msgid "Stage all changes" msgstr "Memorizzazione dei cambiamenti locali…" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unstage all changes" -msgstr "Cambiamenti dei materiali:" +msgstr "Annulla tutte le modifiche" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -10047,21 +10096,8 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Branches" -msgstr "Corrispondenze:" +msgstr "Rami" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -10093,14 +10129,12 @@ msgid "Remove Remote" msgstr "Rimuovi l'elemento" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote Name" -msgstr "Remoto " +msgstr "Nome Remoto" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote URL" -msgstr "Remoto " +msgstr "URL Remoto" #: editor/plugins/version_control_editor_plugin.cpp msgid "Fetch" @@ -10140,9 +10174,8 @@ msgid "Unmerged" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "View:" -msgstr "Vista" +msgstr "Vista:" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -12826,6 +12859,11 @@ msgid "Stack Frames" msgstr "Stack Frame" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtra tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler" @@ -13780,9 +13818,8 @@ msgid "in order:" msgstr "Rinomina cartella:" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Switch" -msgstr "Switch" +msgstr "Inverti" #: modules/visual_script/visual_script_flow_control.cpp msgid "'input' is:" @@ -14015,9 +14052,8 @@ msgid "Yield" msgstr "" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "Wait" -msgstr "Wait" +msgstr "Aspetta" #: modules/visual_script/visual_script_yield_nodes.cpp #, fuzzy @@ -14194,9 +14230,10 @@ msgstr "Nome del pacchetto non valido:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Modulo \"GodotPaymentV3\" non valido incluso nell'impostazione del progetto " -"\"android/moduli\" (modificato in Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/ja.po b/editor/translations/ja.po index de6c22ce1a..81522d182d 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -42,7 +42,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-14 22:08+0000\n" +"PO-Revision-Date: 2022-03-08 08:59+0000\n" "Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" @@ -51,7 +51,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1508,6 +1508,11 @@ msgstr "デフォルトã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’èªã¿è¾¼ã‚€ã€‚" msgid "Create a new Bus Layout." msgstr "æ–°è¦ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’作æˆã€‚" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "無効ãªåå‰ã§ã™ã€‚" @@ -2947,7 +2952,7 @@ msgstr "集ä¸ãƒ¢ãƒ¼ãƒ‰ã‚’切り替ãˆã‚‹ã€‚" msgid "Add a new scene." msgstr "æ–°è¦ã‚·ãƒ¼ãƒ³ã‚’è¿½åŠ ã™ã‚‹ã€‚" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "シーン" @@ -3117,7 +3122,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "コリジョン形状ã®è¡¨ç¤º" +msgstr "コリジョン形状を表示" #: editor/editor_node.cpp msgid "" @@ -3129,7 +3134,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "ナビゲーションã®è¡¨ç¤º" +msgstr "ナビゲーションを表示" #: editor/editor_node.cpp msgid "" @@ -3141,7 +3146,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Force Shader Fallbacks" -msgstr "" +msgstr "シェーダーフォールãƒãƒƒã‚¯ã‚’強制" #: editor/editor_node.cpp msgid "" @@ -3152,10 +3157,16 @@ msgid "" "Asynchronous shader compilation must be enabled in the project settings for " "this option to make a difference." msgstr "" +"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ã™ã¹ã¦ã®å®Ÿè¡Œæ™‚ã«ã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ãŒãƒ•ォールãƒãƒƒã‚¯å½¢å¼ " +"(ubershaderã§è¡¨ç¤ºã™ã‚‹ã‹éžè¡¨ç¤º) ã§ä½¿ç”¨ã•れã¾ã™ã€‚\n" +"ã“れã¯ã€é€šå¸¸ã¯ç°¡ç´ ã«è¡¨ç¤ºã•れるフォールãƒãƒƒã‚¯ã®ã€è¦‹ãŸç›®ã¨æ€§èƒ½ã‚’確èªã™ã‚‹ãŸã‚ã«" +"役立ã¡ã¾ã™ã€‚\n" +"ã“ã®ã‚ªãƒ—ションを機能ã•ã›ã‚‹ã«ã¯ã€ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆè¨å®šã§éžåŒæœŸã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ã‚³ãƒ³ãƒ‘イル" +"を有効ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: editor/editor_node.cpp msgid "Synchronize Scene Changes" -msgstr "シーンã®å¤‰æ›´ã‚’åŒæœŸ" +msgstr "ã‚·ãƒ¼ãƒ³å¤‰æ›´ã‚’åŒæœŸ" #: editor/editor_node.cpp msgid "" @@ -3171,7 +3182,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Synchronize Script Changes" -msgstr "スクリプトã®å¤‰æ›´ã‚’åŒæœŸ" +msgstr "ã‚¹ã‚¯ãƒªãƒ—ãƒˆå¤‰æ›´ã‚’åŒæœŸ" #: editor/editor_node.cpp msgid "" @@ -4097,6 +4108,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"ã“ã®ãƒ•ァイル拡張åã¯ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã«ã‚ˆã£ã¦èªè˜ã•れã¾ã›ã‚“。\n" +"ãれã§ã‚‚åå‰ã‚’変更ã—ãŸã„å ´åˆã¯ã€ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ•ァイルマãƒãƒ¼" +"ジャーを使用ã—ã¦ãã ã•ã„。\n" +"䏿˜Žãªæ‹¡å¼µåã¸ã¨åå‰ã‚’変更ã™ã‚‹ã¨ã€ãã®ãƒ•ァイルã¯ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã«è¡¨ç¤ºã•れãªããªã‚Š" +"ã¾ã™ã€‚" #: editor/filesystem_dock.cpp msgid "" @@ -5707,6 +5723,10 @@ msgid "Bake Lightmaps" msgstr "ライトマップを焼ã込む" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "ãƒ©ã‚¤ãƒˆãƒžãƒƒãƒ—ãƒ™ã‚¤ã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž:" @@ -5801,11 +5821,11 @@ msgstr "Control \"%s\" ã‚’ (%d, %d) ã«ãƒªã‚µã‚¤ã‚ºã—ã¾ã™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale %d CanvasItems" -msgstr "%d 個㮠CanvasItem を拡大 / 縮å°" +msgstr "%d 個㮠CanvasItem を拡大縮å°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "CanvasItem \"%s\" ã‚’ (%s, %s) ã«æ‹¡å¤§ / 縮å°" +msgstr "CanvasItem \"%s\" ã‚’ (%s, %s) ã«æ‹¡å¤§ç¸®å°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move %d CanvasItems" @@ -6052,7 +6072,7 @@ msgstr "スケールモード" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Shift: Scale proportionally." -msgstr "" +msgstr "Shift: 比率をä¿ã£ã¦æ‹¡å¤§ç¸®å°ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -8190,7 +8210,13 @@ msgid "Cinematic Preview" msgstr "ã‚·ãƒãƒžãƒ†ã‚£ãƒƒã‚¯ãƒ—レビュー" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "GLES2レンダラーã®å ´åˆã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: editor/plugins/spatial_editor_plugin.cpp @@ -8430,23 +8456,23 @@ msgstr "è¨å®š..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" -msgstr "スナップã®è¨å®š" +msgstr "スナップè¨å®š" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "スナップã®ç§»å‹•:" +msgstr "移動スナップ:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "スナップã®å›žè»¢(度):" +msgstr "回転スナップ (度):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "ã‚¹ãƒŠãƒƒãƒ—ã®æ‹¡å¤§/縮å°(%):" +msgstr "拡大 / 縮å°ã‚¹ãƒŠãƒƒãƒ— (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "ビューãƒãƒ¼ãƒˆã®è¨å®š" +msgstr "ビューãƒãƒ¼ãƒˆè¨å®š" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" @@ -8454,15 +8480,15 @@ msgstr "視野角(度):" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" -msgstr "Z-Nearã®è¡¨ç¤º:" +msgstr "ビューã®Z-Near:" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Far:" -msgstr "Z-Farã®è¡¨ç¤º:" +msgstr "ビューã®Z-Far:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" -msgstr "トランスフォームã®å¤‰æ›´" +msgstr "トランスフォーム変更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" @@ -9084,6 +9110,11 @@ msgid "Select Another Theme Resource:" msgstr "ä»–ã®ãƒ†ãƒ¼ãƒžãƒªã‚½ãƒ¼ã‚¹ã®é¸æŠž:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "リソースåを変更" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "ä»–ã®ãƒ†ãƒ¼ãƒž" @@ -9132,8 +9163,22 @@ msgstr "" "ã¦ã®ã“ã®ã‚¿ã‚¤ãƒ—ã®StyleBoxã§åŒã˜ãƒ—ãƒãƒ‘ãƒ†ã‚£ãŒæ›´æ–°ã•れã¾ã™ã€‚" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "アイテムã®ã‚¿ã‚¤ãƒ—ã‚’è¿½åŠ " + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "変数ã®åž‹ã‚’è¨å®š" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "基底型を変更" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" -msgstr "デフォルトã®è¡¨ç¤º" +msgstr "デフォルトを表示" #: editor/plugins/theme_editor_plugin.cpp msgid "Show default type items alongside items that have been overridden." @@ -9149,8 +9194,19 @@ msgid "Override all default type items." msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒ•ォルトタイプã®ã‚¢ã‚¤ãƒ†ãƒ をオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã€‚" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "アイテムã®ã‚¿ã‚¤ãƒ—ã‚’è¿½åŠ " +#, fuzzy +msgid "Base Type" +msgstr "基底型を変更" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9859,18 +9915,6 @@ msgid "Commit list size" msgstr "コミットリストサイズ" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "ブランãƒ" @@ -12604,6 +12648,11 @@ msgid "Stack Frames" msgstr "スタックフレーム" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "タイルを絞り込む" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "プãƒãƒ•ァイラー" @@ -13944,9 +13993,10 @@ msgstr "無効ãªãƒ‘ッケージå:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"「android/modulesã€ã«å«ã¾ã‚Œã‚‹ã€ŒGodotPaymentV3ã€ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆè¨å®šãŒ" -"無効ã§ã™ (Godot 3.2.2 ã«ã¦å¤‰æ›´)。\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/ka.po b/editor/translations/ka.po index b3d35a3311..8a18925bb4 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -1535,6 +1535,11 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "áƒáƒ£áƒ“ირგáƒáƒ“áƒáƒ›áƒ¢áƒáƒœáƒ˜áƒ¡ ხმის გáƒáƒ“áƒáƒ თვáƒ" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2919,7 +2924,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5645,6 +5650,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?" @@ -8159,7 +8168,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9072,6 +9086,11 @@ msgid "Select Another Theme Resource:" msgstr "ჩáƒáƒ›áƒœáƒáƒªáƒ•ლებელი რესურსის ძიებáƒ:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "რესურსი" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -9123,6 +9142,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "%s ტიპის ცვლილებáƒ" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "%s ტიპის ცვლილებáƒ" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -9139,7 +9172,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "%s ტიპის ცვლილებáƒ" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9861,18 +9905,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "დáƒáƒ›áƒ—ხვევები:" @@ -12508,6 +12540,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "დáƒáƒ›áƒáƒ™áƒáƒ•შირებელი სიგნáƒáƒšáƒ˜:" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13834,6 +13871,9 @@ msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/km.po b/editor/translations/km.po index a386fd1188..d3f13b9d89 100644 --- a/editor/translations/km.po +++ b/editor/translations/km.po @@ -1437,6 +1437,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2786,7 +2790,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5429,6 +5433,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7861,7 +7869,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8736,6 +8749,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8782,6 +8799,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8798,7 +8827,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9474,18 +9513,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12039,6 +12066,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13323,6 +13354,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 0312c7fd92..15bed58f67 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -16,7 +16,7 @@ # Jiyoon Kim <kimjiy@dickinson.edu>, 2019. # Ervin <zetsmart@gmail.com>, 2019. # Tilto_ <tilto0822@develable.xyz>, 2020. -# Myeongjin Lee <aranet100@gmail.com>, 2020, 2021. +# Myeongjin Lee <aranet100@gmail.com>, 2020, 2021, 2022. # Doyun Kwon <caen4516@gmail.com>, 2020. # Jun Hyung Shin <shmishmi79@gmail.com>, 2020. # Yongjin Jo <wnrhd114@gmail.com>, 2020. @@ -35,8 +35,8 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-04 13:45+0000\n" -"Last-Translator: Lee Minhak <minarihak@gmail.com>\n" +"PO-Revision-Date: 2022-03-04 08:19+0000\n" +"Last-Translator: Myeongjin Lee <aranet100@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" "Language: ko\n" @@ -44,7 +44,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1499,6 +1499,11 @@ msgstr "ë””í´íЏ 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì˜µë‹ˆë‹¤." msgid "Create a new Bus Layout." msgstr "새로운 버스 ë ˆì´ì•„ì›ƒì„ ë§Œë“니다." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "오디오 버스 ë ˆì´ì•„웃 열기" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "올바르지 ì•Šì€ ì´ë¦„입니다." @@ -2735,7 +2740,7 @@ msgstr "예" #: editor/editor_node.cpp msgid "Exit the editor?" -msgstr "ì—디터를 ë‚˜ê°€ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "ì—디터를 ëë‚´ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/editor_node.cpp msgid "Open Project Manager?" @@ -2936,7 +2941,7 @@ msgstr "집중 모드를 í† ê¸€í•©ë‹ˆë‹¤." msgid "Add a new scene." msgstr "새 ì”¬ì„ ì¶”ê°€í•©ë‹ˆë‹¤." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "씬" @@ -3058,7 +3063,7 @@ msgstr "현재 프로ì 트 ìƒˆë¡œê³ ì¹¨" #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "종료 후 프로ì 트 ëª©ë¡ ì—´ê¸°" +msgstr "종료 후 프로ì 트 목ë¡ìœ¼ë¡œ ì´ë™" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/project_export.cpp @@ -5682,6 +5687,10 @@ msgid "Bake Lightmaps" msgstr "ë¼ì´íŠ¸ë§µ 굽기" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "ë¼ì´íŠ¸ë§µì„ êµ¬ìš¸ íŒŒì¼ ì„ íƒ:" @@ -8066,11 +8075,11 @@ msgstr "FPS: %d (%s ms)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "윗면 보기." +msgstr "ìƒë‹¨ë©´ 보기." #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "아랫면 보기." +msgstr "하단면 보기." #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View." @@ -8161,7 +8170,13 @@ msgid "Cinematic Preview" msgstr "시네마틱 미리보기" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "GLES2 ë Œë”러ì—서 ì‚¬ìš©í• ìˆ˜ 없습니다." #: editor/plugins/spatial_editor_plugin.cpp @@ -8261,11 +8276,11 @@ msgstr "í¬í„¸ 컬ë§ì„ 위한 ë£¸ì„ ë³€í™˜í•©ë‹ˆë‹¤." #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "아래쪽 ë·°" +msgstr "하단 ë·°" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "위쪽 ë·°" +msgstr "ìƒë‹¨ ë·°" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" @@ -9052,6 +9067,11 @@ msgid "Select Another Theme Resource:" msgstr "다른 테마 리소스 ì„ íƒ:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "리소스 ì´ë¦„ 바꾸기" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "다른 테마" @@ -9103,6 +9123,20 @@ msgstr "" "ì¼ë°•스ì—서 ê°™ì€ ì†ì„±ì´ ì—…ë°ì´íЏë©ë‹ˆë‹¤." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "í•목 타입 추가" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "변수 타입 ì„¤ì •" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "기본 타입 바꾸기" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "ë””í´íЏ ë³´ì´ê¸°" @@ -9119,8 +9153,19 @@ msgid "Override all default type items." msgstr "ëª¨ë“ ë””í´íЏ 타입 í•ëª©ì„ ì˜¤ë²„ë¼ì´ë“œí•©ë‹ˆë‹¤." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "í•목 타입 추가" +#, fuzzy +msgid "Base Type" +msgstr "기본 타입 바꾸기" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9834,18 +9879,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "ì¼ì¹˜í•¨:" @@ -9880,14 +9913,12 @@ msgid "Remove Remote" msgstr "í•목 ì œê±°" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote Name" -msgstr "ì›ê²© " +msgstr "ì›ê²© ì´ë¦„" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote URL" -msgstr "ì›ê²© " +msgstr "ì›ê²© URL" #: editor/plugins/version_control_editor_plugin.cpp msgid "Fetch" @@ -12557,6 +12588,11 @@ msgid "Stack Frames" msgstr "ìŠ¤íƒ í”„ë ˆìž„" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "íƒ€ì¼ í•„í„°" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "프로파ì¼ëŸ¬" @@ -13736,7 +13772,7 @@ msgstr "" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "Wait" -msgstr "" +msgstr "대기" #: modules/visual_script/visual_script_yield_nodes.cpp #, fuzzy @@ -13899,9 +13935,10 @@ msgstr "ìž˜ëª»ëœ íŒ¨í‚¤ì§€ ì´ë¦„:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"\"android/modules\" 프로ì 트 ì„¸íŒ…ì— ìž˜ëª»ëœ \"GodotPaymentV3\" ëª¨ë“ˆì´ í¬í•¨ë˜" -"ì–´ 있습니다. (Godot 3.2.2 ì—서 변경ë¨).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/lt.po b/editor/translations/lt.po index bdbebb1717..24b3403eeb 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -1485,6 +1485,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2876,7 +2880,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5627,6 +5631,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Pasirinkite Nodus, kuriuos norite importuoti" @@ -8134,7 +8142,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9054,6 +9067,11 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "IÅ¡tekliai" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Redaguoti Filtrus" @@ -9103,6 +9121,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -9119,7 +9149,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9849,18 +9889,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12485,6 +12513,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrai..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13819,6 +13852,9 @@ msgstr "Netinkamas Å¡rifto dydis." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 2216810855..4bf3eb8bbd 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -1480,6 +1480,11 @@ msgstr "IelÄdÄ“t Kopnes IzkÄrtojuma noklusÄ“jumu." msgid "Create a new Bus Layout." msgstr "Izveidot jaunu Kopnes izkÄrtojumu." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "AtvÄ“rt audio kopnes izkÄrtojumu" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "NederÄ«gs nosaukums." @@ -2914,7 +2919,7 @@ msgstr "PÄrslÄ“gt traucÄ“jumu brÄ«vo režīmu." msgid "Add a new scene." msgstr "Pievienot jaunu ainu." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Aina" @@ -5579,6 +5584,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "IzvÄ“lÄ“ties gaismas kartes cepÅ¡anas failu:" @@ -8008,7 +8017,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8884,6 +8898,11 @@ msgid "Select Another Theme Resource:" msgstr "IzvÄ“lÄ“ties citu motÄ«va resursu:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Resurss" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8933,6 +8952,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "NomainÄ«t BÄzes Tipu:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "NomainÄ«t BÄzes Tipu:" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "RÄdÄ«t noklusÄ“jumu" @@ -8949,7 +8982,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "MainÄ«t tipu" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9633,18 +9677,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Zari" @@ -12208,6 +12240,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "FiltrÄ“t signÄlus" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13515,6 +13552,9 @@ msgstr "NederÄ«gs paketes nosaukums:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/mi.po b/editor/translations/mi.po index 745e54d697..322a593bd0 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -1429,6 +1429,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2778,7 +2782,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5420,6 +5424,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7845,7 +7853,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8720,6 +8733,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8766,6 +8783,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8782,7 +8811,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9458,18 +9497,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12023,6 +12050,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13306,6 +13337,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/mk.po b/editor/translations/mk.po index 38ee72ff58..44b39d18ee 100644 --- a/editor/translations/mk.po +++ b/editor/translations/mk.po @@ -1437,6 +1437,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2790,7 +2794,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5436,6 +5440,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7868,7 +7876,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8743,6 +8756,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8789,6 +8806,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8805,7 +8834,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9482,18 +9521,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12048,6 +12075,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13332,6 +13363,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ml.po b/editor/translations/ml.po index 085e4e1af3..659971d0b5 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -1442,6 +1442,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2797,7 +2801,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5444,6 +5448,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7877,7 +7885,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8752,6 +8765,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8798,6 +8815,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8814,7 +8843,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9491,18 +9530,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12056,6 +12083,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13345,6 +13376,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/mr.po b/editor/translations/mr.po index d3faab3d90..8b502fff5a 100644 --- a/editor/translations/mr.po +++ b/editor/translations/mr.po @@ -2,13 +2,13 @@ # Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. # Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. -# Prachi Joshi <josprachi@yahoo.com>, 2019, 2020. +# Prachi Joshi <josprachi@yahoo.com>, 2019, 2020, 2022. # Shirious <sad3119823@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2020-12-23 22:57+0000\n" +"PO-Revision-Date: 2022-02-23 17:55+0000\n" "Last-Translator: Prachi Joshi <josprachi@yahoo.com>\n" "Language-Team: Marathi <https://hosted.weblate.org/projects/godot-engine/" "godot/mr/>\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -43,15 +43,15 @@ msgstr "self वापरले जाऊ शकत नाही कारण ठ#: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "" +msgstr "ऑपरेटर %s, %s आणि %s साठी अवैध ऑपरेंड." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "" +msgstr "बेस पà¥à¤°à¤•ार %s साठी %s पà¥à¤°à¤•ाराची अवैध अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•ा" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "" +msgstr "बेस पà¥à¤°à¤•ार %s साठी अवैध नामांकित इंडेकà¥à¤¸ '%s'" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" @@ -1437,6 +1437,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2787,7 +2791,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5431,6 +5435,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7862,7 +7870,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8738,6 +8751,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8785,6 +8802,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8801,7 +8830,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9479,18 +9518,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12049,6 +12076,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13335,6 +13366,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 71c60c4921..9854a707cc 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -16,7 +16,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-03 13:04+0000\n" +"PO-Revision-Date: 2022-02-23 17:55+0000\n" "Last-Translator: Keviindran Ramachandran <keviinx@yahoo.com>\n" "Language-Team: Malay <https://hosted.weblate.org/projects/godot-engine/godot/" "ms/>\n" @@ -1483,6 +1483,11 @@ msgstr "Muatkan Susun Atur Bas lalai." msgid "Create a new Bus Layout." msgstr "Cipta Susun Atur Bas baru." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Buka Susun Atur Bas Audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nama tidak sah." @@ -2928,7 +2933,7 @@ msgstr "Togol mod bebas gangguan." msgid "Add a new scene." msgstr "Tambah adegan baru." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Adegan" @@ -3304,14 +3309,12 @@ msgid "Update Continuously" msgstr "Kemas Kini Secara Berterusan" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Kemas Kini Apabila Diubah" +msgstr "Kemas Kini Semua Perubahan" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Perubahan Bahan:" +msgstr "Kemas Kini Perubahan Penting" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -5694,6 +5697,10 @@ msgid "Bake Lightmaps" msgstr "Bake Lightmap" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Pilih fail lightmap bake:" @@ -8151,7 +8158,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9065,6 +9077,11 @@ msgid "Select Another Theme Resource:" msgstr "Cari Penggantian Sumber:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Sumber" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -9118,6 +9135,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Muatkan Lalai" @@ -9135,7 +9164,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Ubah Jenis %s" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9832,18 +9872,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Ranting" @@ -12425,6 +12453,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Tapis isyarat" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13753,6 +13786,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 025abad2dc..cca8d67ccf 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -1523,6 +1523,11 @@ msgstr "Last standard Bus oppsettet." msgid "Create a new Bus Layout." msgstr "Opprett et nytt Bus oppsett." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Ã…pne Audio Bus oppsett" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ugyldig navn." @@ -3014,7 +3019,7 @@ msgstr "Vis/skjul distraksjonsfri modus." msgid "Add a new scene." msgstr "Legg til ny scene." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scene" @@ -5897,6 +5902,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Velg malfil" @@ -8505,7 +8514,13 @@ msgid "Cinematic Preview" msgstr "Lager ForhÃ¥ndsvisning av Mesh" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Ikke tilgjengelig ved bruk av GLES2-opptegner." #: editor/plugins/spatial_editor_plugin.cpp @@ -9454,6 +9469,11 @@ msgstr "Fjern Ressurs" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Gi nytt navn til Ressurs" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Importer Tema" @@ -9508,6 +9528,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Legg til Element" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Rediger Variabel:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Endre %s type" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Last Standard" @@ -9526,8 +9561,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Legg til Element" +msgid "Base Type" +msgstr "Endre %s type" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10281,18 +10326,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Treff:" @@ -12995,6 +13028,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrer Filer..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14386,6 +14424,9 @@ msgstr "Ugyldig navn." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/nl.po b/editor/translations/nl.po index c8e602d3ce..37c534baf8 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -55,13 +55,14 @@ # naan <xlightfox@hotmail.com>, 2021. # Tim Visee <tim+weblate@visee.me>, 2022. # Ferhat GeçdoÄŸan <ferhatgectao@gmail.com>, 2022. +# Rémi Verschelde <remi@godotengine.org>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-01-30 07:16+0000\n" -"Last-Translator: Ferhat GeçdoÄŸan <ferhatgectao@gmail.com>\n" +"PO-Revision-Date: 2022-02-20 11:48+0000\n" +"Last-Translator: Rémi Verschelde <remi@godotengine.org>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" "Language: nl\n" @@ -1535,6 +1536,11 @@ msgstr "Standaard audiobusindeling laden." msgid "Create a new Bus Layout." msgstr "Maak een nieuwe audiobusindeling." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Audiobusindeling openen" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ongeldige naam." @@ -2977,7 +2983,7 @@ msgstr "Afleidingsvrijemodus omschakelen." msgid "Add a new scene." msgstr "Nieuwe scène toevoegen." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scène" @@ -5766,6 +5772,10 @@ msgid "Bake Lightmaps" msgstr "Bak Lichtmappen" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Selecteer lightmap bake-bestand" @@ -8309,7 +8319,13 @@ msgid "Cinematic Preview" msgstr "Bioscoop Preview" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Niet beschikbaar bij gebruik van de GLES2 renderer." #: editor/plugins/spatial_editor_plugin.cpp @@ -8766,7 +8782,7 @@ msgstr "Animaties:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "New Animation" -msgstr "Niewe animatie" +msgstr "Nieuwe animatie" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed:" @@ -9258,6 +9274,11 @@ msgstr "Bron verwijderen" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Bronnaam wijzigen" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Thema importeren" @@ -9312,6 +9333,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Element toevoegen" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Zet variabele type" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Verander basis type" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Laad standaard" @@ -9330,8 +9366,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Element toevoegen" +msgid "Base Type" +msgstr "Verander basis type" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10051,18 +10097,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Overeenkomsten:" @@ -12827,6 +12861,11 @@ msgid "Stack Frames" msgstr "Stack Frames" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filter tegels" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler" @@ -14190,9 +14229,10 @@ msgstr "Ongeldige pakketnaam:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Ongeldige \"GodotPaymentV3\" module ingesloten in de projectinstelling " -"\"android/modules\" (veranderd in Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/or.po b/editor/translations/or.po index 3cea395fb0..d66d67b257 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -1435,6 +1435,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2784,7 +2788,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5426,6 +5430,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7851,7 +7859,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8726,6 +8739,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8772,6 +8789,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8788,7 +8817,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9464,18 +9503,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12029,6 +12056,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13312,6 +13343,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 0117a72a86..db99c76ce6 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -16,12 +16,12 @@ # Karol Walasek <coreconviction@gmail.com>, 2016. # Maksymilian Åšwiąć <maksymilian.swiac@gmail.com>, 2017-2018. # Mietek SzczeÅ›niak <ravaging@go2.pl>, 2016. -# NeverK <neverkoxu@gmail.com>, 2018, 2019, 2020, 2021. +# NeverK <neverkoxu@gmail.com>, 2018, 2019, 2020, 2021, 2022. # Rafal Brozio <rafal.brozio@gmail.com>, 2016, 2019, 2020, 2021. # RafaÅ‚ Ziemniak <synaptykq@gmail.com>, 2017. -# RM <synaptykq@gmail.com>, 2018, 2020. +# RM <synaptykq@gmail.com>, 2018, 2020, 2022. # Sebastian Krzyszkowiak <dos@dosowisko.net>, 2017. -# Sebastian Pasich <sebastian.pasich@gmail.com>, 2017, 2019, 2020. +# Sebastian Pasich <sebastian.pasich@gmail.com>, 2017, 2019, 2020, 2022. # siatek papieros <sbigneu@gmail.com>, 2016. # Zatherz <zatherz@linux.pl>, 2017, 2020, 2021. # Tomek <kobewi4e@gmail.com>, 2018, 2019, 2020, 2021, 2022. @@ -41,7 +41,7 @@ # Jan LigudziÅ„ski <jan.ligudzinski@gmail.com>, 2020, 2021. # Adam Jagoda <kontakt@lukasz.xyz>, 2020. # Filip Glura <mcmr.slendy@gmail.com>, 2020. -# Roman Skiba <romanskiba0@gmail.com>, 2020. +# Roman Skiba <romanskiba0@gmail.com>, 2020, 2022. # Piotr Grodzki <ziemniakglados@gmail.com>, 2020. # Dzejkop <jakubtrad@gmail.com>, 2020, 2021. # Mateusz Grzonka <alpinus4@gmail.com>, 2020. @@ -49,19 +49,21 @@ # vrid <patryksoon@live.com>, 2021. # Suchy Talerz <kacperkubis06@gmail.com>, 2021. # Bartosz Stasiak <bs97086@amu.edu.pl>, 2021. -# Marek Malaria <to.tylko.dla.kont@gmail.com>, 2021. -# Mateusz Å»ak <matisgramy@gmail.com>, 2021. +# Marek Malaria <to.tylko.dla.kont@gmail.com>, 2021, 2022. +# Mateusz Å»ak <matisgramy@gmail.com>, 2021, 2022. # voltinus <voltinusmail@gmail.com>, 2021. # Lech Migdal <lech.migdal@gmail.com>, 2022. # Piotr <promantix@gmail.com>, 2022. # Igor Kordiukiewicz <igorkordiukiewicz@gmail.com>, 2022. +# lewando54 <lewando54@gmail.com>, 2022. +# Katarzyna Twardowska <katarina.twardowska@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-01-26 19:55+0000\n" -"Last-Translator: Igor Kordiukiewicz <igorkordiukiewicz@gmail.com>\n" +"PO-Revision-Date: 2022-03-08 08:59+0000\n" +"Last-Translator: Katarzyna Twardowska <katarina.twardowska@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -70,7 +72,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1525,6 +1527,11 @@ msgstr "ZaÅ‚aduj domyÅ›lny ukÅ‚ad magistral." msgid "Create a new Bus Layout." msgstr "Utwórz nowy ukÅ‚ad magistral." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Otwórz ukÅ‚ad magistrali audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "NiewÅ‚aÅ›ciwa nazwa." @@ -2658,7 +2665,7 @@ msgstr "Zapisać zmiany w \"%s\" przed zamkniÄ™ciem?" #: editor/editor_node.cpp msgid "%s no longer exists! Please specify a new save location." -msgstr "%s już nie istnieje! OkreÅ›l nowÄ… lokalizacjÄ™ zapisu." +msgstr "%s nie istnieje! ProszÄ™ wybrać nowÄ… lokalizacjÄ™ zapisu." #: editor/editor_node.cpp msgid "" @@ -2960,7 +2967,7 @@ msgstr "Tryb bez rozproszeÅ„." msgid "Add a new scene." msgstr "Dodaj nowÄ… scenÄ™." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scena" @@ -3153,7 +3160,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Force Shader Fallbacks" -msgstr "" +msgstr "Opóźnienia wymuszania shaderów" #: editor/editor_node.cpp msgid "" @@ -3164,6 +3171,12 @@ msgid "" "Asynchronous shader compilation must be enabled in the project settings for " "this option to make a difference." msgstr "" +"Gdy ta opcja jest włączona, shadery bÄ™dÄ… używane w ich zastÄ™pczej formie " +"(albo widoczne poprzez ubershader, albo ukryte) przez caÅ‚y czas dziaÅ‚ania.\n" +"Jest to przydatne do sprawdzania wyglÄ…du i wydajnoÅ›ci fallbacków, które " +"normalnie wyÅ›wietlane sÄ… krótko.\n" +"Asynchroniczna kompilacja shaderów musi być włączona w ustawieniach " +"projektu, aby ta opcja dziaÅ‚aÅ‚a." #: editor/editor_node.cpp msgid "Synchronize Scene Changes" @@ -3327,14 +3340,12 @@ msgid "Update Continuously" msgstr "Aktualizuj ciÄ…gle" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Aktualizuj przy zmianie" +msgstr "Aktualizuj wszystkie zmiany" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Zmiany materiaÅ‚u:" +msgstr "Zaktualizuj istotne zmiany" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4107,6 +4118,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Te rozszerzenie pliku nie zostaÅ‚o rozpoznane przez edytor.\n" +"JeÅ›li mimo tego chcesz zmienić jego nazwÄ™, użyj menedżera plików swojego " +"systemu operacyjnego.\n" +"Po zmienieniu na nieznane rozszerzenie, plik nie bÄ™dzie już widoczny w " +"edytorze." #: editor/filesystem_dock.cpp msgid "" @@ -5312,7 +5328,7 @@ msgstr "Tryb odtwarzania:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" -msgstr "Drzewo animacji" +msgstr "DrzewoAnimacji" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" @@ -5325,11 +5341,11 @@ msgstr "Skala:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Fade In (s):" -msgstr "Fade In (s):" +msgstr "Zanikanie w (s):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Fade Out (s):" -msgstr "Fade Out (s):" +msgstr "Zanikanie z (s):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend" @@ -5723,6 +5739,10 @@ msgid "Bake Lightmaps" msgstr "Stwórz Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Wybierz plik wypalenia mapy Å›wiatÅ‚a:" @@ -6036,9 +6056,8 @@ msgid "Alt+Drag: Move selected node." msgstr "Alt+PrzeciÄ…gnij: PrzesuÅ„ zaznaczony wÄ™zeÅ‚." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Alt+Drag: Scale selected node." -msgstr "Alt+PrzeciÄ…gnij: PrzesuÅ„ zaznaczony wÄ™zeÅ‚." +msgstr "Alt+PrzeciÄ…gnij: Skaluj zaznaczony wÄ™zeÅ‚." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "V: Set selected node's pivot position." @@ -6324,11 +6343,11 @@ msgstr "Instancjonuj scenÄ™ tutaj" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" -msgstr "ZwiÄ™ksz krok siatki 2 razy" +msgstr "PowiÄ™ksz siatkÄ™ x2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Divide grid step by 2" -msgstr "Zmniejsz krok siatki 2 razy" +msgstr "Pomniejsz siatkÄ™ x2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan View" @@ -6503,7 +6522,7 @@ msgstr "PÅ‚askie 0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 1" -msgstr "Flat 1" +msgstr "PÅ‚askie 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" @@ -6567,7 +6586,7 @@ msgstr "Prawy klik, aby dodać punkt" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "Wypal sondÄ™ GI" +msgstr "Wygeneruj próbnik GI" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -6670,7 +6689,7 @@ msgstr "Siatka nie posiada powierzchni, z której można by utworzyć obrysy!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" -msgstr "Typ prymitywu siatki jest inny niż PRIMITIVE_TRIANGLES!" +msgstr "Prymitywne elementy siatki nie siÄ… PRIMITIVE_TRIANGLES!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -6686,7 +6705,7 @@ msgstr "Siatka" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "Utwórz statyczne ciaÅ‚o trójsiatki" +msgstr "Stwórz statyczne ciaÅ‚o siatki trójkÄ…tów (Trimesh)" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6828,11 +6847,13 @@ msgstr "Aktualizuj ze sceny" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "Nie ustawiono źródÅ‚a siatki (i nie ma MultiMesh ustawionego w węźle)." +msgstr "" +"Nie ustawiono źródÅ‚a siatki (i brak ustawionego zasobu MultiMesh w węźle)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "Nie ustawiono źródÅ‚a siatki (a MultiMesh nie posiada siatki)." +msgstr "" +"Nie ustawiono źródÅ‚a siatki (i wÄ™zeÅ‚ MultiMesh nie zawiera wÄ™zÅ‚a Mesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -6840,11 +6861,11 @@ msgstr "ŹródÅ‚o siatki jest niepoprawne (nieprawidÅ‚owa Å›cieżka)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "ŹródÅ‚o siatki jest nieprawidÅ‚owe (nie jest MeshInstance)." +msgstr "ŹródÅ‚o siatki jest niepoprawne (nie jest typu MeshInstance)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "ŹródÅ‚o siatki jest nieprawidÅ‚owe (nie zawiera zasobu Mesh)." +msgstr "ŹródÅ‚o siatki jest niepoprawne (nie zawiera zasobu Siatka (Mesh))." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -8209,7 +8230,13 @@ msgid "Cinematic Preview" msgstr "PodglÄ…d kinowy" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "NiedostÄ™pne dla renderera GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -8383,9 +8410,8 @@ msgid "Increase Field of View" msgstr "ZwiÄ™ksz pole widzenia" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Reset Field of View to Default" -msgstr "Resetuj do domyÅ›lnych" +msgstr "Resetuj pole widzenia do domyÅ›lnych ustawieÅ„" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9106,6 +9132,11 @@ msgid "Select Another Theme Resource:" msgstr "Wybierz inny zasób motywu:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "ZmieÅ„ nazwÄ™ Zasobu" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Inny motyw" @@ -9115,22 +9146,19 @@ msgstr "Dodaj typ" #: editor/plugins/theme_editor_plugin.cpp msgid "Filter the list of types or create a new custom type:" -msgstr "" +msgstr "Przefiltruj listÄ™ typów lub stwórz nowy, niestandardowy typ:" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Available Node-based types:" -msgstr "DostÄ™pne profile:" +msgstr "DostÄ™pne typy oparte na wÄ™zÅ‚ach:" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Type name is empty!" -msgstr "Nazwa pliku jest pusta." +msgstr "Nazwa typu jest pusta!" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Are you sure you want to create an empty type?" -msgstr "Czy jesteÅ› pewny że chcesz otworzyć wiÄ™cej niż jeden projekt?" +msgstr "Czy jesteÅ› pewny że chcesz utworzyć pusty typ?" #: editor/plugins/theme_editor_plugin.cpp msgid "Confirm Item Rename" @@ -9157,6 +9185,20 @@ msgstr "" "zaktualizuje te same wÅ‚aÅ›ciwoÅ›ci we wszystkich innych StyleBoxach tego typu." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Dodaj typ elementu" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Ustaw typ zmiennej" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "ZmieÅ„ typ podstawowy" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Pokaż domyÅ›lne" @@ -9173,8 +9215,19 @@ msgid "Override all default type items." msgstr "Nadpisz wszystkie domyÅ›lne elementy typu." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Dodaj typ elementu" +#, fuzzy +msgid "Base Type" +msgstr "ZmieÅ„ typ podstawowy" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9752,7 +9805,6 @@ msgid "TileSet" msgstr "TileSet" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS plugins are available." msgstr "Brak dostÄ™pnych dodatków VCS." @@ -9764,53 +9816,48 @@ msgstr "Błąd" msgid "" "Remote settings are empty. VCS features that use the network may not work." msgstr "" +"Zdalne ustawienia sÄ… puste. Funkcje VCS, które korzystajÄ… z sieci mogÄ… nie " +"dziaÅ‚ać." #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided." -msgstr "Nie podano nazwy." +msgstr "Nie podano treÅ›ci opisu aktualizacji." #: editor/plugins/version_control_editor_plugin.cpp msgid "Commit" msgstr "Commit" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Staged Changes" -msgstr "Zmiany shadera:" +msgstr "Zmiany w poczekalni przed commitem" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unstaged Changes" -msgstr "Zmiany shadera:" +msgstr "Zmiany poza poczekalniÄ… przed commitem" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit:" -msgstr "Commit" +msgstr "Przydziel:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Date:" msgstr "Data:" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Subtitle:" -msgstr "Poddrzewo" +msgstr "PodtytuÅ‚:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Do you want to remove the %s branch?" -msgstr "" +msgstr "Czy chcesz usunąć gałąź %s ?" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Do you want to remove the %s remote?" -msgstr "Czy jesteÅ› pewny że chcesz otworzyć wiÄ™cej niż jeden projekt?" +msgstr "Czy chcesz usunąć zdalne %s ?" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Apply" -msgstr "Zastosuj reset" +msgstr "Zastosuj" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" @@ -9821,14 +9868,12 @@ msgid "Initialize" msgstr "Inicjuj" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote Login" -msgstr "UsuÅ„ punkt" +msgstr "Login do Remote" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Username" -msgstr "ZmieÅ„ nazwÄ™" +msgstr "Użytkownik" #: editor/plugins/version_control_editor_plugin.cpp msgid "Password" @@ -9852,117 +9897,91 @@ msgstr "Wybierz Å›cieżkÄ™ do prywatnego klucza SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "SSH Passphrase" -msgstr "" +msgstr "HasÅ‚o-fraza SSH" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect new changes" msgstr "Wykryj nowe zmiany" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Discard all changes" -msgstr "Zamknąć i zapisać zmiany?" +msgstr "Odrzuć wszystkie zmiany" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage all changes" -msgstr "Zachowywanie lokalnych zmian..." +msgstr "Wrzuć do kolejki wszystkie zmiany" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unstage all changes" -msgstr "Zmiany materiaÅ‚u:" +msgstr "Wyrzuć z kolejki wszystkie zmiany" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Message" -msgstr "Commituj zmiany" +msgstr "Opis zmian" #: editor/plugins/version_control_editor_plugin.cpp msgid "Commit Changes" msgstr "Commituj zmiany" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit List" -msgstr "Commit" +msgstr "Lista commitów" #: editor/plugins/version_control_editor_plugin.cpp msgid "Commit list size" -msgstr "" +msgstr "Wielkość listy commitów" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Branches" -msgstr "PasujÄ…ce:" +msgstr "Gałęzie" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Create New Branch" -msgstr "Utwórz nowy projekt" +msgstr "Utwórz nowÄ… gałąź" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remove Branch" -msgstr "UsuÅ„ Å›cieżkÄ™ animacji" +msgstr "UsuÅ„ gałąź" #: editor/plugins/version_control_editor_plugin.cpp msgid "Branch Name" msgstr "Nazwa gałęzi" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remotes" -msgstr "Zdalny" +msgstr "Zdalne repozytoria" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Create New Remote" -msgstr "Utwórz nowy projekt" +msgstr "Utwórz nowe zdalne repozytorium" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remove Remote" -msgstr "UsuÅ„ element" +msgstr "UsuÅ„ zdalne repozytorium" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote Name" -msgstr "Zdalny " +msgstr "Nazwa zdalnego repozytorium" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Remote URL" -msgstr "Zdalny " +msgstr "URL zdalnego repozytorium" #: editor/plugins/version_control_editor_plugin.cpp msgid "Fetch" -msgstr "" +msgstr "ZaÅ‚aduj" #: editor/plugins/version_control_editor_plugin.cpp msgid "Pull" -msgstr "" +msgstr "ÅšciÄ…gnij" #: editor/plugins/version_control_editor_plugin.cpp msgid "Push" -msgstr "" +msgstr "Wrzuć" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Force Push" -msgstr "ŹródÅ‚owa siatka:" +msgstr "Wrzuć na siłę" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" @@ -9982,22 +10001,19 @@ msgstr "Zmiana typu" #: editor/plugins/version_control_editor_plugin.cpp msgid "Unmerged" -msgstr "" +msgstr "Niezłączone" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "View:" -msgstr "Widok" +msgstr "Widok:" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Split" -msgstr "Podziel ÅšcieżkÄ™" +msgstr "Rozdziel" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Unified" -msgstr "Zmodyfikowany" +msgstr "Ujednolicony" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" @@ -12143,6 +12159,10 @@ msgid "" "To save this branch into its own scene, open the original scene, right click " "on this branch, and select \"Save Branch as Scene\"." msgstr "" +"Nie można zapisać gałęzi, która jest dzieckiem już wczeÅ›niej zainicjowanej " +"sceny.\n" +"Aby zapisać tÄ… gałąź do jej wÅ‚asnej sceny, otwórz oryginalnÄ… scenÄ™, kliknij " +"prawym przyciskiem myszy na tÄ… gałąź i wybierz \"Zapisz gałąź jako scenÄ™\"." #: editor/scene_tree_dock.cpp msgid "" @@ -12150,6 +12170,9 @@ msgid "" "To save this branch into its own scene, open the original scene, right click " "on this branch, and select \"Save Branch as Scene\"." msgstr "" +"Nie można zapisać gałęzi która jest częściÄ… odziedziczonej sceny.\n" +"Aby zapisać tÄ… gałąź do jej wÅ‚asnej sceny, otwórz oryginalnÄ… scenÄ™, kliknij " +"prawym przyciskiem myszy na tÄ™ gałąź i wybierz \"Zapisz gałąź jako scenÄ™\"." #: editor/scene_tree_dock.cpp msgid "Save New Scene As..." @@ -12652,6 +12675,11 @@ msgid "Stack Frames" msgstr "Ramki stosu" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtruj kafelki" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profiler" @@ -12825,14 +12853,12 @@ msgid "Set Occluder Sphere Position" msgstr "Ustaw pozycjÄ™ sfery przesÅ‚aniacza" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Ustaw pozycjÄ™ punktu portalu" +msgstr "Ustaw poÅ‚ożenie punktu poligonowego okludera" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "Ustaw pozycje punktu krzywej" +msgstr "Ustawienie pozycji punktu otworu okludera" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -13545,30 +13571,28 @@ msgid "Edit Member" msgstr "Edytuj czÅ‚onka" #: modules/visual_script/visual_script_expression.cpp -#, fuzzy msgid "Expression" -msgstr "Ustaw wyrażenie" +msgstr "Wyrażenie" #: modules/visual_script/visual_script_flow_control.cpp msgid "Return" msgstr "Wróć" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Condition" -msgstr "animacja" +msgstr "Warunek" #: modules/visual_script/visual_script_flow_control.cpp msgid "if (cond) is:" -msgstr "" +msgstr "if (warunek) is:" #: modules/visual_script/visual_script_flow_control.cpp msgid "While" -msgstr "Dopóki" +msgstr "While" #: modules/visual_script/visual_script_flow_control.cpp msgid "while (cond):" -msgstr "" +msgstr "while (warunek):" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator" @@ -13576,7 +13600,7 @@ msgstr "Iterator" #: modules/visual_script/visual_script_flow_control.cpp msgid "for (elem) in (input):" -msgstr "" +msgstr "for (element) in (wejÅ›cie):" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -13595,76 +13619,68 @@ msgid "Sequence" msgstr "Sekwencja" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "in order:" -msgstr "Zmiana nazwy folderu:" +msgstr "w kolejnoÅ›ci:" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Switch" -msgstr "PuÅ‚ap:" +msgstr "Przełącznik" #: modules/visual_script/visual_script_flow_control.cpp msgid "'input' is:" -msgstr "" +msgstr "'input' is:" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Type Cast" -msgstr "Typy:" +msgstr "Narzucenie typu" #: modules/visual_script/visual_script_flow_control.cpp msgid "Is %s?" -msgstr "" +msgstr "Czy jest %s?" #: modules/visual_script/visual_script_func_nodes.cpp msgid "On %s" -msgstr "" +msgstr "Na %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "On Self" -msgstr "Pojedynczo" +msgstr "Na samym sobie" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Subtract %s" -msgstr "Przy znaku %s" +msgstr "Odejmij %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Multiply %s" -msgstr "" +msgstr "Pomnóż %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Divide %s" -msgstr "" +msgstr "Dziel %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Mod %s" -msgstr "Dodaj %s" +msgstr "Modulo %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "ShiftLeft %s" -msgstr "Ustaw %s" +msgstr "PrzesuÅ„WLewo %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "ShiftRight %s" -msgstr "" +msgstr "PrzesuÅ„WPrawo %s" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "BitAnd %s" -msgstr "Dodaj %s" +msgstr "BitoweAnd %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "BitOr %s" -msgstr "" +msgstr "BitoweOr %s" #: modules/visual_script/visual_script_func_nodes.cpp msgid "BitXor %s" -msgstr "" +msgstr "BitoweXor %s" #: modules/visual_script/visual_script_func_nodes.cpp #: modules/visual_script/visual_script_nodes.cpp @@ -13689,19 +13705,16 @@ msgid "Invalid index property name '%s' in node %s." msgstr "NieprawidÅ‚owy indeks we wÅ‚aÅ›ciwoÅ›ci \"%s\" wÄ™zÅ‚a %s." #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Emit %s" -msgstr "Ustaw %s" +msgstr "Emituj %s" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Function" -msgstr "Funkcje" +msgstr "Funkcja" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Compose Array" -msgstr "ZmieÅ„ rozmiar Tablicy" +msgstr "Utwórz TablicÄ™" #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -13713,7 +13726,7 @@ msgstr ":nieprawidÅ‚owe argumenty: " #: modules/visual_script/visual_script_nodes.cpp msgid "a if cond, else b" -msgstr "" +msgstr "a jeÅ›li warunek, w przeciwnym razie b" #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -13724,64 +13737,52 @@ msgid "VariableSet not found in script: " msgstr "Nie znaleziono VariableSet w skrypcie: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Preload" -msgstr "PrzeÅ‚aduj" +msgstr "Åaduj przed" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Index" -msgstr "Indeks Z" +msgstr "Weź indeks" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Set Index" -msgstr "Indeks Z" +msgstr "Ustaw indeks" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Global Constant" -msgstr "StaÅ‚a" +msgstr "StaÅ‚a globalna" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Class Constant" -msgstr "StaÅ‚a" +msgstr "StaÅ‚a klasy" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Basic Constant" -msgstr "StaÅ‚a" +msgstr "StaÅ‚a podstawowa" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Math Constant" -msgstr "StaÅ‚a" +msgstr "StaÅ‚a matematyczna" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Engine Singleton" -msgstr "Włączony singleton GDNative" +msgstr "Uzyskaj Singleton silnika" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Scene Node" -msgstr "WÄ™zeÅ‚ Przewijania w Czasie" +msgstr "Pozyskaj wÄ™zeÅ‚ sceny" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Scene Tree" -msgstr "Edycja drzewa sceny" +msgstr "Pozyskaj drzewo sceny" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Self" -msgstr "Pojedynczo" +msgstr "Pozyskaj samego siebie" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "CustomNode" -msgstr "Wytnij wÄ™zÅ‚y" +msgstr "NiestandardowyWÄ™zeÅ‚" #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." @@ -13797,33 +13798,28 @@ msgstr "" "caÅ‚kowitÄ… (seq out), lub tekstowÄ… (error)." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "SubCall" -msgstr "WywoÅ‚ania" +msgstr "PodWywoÅ‚ania" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Construct %s" -msgstr "StaÅ‚e" +msgstr "Zbuduj %s" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Get Local Var" -msgstr "Użyj przestrzeni lokalnej" +msgstr "Użyj zmiennej lokalnej" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Set Local Var" -msgstr "Użyj przestrzeni lokalnej" +msgstr "Ustaw zmiennÄ… lokalnÄ…" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Action %s" -msgstr "Akcja" +msgstr "Akcja %s" #: modules/visual_script/visual_script_nodes.cpp msgid "Deconstruct %s" -msgstr "" +msgstr "Dekonstruuj %s" #: modules/visual_script/visual_script_property_selector.cpp msgid "Search VisualScript" @@ -13831,40 +13827,35 @@ msgstr "Przeszukaj VisualScript" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "Yield" -msgstr "" +msgstr "Yield" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "Wait" msgstr "Czekaj" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "Next Frame" -msgstr "PrzesuÅ„ klatkÄ™" +msgstr "NastÄ™pna klatka" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "Next Physics Frame" -msgstr "Klatka fizyki %" +msgstr "NastÄ™pna klatka fizyki" #: modules/visual_script/visual_script_yield_nodes.cpp msgid "%s sec(s)" -msgstr "" +msgstr "%s sekund(s)" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "WaitSignal" -msgstr "SygnaÅ‚" +msgstr "SygnaÅ‚Oczekiwania" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "WaitNodeSignal" -msgstr "SygnaÅ‚" +msgstr "SygnaÅ‚OczekiwaniaWÄ™zÅ‚a" #: modules/visual_script/visual_script_yield_nodes.cpp -#, fuzzy msgid "WaitInstanceSignal" -msgstr "Instancja" +msgstr "SygnaÅ‚OczekiwaniaInstancji" #: platform/android/export/export_plugin.cpp msgid "Package name is missing." @@ -14002,9 +13993,10 @@ msgstr "Niepoprawna nazwa paczki:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Niepoprawny moduÅ‚ \"GodotPaymentV3\" załączony w ustawieniu projektu " -"\"android/modules\" (zmieniony w Godocie 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14263,166 +14255,167 @@ msgstr "Błąd uruchamiania serwera HTTP:" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "Nie można uzyskać dostÄ™pu do systemu plików." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "Nie udaÅ‚o siÄ™ uzyskać hasha Info.plist." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "NieprawidÅ‚owa nazwa projektu." +msgstr "NieprawidÅ‚owy plik Info.plist, brak nazwy pliku wykonywalnego." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "NieprawidÅ‚owy Info.plist, nie ma id pakietu." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "NieprawidÅ‚owa geometria, nie można utworzyć wielokÄ…ta." +msgstr "NieprawidÅ‚owy Info.plist, nie można zaÅ‚adować." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "Nie można utworzyć katalogu." +msgstr "Nie można utworzyć podkatalogu \"%s\"." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "Nie udaÅ‚o siÄ™ wypakować uszczuplonego pliku binarnego." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Niepoprawna Å›cieżka bazowa." +msgstr "Niepoprawny format binarny." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Już podpisane!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Nie udaÅ‚o siÄ™ wczytać zasobu." +msgstr "Nie udaÅ‚o siÄ™ przetworzyć zagnieżdżonych zasobów." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "Nie udaÅ‚o siÄ™ utworzyć podfolderu _CodeSignature." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Nie udaÅ‚o siÄ™ wczytać zasobu." +msgstr "Nie udaÅ‚o siÄ™ wczytać hasha CodeResources." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "Niepoprawne rozszerzenie." +msgstr "NieprawidÅ‚owy plik uprawnieÅ„." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Niepoprawne rozszerzenie." +msgstr "Niepoprawny plik wykonywalny." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "Nie można zmienić rozmiaru polecenia Å‚adowania podpisu." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "Nie udaÅ‚o siÄ™ stworzyć dużego pliku binarnego." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "Nieznany typ pakietu." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Nieznany typ obiektu." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"Uwaga: Proces poÅ›wiadczania trwa zazwyczaj mniej niż godzinÄ™. Gdy proces " +"zostanie zakoÅ„czony, otrzymasz wiadomość e-mail." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Możesz sprawdzić postÄ™p rÄ™cznie, otwierajÄ…c Terminal i wykonujÄ…c nastÄ™pujÄ…ce " +"polecenie:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Uruchom nastÄ™pujÄ…ce polecenie, aby przypiąć bilet notarialny do " +"eksportowanej aplikacji (opcjonalnie):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Nie znaleziono ikon." +msgstr "Nie znaleziono tożsamoÅ›ci." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Tworzenie miniatury" +msgstr "Tworzenie pakietu aplikacji" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"Nie udaÅ‚o siÄ™ znaleźć szablonu APK do eksportu:\n" -"%s" +msgstr "Nie udaÅ‚o siÄ™ znaleźć szablonu aplikacji do eksportu:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"Relatywne linki symboliczne nie sÄ… obsÅ‚ugiwane na tym systemie operacyjnym, " +"wyeksportowany projekt może być uszkodzony!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Nie znaleziono żądanego szablonu pliku binarnego '%s'. Być może brakuje go w " +"Twoim archiwum szablonów." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Tworzenie PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Aplikacje podpisane ad-hoc wymagajÄ… uprawnienia \"Wyłącz walidacjÄ™ " +"biblioteki\" do Å‚adowania bibliotek dynamicznych." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "Pakiet do podpisywania kodu" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Tworzenie DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "DMG podpisywania kodu" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Tworzenie ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"PoÅ›wiadczenie wymaga wczeÅ›niejszego zarchiwizowania aplikacji, dlatego " +"należy wybrać format eksportu DMG lub ZIP." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "PrzesyÅ‚anie archiwum w celu poÅ›wiadczenia" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14433,31 +14426,33 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"Ostrzeżenie: Wbudowane \"podpisywanie kodu\" jest wybrane w ustawieniach " +"edytora. Podpisywanie kodu jest ograniczone tylko do podpisu ad-hoc." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"Ostrzeżenie: NarzÄ™dzia wiersza poleceÅ„ Xcode nie sÄ… zainstalowane, zatem " +"używany jest wbudowany \"codesign\". Podpisywanie kodu jest ograniczone " +"tylko do podpisu ad-hoc." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." -msgstr "" +msgstr "PoÅ›wiadczenie: PoÅ›wiadczenie z podpisem ad hoc nie jest obsÅ‚ugiwane." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "PoÅ›wiadczenie: wymagane podpisanie kodu." +msgstr "Notaryzacja: Wymagane podpisanie kodu." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "PoÅ›wiadczenie: wymagane wzmocnione Å›rodowisko wykonawcze." +msgstr "Notaryzacja: Wymagane wzmocnione Å›rodowisko wykonawcze." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "PoÅ›wiadczenie: wymagane wzmocnione Å›rodowisko wykonawcze." +msgstr "Notaryzacja: wymagane Å›rodowisko wykonawcze ze znacznikiem czasu." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14472,63 +14467,86 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Osztrzeżenie: PoÅ›wiadczenie jest wyłączone. Wyeksportowany projekt zostanie " +"zablokowany jeÅ›li zostanie pobrany z nieznanego źródÅ‚a." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"Podpisywanie kodu jest wyłączone. Wyeksportowany projekt nie bÄ™dzie mógÅ‚ " +"zostać uruchomiony na komputerach Mac z włączonym Gatekeeperem i komputerach " +"Mac napÄ™dzanych przez procesor Apple Silicon." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Hardened Runtime nie jest kompatybilny z podpisem ad-hoc i zostanie " +"wyłączony!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" msgstr "" +"Timestamping nie jest kompatybilny z podpisem ad-hoc i bÄ™dzie wyłączony!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Ostrzeżenie: PoÅ›wiadczenia nie sÄ… obsÅ‚ugiwane przez ten system operacyjny. " +"Wyeksportowany projekt zostanie zablokowany przez Gatekeeper, jeÅ›li zostanie " +"pobrany z nieznanego źródÅ‚a." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"Prywatność: DostÄ™p do mikrofonu jest włączony, ale opis jego użycia nie jest " +"okreÅ›lony." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"Prywatność: DostÄ™p do kamery jest włączony, ale opis jej użycia nie jest " +"okreÅ›lony." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"Prywatność: DostÄ™p do informacji o lokalizacji jest włączony, ale opis jej " +"użycia nie jest okreÅ›lony." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"Prywatność: DostÄ™p do kontaktów jest włączony, ale opis ich użycia nie jest " +"okreÅ›lony." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"Prywatność: DostÄ™p do kalendarza jest włączony, ale opis jego użycia nie " +"jest okreÅ›lony." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"Prywatność: DostÄ™p do galerii zdjęć jest włączony, ale opis jej użycia nie " +"jest okreÅ›lony." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14595,21 +14613,20 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"NarzÄ™dzie rcedit musi być skonfigurowane w Ustawieniach edytora (Eksport > " +"Windows > Rcedit), aby zmienić ikonÄ™ lub dane informacji o aplikacji." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Niepoprawna Å›cieżka." +msgstr "Niepoprawna Å›cieżka ikony:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Niepoprawne rozszerzenie." +msgstr "Niepoprawna wersja pliku:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "NieprawidÅ‚owy GUID produktu." +msgstr "NieprawidÅ‚owa wersja produktu:" #: scene/2d/animated_sprite.cpp msgid "" @@ -14744,13 +14761,15 @@ msgstr "" #: scene/2d/navigation_agent_2d.cpp msgid "The NavigationAgent2D can be used only under a Node2D node." -msgstr "" +msgstr "NavigationAgent2D może zostać użyty tylko pod wÄ™zÅ‚em Node2D." #: scene/2d/navigation_obstacle_2d.cpp msgid "" "The NavigationObstacle2D only serves to provide collision avoidance to a " "Node2D object." msgstr "" +"NavigationObstacle2D sÅ‚uży jedynie do zapewnienia unikania kolizji obiektowi " +"Node2D." #: scene/2d/navigation_polygon.cpp msgid "" @@ -14776,14 +14795,13 @@ msgstr "" "ParallaxBackground." #: scene/2d/particles_2d.cpp -#, fuzzy msgid "" "GPU-based particles are not supported by the GLES2 video driver.\n" "Use the CPUParticles2D node instead. You can use the \"Convert to " "CPUParticles2D\" toolbar option for this purpose." msgstr "" "CzÄ…steczki oparte o GPU sÄ… nieobsÅ‚ugiwane przez sterownik wideo GLES2.\n" -"Użyj zamiast tego wÄ™zÅ‚a CPUParticles2D. Możesz użyć do tego celu opcji " +"Zamiast tego użyj wÄ™zÅ‚a CPUParticles2D. Możesz użyć do tego celu opcji " "\"Konwertuj na CPUParticles\"." #: scene/2d/particles_2d.cpp @@ -14794,6 +14812,12 @@ msgid "" "You can use the \"Convert to CPUParticles2D\" toolbar option for this " "purpose." msgstr "" +"W systemie macOS, renderowanie Particles2D jest znacznie wolniejsze niż " +"CPUParticles2D z powodu sprzężenia zwrotnego transformacji, które jest " +"implementowane na CPU zamiast na GPU.\n" +"Rozważ użycie CPUParticles2D zamiast Particles2D, gdy używasz macOS.\n" +"W tym celu można użyć opcji \"Konwertuj do CPUParticles2D\" na pasku " +"narzÄ™dzi." #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" @@ -15023,7 +15047,7 @@ msgstr "SpotLight z kÄ…tem szerszym niż 90 stopni nie może rzucać cieni." #: scene/3d/navigation_agent.cpp msgid "The NavigationAgent can be used only under a spatial node." -msgstr "" +msgstr "NavigationAgent może być stosowane wyłącznie pod wÄ™zÅ‚em przestrzennym." #: scene/3d/navigation_mesh_instance.cpp msgid "" @@ -15038,6 +15062,8 @@ msgid "" "The NavigationObstacle only serves to provide collision avoidance to a " "spatial object." msgstr "" +"NavigationObstacle sÅ‚uży jedynie do zapewnienia unikania kolizji dla obiektu " +"przestrzennego." #: scene/3d/occluder.cpp msgid "No shape is set." @@ -15048,14 +15074,13 @@ msgid "Only uniform scales are supported." msgstr "ObsÅ‚ugiwane sÄ… tylko jednolite skale." #: scene/3d/particles.cpp -#, fuzzy msgid "" "GPU-based particles are not supported by the GLES2 video driver.\n" "Use the CPUParticles node instead. You can use the \"Convert to " "CPUParticles\" toolbar option for this purpose." msgstr "" "CzÄ…steczki oparte o GPU sÄ… nieobsÅ‚ugiwane przez sterownik wideo GLES2.\n" -"Użyj zamiast tego wÄ™zÅ‚a CPUParticles. Możesz użyć do tego celu opcji " +"Zamiast tego użyj wÄ™zÅ‚a CPUParticles2D. Możesz użyć do tego celu opcji " "\"Konwertuj na CPUParticles\"." #: scene/3d/particles.cpp @@ -15065,6 +15090,12 @@ msgid "" "Consider using CPUParticles instead when targeting macOS.\n" "You can use the \"Convert to CPUParticles\" toolbar option for this purpose." msgstr "" +"Na macOS, renderowanie CzÄ…steczek jest znacznie wolniejsze niż CPUParticles " +"z powodu sprzężenia zwrotnego transformacji implementowanego na CPU zamiast " +"na GPU.\n" +"Rozważ użycie CPUParticles, gdy używasz macOS.\n" +"Możesz użyć do tego celu opcji \"Konwertuj do CPUParticles\" na pasku " +"narzÄ™dzi." #: scene/3d/particles.cpp msgid "" @@ -15335,7 +15366,6 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Ten wÄ™zeÅ‚ jest przestarzaÅ‚y. Zamiast tego użyj AnimationTree." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index 8dcc5099cb..0c9c84d7c9 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -1487,6 +1487,11 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Rename Function" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2878,7 +2883,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5619,6 +5624,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Slit th' Node" @@ -8138,7 +8147,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9063,6 +9077,11 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Paste yer Node" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "th' Members:" @@ -9111,6 +9130,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Edit yer Variable:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "th' Base Type:" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -9127,7 +9160,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "th' Base Type:" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9863,18 +9907,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12511,6 +12543,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Paste yer Node" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13884,6 +13921,9 @@ msgstr "Yer unique name be evil." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/pt.po b/editor/translations/pt.po index 94dc606a58..ce77d75470 100644 --- a/editor/translations/pt.po +++ b/editor/translations/pt.po @@ -1493,6 +1493,11 @@ msgstr "Carregar o Modelo predefinido de barramento." msgid "Create a new Bus Layout." msgstr "Criar um novo Modelo de Barramento." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Abrir Modelo de barramento de áudio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nome inválido." @@ -2934,7 +2939,7 @@ msgstr "Alternar modo livre de distrações." msgid "Add a new scene." msgstr "Adicionar nova cena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Cena" @@ -5705,6 +5710,10 @@ msgid "Bake Lightmaps" msgstr "Consolidar Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Selecionar ficheiro de consolidação de lightmap:" @@ -8184,7 +8193,13 @@ msgid "Cinematic Preview" msgstr "Pré-visualização Cinemática" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Não disponÃvel para o renderizador GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9079,6 +9094,11 @@ msgid "Select Another Theme Resource:" msgstr "Selecionar Outro Recurso Tema:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Renomear recurso" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Outro Tema" @@ -9127,6 +9147,20 @@ msgstr "" "atualizar as mesmas em todos os StyleBoxes deste tipo." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Adicionar Tipo de Item" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Definir tipo de variável" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Mudar tipo base" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Mostrar Predefinição" @@ -9144,8 +9178,19 @@ msgid "Override all default type items." msgstr "Sobrepõe todos os itens de tipo predefinido." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Adicionar Tipo de Item" +#, fuzzy +msgid "Base Type" +msgstr "Mudar tipo base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9847,18 +9892,6 @@ msgid "Commit list size" msgstr "Gravar tamanho da lista" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Ramos" @@ -12598,6 +12631,11 @@ msgid "Stack Frames" msgstr "Empilhar Frames" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrar Tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Analisador" @@ -13917,9 +13955,10 @@ msgstr "Nome de pacote inválido:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Módulo inválido \"GodotPaymentV3\" incluÃdo na configuração do projeto " -"\"android/modules\" (alterado em Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 5d3f9ee158..410f57eb1f 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -9,7 +9,7 @@ # Breno Caldeira <breno.caldeira@gmail.com>, 2018. # Francesco Perrotti-Garcia <fpg1503@gmail.com>, 2017. # George Marques <george@gmarqu.es>, 2016. -# Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017, 2018, 2019. +# Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017, 2018, 2019, 2022. # João Victor Lima <victordevtb@outlook.com>, 2018. # João Vitor de Oliveira Carlos <lopogax@gmail.com>, 2018. # Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016, 2019, 2020. @@ -139,8 +139,8 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2022-02-14 22:08+0000\n" -"Last-Translator: PauloFRs <paulofr1@hotmail.com>\n" +"PO-Revision-Date: 2022-03-09 08:53+0000\n" +"Last-Translator: Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -148,7 +148,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1607,6 +1607,11 @@ msgstr "Carregar o Layout de Canais padrão." msgid "Create a new Bus Layout." msgstr "Criar um novo Layout de Canais." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Abrir Layout de Canais de Ãudio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nome Inválido." @@ -2382,9 +2387,8 @@ msgid "Property:" msgstr "Propriedade:" #: editor/editor_inspector.cpp -#, fuzzy msgid "Pin value" -msgstr "Valor do pino" +msgstr "Fixar valor" #: editor/editor_inspector.cpp msgid "" @@ -3054,7 +3058,7 @@ msgstr "Alternar modo sem-distrações." msgid "Add a new scene." msgstr "Adicionar nova cena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Cena" @@ -5842,6 +5846,10 @@ msgid "Bake Lightmaps" msgstr "Faça mapas de luz" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Selecione o arquivo de lightmap bake:" @@ -8327,7 +8335,13 @@ msgid "Cinematic Preview" msgstr "Pré-visualização Cinemática" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Não disponÃvel ao usar o renderizador GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9223,6 +9237,11 @@ msgid "Select Another Theme Resource:" msgstr "Selecionar Outro Recurso de Tema:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Renomear Recurso" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Outro Tema" @@ -9271,6 +9290,20 @@ msgstr "" "atualizará as mesmas propriedades em todos os outros StyleBoxes deste tipo." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Adicionar Tipo de Item" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Definir o Tipo da Variável" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Mudar Tipo Base" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Mostrar Padrão" @@ -9288,8 +9321,19 @@ msgid "Override all default type items." msgstr "Substituir todos os itens do modelo padrão." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Adicionar Tipo de Item" +#, fuzzy +msgid "Base Type" +msgstr "Mudar Tipo Base" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9990,18 +10034,6 @@ msgid "Commit list size" msgstr "Confirmar tamanho da lista" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Ramos" @@ -12749,6 +12781,11 @@ msgid "Stack Frames" msgstr "Pilha de Quadros" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtros do tile" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Profilador" @@ -14105,9 +14142,10 @@ msgstr "Nome de pacote inválido:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Módulo \"GodotPaymentV3\" inválido incluido na configuração de projeto " -"\"android/modules\" (alterado em Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 1c63a57d74..3b993cdffe 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -1495,6 +1495,11 @@ msgstr "ÃŽncarcă Schema de Pistă Audio implicită." msgid "Create a new Bus Layout." msgstr "CreaÅ£i o Schemă nouă de Pistă Audio." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Deschide Schema Pistei Audio" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Nume nevalid." @@ -2942,7 +2947,7 @@ msgstr "Comutează modul fără distrageri." msgid "Add a new scene." msgstr "Adaugă o nouă scenă." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scenă" @@ -5737,6 +5742,10 @@ msgid "Bake Lightmaps" msgstr "Procesează Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Selectare fiÈ™ier È™ablon pentru harta de lumină:" @@ -8343,7 +8352,12 @@ msgid "Cinematic Preview" msgstr "Se creează Previzualizările Mesh-ului" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9290,6 +9304,11 @@ msgstr "Ștergere resursă" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Re-numire resursă" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Membri" @@ -9344,6 +9363,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Adaugă Obiect" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Modificare tip bază:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Modificare tip bază:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "ÃŽncărcaÈ›i Implicit" @@ -9362,8 +9396,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Adaugă Obiect" +msgid "Base Type" +msgstr "Modificare tip bază:" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10113,18 +10157,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Potriviri:" @@ -12779,6 +12811,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrare Tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14143,6 +14180,9 @@ msgstr "Nume pachet nevalid:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 77e4143911..9a79eb258a 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -107,7 +107,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-02-10 07:50+0000\n" +"PO-Revision-Date: 2022-02-20 00:54+0000\n" "Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -1575,6 +1575,11 @@ msgstr "Загрузить раÑкладку шины по умолчанию." msgid "Create a new Bus Layout." msgstr "Создать новую раÑкладку шины." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Открыть раÑкладку звуковой шины" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "ÐедопуÑтимое имÑ." @@ -3021,7 +3026,7 @@ msgstr "Переключить режим без отвлечениÑ." msgid "Add a new scene." msgstr "Добавить новую Ñцену." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Сцена" @@ -3395,14 +3400,12 @@ msgid "Update Continuously" msgstr "Ðепрерывное обновление" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "ОбновлÑть при изменениÑÑ…" +msgstr "ОбновлÑть при любых изменениÑÑ…" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Материалов изменено:" +msgstr "ОбновлÑть при важных изменениÑÑ…" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4179,6 +4182,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Данное раÑширение файла не раÑпознано редактором.\n" +"ЕÑли вы вÑÑ‘ равно хотите переименовать его, иÑпользуйте файловый менеджер " +"вашей операционной ÑиÑтемы.\n" +"ПоÑле Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² неизвеÑтное раÑширение файл больше не будет " +"отображатьÑÑ Ð² редакторе." #: editor/filesystem_dock.cpp msgid "" @@ -5792,6 +5800,10 @@ msgid "Bake Lightmaps" msgstr "Запекать карты оÑвещениÑ" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Выберите файл Ð·Ð°Ð¿ÐµÐºÐ°Ð½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ оÑвещениÑ:" @@ -8274,7 +8286,13 @@ msgid "Cinematic Preview" msgstr "КинематографичеÑкий предварительный проÑмотр" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "ÐедоÑтупно при иÑпользовании рендерера GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9172,6 +9190,11 @@ msgid "Select Another Theme Resource:" msgstr "Выбрать другой реÑÑƒÑ€Ñ Ñ‚ÐµÐ¼Ñ‹:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Переименовать реÑурÑ" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Ð”Ñ€ÑƒÐ³Ð°Ñ Ñ‚ÐµÐ¼Ð°" @@ -9221,6 +9244,20 @@ msgstr "" "Ñтого типа." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Добавить тип Ñлемента" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "УÑтановить тип переменной" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Изменить базовый тип" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Показать по умолчанию" @@ -9239,8 +9276,19 @@ msgid "Override all default type items." msgstr "Переопределить вÑе Ñлементы типа по умолчанию." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Добавить тип Ñлемента" +#, fuzzy +msgid "Base Type" +msgstr "Изменить базовый тип" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9942,18 +9990,6 @@ msgid "Commit list size" msgstr "Размер ÑпиÑка коммитов" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Ветки" @@ -12704,6 +12740,11 @@ msgid "Stack Frames" msgstr "Стек" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Фильтр тайлов" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Профайлер" @@ -12878,14 +12919,12 @@ msgid "Set Occluder Sphere Position" msgstr "Задать положение Ñферы окклюдера" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Задать положение точки портала" +msgstr "Задать положение точки полигона окклюдера" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "УÑтановить положение точки кривой" +msgstr "Задать положение точки отверÑÑ‚Ð¸Ñ Ð¾ÐºÐºÐ»ÑŽÐ´ÐµÑ€Ð°" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -14020,9 +14059,10 @@ msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"ÐедопуÑтимый модуль «GodotPaymentV3», включенный в наÑтройку проекта " -"«android/modules» (изменен в Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14282,166 +14322,167 @@ msgstr "Ошибка запуÑка HTTP-Ñервера:" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ доÑтуп к файловой ÑиÑтеме." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "Ðе удалоÑÑŒ получить хеш Info.plist." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°." +msgstr "ÐедопуÑтимый Info.plist, нет имени exe." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "ÐедопуÑтимый Info.plist, нет id пакета." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð³ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ð¸Ñ, Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать полигональную Ñетку." +msgstr "ÐедопуÑтимый Info.plist, не удаётÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "Ðевозможно Ñоздать папку." +msgstr "Ðе удалоÑÑŒ Ñоздать подпапку «%s»." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "Ðе удалоÑÑŒ раÑпаковать двоичный файл." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "ÐедопуÑтимый базовый путь." +msgstr "ÐедопуÑтимый двоичный формат." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Уже подпиÑано!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ." +msgstr "Ðе удалоÑÑŒ обработать вложенные реÑурÑÑ‹." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "Ðе удалоÑÑŒ Ñоздать подпапку _CodeSignature." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ." +msgstr "Ðе удалоÑÑŒ получить хеш CodeResources." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "ÐедопуÑтимое раÑширение." +msgstr "ÐедопуÑтимый файл прав." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "ÐедопуÑтимое раÑширение." +msgstr "ÐедопуÑтимый иÑполнÑемый файл." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "Ðе удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ размер команды загрузки подпиÑи." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "Ðе удалоÑÑŒ Ñоздать большой двоичный файл." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "ÐеизвеÑтный тип пакета." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "ÐеизвеÑтный тип объекта." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"Примечание: ПроцеÑÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾ занимает менее чаÑа. Когда процеÑÑ " +"завершитÑÑ, вы получите Ñлектронное пиÑьмо." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Ð’Ñ‹ можете проверить ход Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ, открыв терминал и выполнив " +"Ñледующую команду:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Выполните Ñледующую команду, чтобы прикрепить заÑвку на подтверждение к " +"ÑкÑпортированному приложению (необÑзательно):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Иконки не найдены." +msgstr "Identity не найдена." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Создание ÑÑкизов" +msgstr "Создание пакета приложениÑ" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"Ðе удалоÑÑŒ найти шаблон APK Ð´Ð»Ñ ÑкÑпорта:\n" -"%s" +msgstr "Ðе удалоÑÑŒ найти шаблон Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑкÑпорта:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"ОтноÑительные ÑимволичеÑкие ÑÑылки не поддерживаютÑÑ Ð² Ñтой ОС, " +"ÑкÑпортируемый проект может быть повреждён!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Запрошенный двоичный файл шаблона «%s» не найден. Он может отÑутÑтвовать в " +"вашем архиве шаблонов." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Создание PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Ð”Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñанных ad-hoc приложений требуетÑÑ Ð¿Ñ€Ð°Ð²Ð¾ «Отключить проверку " +"библиотеки» Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ динамичеÑких библиотек." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "ПодпиÑÑŒ кода пакета" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Создание DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "ПодпиÑÑŒ кода DMG" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Создание ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"Подтверждение требует, чтобы приложение было Ñначала архивировано, вмеÑто " +"Ñтого выберите формат ÑкÑпорта DMG или ZIP." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "Отправка архива Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14452,31 +14493,35 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"Предупреждение: Ð’ наÑтройках редактора выбран вÑтроенный «codesign». " +"ПодпиÑание кода ограничено только подпиÑью ad-hoc." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"Предупреждение: инÑтрументы командной Ñтроки Xcode не уÑтановлены, " +"иÑпользуетÑÑ Ð²Ñтроенный «codesign». ПодпиÑание кода ограничено только " +"подпиÑью ad-hoc." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." -msgstr "" +msgstr "Подтверждение: Подтверждение подпиÑью ad-hoc не поддерживаетÑÑ." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "Предупреждение: требуетÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñание кода." +msgstr "Подтверждение: Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ кода." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "Предупреждение: требуетÑÑ ÑƒÑиленный рантайм." +msgstr "" +"Подтверждение: Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð°Ñ Ñреда выполнениÑ." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "Предупреждение: требуетÑÑ ÑƒÑиленный рантайм." +msgstr "" +"Подтверждение: Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð¼ÐµÑ‚ÐºÐ° времени Ñреды выполнениÑ." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14491,63 +14536,84 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Предупреждение: Подтверждение отключено. ÐкÑпортированный проект будет " +"заблокирован Gatekeeper, еÑли он загружен из неизвеÑтного иÑточника." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"ПодпиÑание кода отключено. ÐкÑпортированный проект не будет работать на " +"компьютерах Mac Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ Gatekeeper и компьютерах Mac Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑором " +"Apple Silicon." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Ð—Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð°Ñ Ñреда Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑовмеÑтима Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñью ad-hoc и будет отключена!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" -msgstr "" +msgstr "Временные метки не ÑовмеÑтимы Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñью ad-hoc и будут отключены!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"Предупреждение: Подтверждение не поддерживаетÑÑ Ð² Ñтой ОС. ÐкÑпортированный " +"проект будет заблокирован Gatekeeper, еÑли он загружен из неизвеÑтного " +"иÑточника." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"КонфиденциальноÑть: ДоÑтуп к микрофону включён, но опиÑание иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ " +"указано." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"КонфиденциальноÑть: ДоÑтуп к камере включён, но опиÑание иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ " +"указано." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"КонфиденциальноÑть: ДоÑтуп к информации о меÑтоположении включён, но " +"опиÑание иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ указано." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"КонфиденциальноÑть: ДоÑтуп к адреÑной книге включён, но опиÑание " +"иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ указано." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"КонфиденциальноÑть: ДоÑтуп к календарю включён, но опиÑание иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ " +"указано." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"КонфиденциальноÑть: ДоÑтуп к библиотеке фотографий включён, но опиÑание " +"иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ указано." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14606,21 +14672,20 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"ИнÑтрумент rcedit должен быть наÑтроен в ÐаÑтройках редактора (Export > " +"Windows > Rcedit) Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° или информационных данных приложениÑ." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "ÐедопуÑтимый путь." +msgstr "ÐедопуÑтимый путь к иконке:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "ÐедопуÑтимое раÑширение." +msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "Ðеверный GUID продукта." +msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð°:" #: scene/2d/animated_sprite.cpp msgid "" @@ -15360,14 +15425,13 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Ðтот узел был удален. ВмеÑто Ñтого иÑпользуйте AnimationTree." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" "RMB: Remove preset" msgstr "" "Цвет: #%s\n" -"ЛКМ: УÑтановить цвет\n" +"ЛКМ: Применить цвет\n" "ПКМ: Удалить преÑет" #: scene/gui/color_picker.cpp diff --git a/editor/translations/si.po b/editor/translations/si.po index 178bcfdfad..e875e8e5bf 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -1463,6 +1463,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2819,7 +2823,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5480,6 +5484,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7928,7 +7936,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8815,6 +8828,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8862,6 +8879,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8878,7 +8907,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9566,18 +9605,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12154,6 +12181,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13458,6 +13489,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/sk.po b/editor/translations/sk.po index d502613ca1..2f561af326 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -1488,6 +1488,11 @@ msgstr "NaÄÃtaÅ¥ základný Bus Layout." msgid "Create a new Bus Layout." msgstr "VytvoriÅ¥ nový Bus Layout." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "OtvoriÅ¥ Audio Bus Layout" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Neplatný Názov." @@ -2932,7 +2937,7 @@ msgstr "Prepnúť režim bez rozptyľovania." msgid "Add a new scene." msgstr "PridaÅ¥ novú scénu." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scéna" @@ -5717,6 +5722,10 @@ msgid "Bake Lightmaps" msgstr "Bake Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "VybraÅ¥ Súbor Å ablóny" @@ -8258,7 +8267,12 @@ msgid "Cinematic Preview" msgstr "Filmové Predzobrazenie" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9197,6 +9211,11 @@ msgstr "HľadaÅ¥ Náhradný Zdroj:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Prostriedok" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Súbor:" @@ -9249,6 +9268,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "ZmeniÅ¥ %s Typ" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "ZmeniÅ¥ %s Typ" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "NaÄÃtaÅ¥ predvolené" @@ -9267,7 +9300,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "ZmeniÅ¥ %s Typ" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -10022,18 +10066,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Zhody:" @@ -12678,6 +12710,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filter:" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14043,6 +14080,9 @@ msgstr "Nesprávna veľkosÅ¥ pÃsma." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 551b2a5c91..baa466cb84 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -1549,6 +1549,11 @@ msgstr "Naloži prevezeto Postavitev Vodila." msgid "Create a new Bus Layout." msgstr "Ustvari novo Postavitev Vodila." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Odpri ZvoÄno Vodilo" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Neveljavno ime." @@ -3036,7 +3041,7 @@ msgstr "Preklop naÄin pisanja brez motenj." msgid "Add a new scene." msgstr "Dodaj nov Prizor." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Prizor" @@ -5922,6 +5927,10 @@ msgid "Bake Lightmaps" msgstr "ZapeÄi Svetlobne karte" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Izberi datoteko predloge" @@ -8525,7 +8534,12 @@ msgid "Cinematic Preview" msgstr "Ustvari Predogled Modela" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9477,6 +9491,11 @@ msgstr "Iskanje Nadomestnih Virov:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Viri" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "ÄŒlani" @@ -9528,6 +9547,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Nastavite Tip Spremenljivke" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Spremeni Osnovni Tip" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Naložite Prevzeto" @@ -9545,7 +9578,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Spremeni Osnovni Tip" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -10306,18 +10350,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Zadetki:" @@ -13018,6 +13050,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtriraj datoteke..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14399,6 +14436,9 @@ msgstr "Neveljavno ime." msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/sq.po b/editor/translations/sq.po index b4115a9c60..83fbc22055 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -1485,6 +1485,11 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Faqosja e Editorit" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Emër i palejuar." @@ -2975,7 +2980,7 @@ msgstr "Ndrysho metodën pa shpërqëndrime." msgid "Add a new scene." msgstr "Shto një skenë të re." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Skenë" @@ -5774,6 +5779,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Zgjidh skedarin e shabllonit" @@ -8263,7 +8272,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9191,6 +9205,11 @@ msgid "Select Another Theme Resource:" msgstr "Kërko Resursin Zëvendësues:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Resursi" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -9241,6 +9260,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Ndrysho Tipin e %s" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Ndrysho Tipin e %s" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Ngarko të Parazgjedhur" @@ -9259,7 +9292,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Ndrysho Tipin e %s" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9967,18 +10011,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Përputhjet:" @@ -12619,6 +12651,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtro Skedarët..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13960,6 +13997,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index fab8794167..b536e1999d 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -1607,6 +1607,11 @@ msgstr "Учитај уобичајен Ð±Ð°Ñ Ñ€Ð°Ñпоред." msgid "Create a new Bus Layout." msgstr "Ðаправи нови Ð±Ð°Ñ Ñ€Ð°Ñпоред." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Отвори раÑпоред звучног баÑа" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ðеважеће име." @@ -3157,7 +3162,7 @@ msgstr "Укљ./ИÑкљ. режим без Ñметње." msgid "Add a new scene." msgstr "Додај нову Ñцену." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Сцена" @@ -6190,6 +6195,10 @@ msgid "Bake Lightmaps" msgstr "Изпеци МапеСенчења" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Одабери шаблонÑку датотеку" @@ -8961,8 +8970,13 @@ msgid "Cinematic Preview" msgstr "Ðаправи приказ мрежа" #: editor/plugins/spatial_editor_plugin.cpp +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Not available when using the GLES2 renderer." +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "ÐедоÑтупно кад кориÑтиш GLES2 изцртавање." #: editor/plugins/spatial_editor_plugin.cpp @@ -9955,6 +9969,11 @@ msgstr "Обриши реÑурÑ" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Преименуј реÑурÑ" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Увези тему" @@ -10009,6 +10028,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Додај Ñтвар" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "ПоÑтави Ð’Ñ€Ñту Променљиве" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Измени уобичајен тип" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Учитај уобичајено" @@ -10027,8 +10061,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Додај Ñтвар" +msgid "Base Type" +msgstr "Промени Тип" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -10850,18 +10894,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Подударање:" @@ -14106,6 +14138,11 @@ msgstr "ÐаÑлага Фрејмова" #: editor/script_editor_debugger.cpp #, fuzzy +msgid "Filter stack variables" +msgstr "Филтрирај датотеке..." + +#: editor/script_editor_debugger.cpp +#, fuzzy msgid "Profiler" msgstr "ОÑматрач" @@ -15630,6 +15667,9 @@ msgstr "Ðеважеће име паковања:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index e4a6a62ec9..fb9a577739 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -6,13 +6,14 @@ # BLu <blmasfon@gmail.com>, 2018. # Vojislav Bajakic <ch3d4.ns@gmail.com>, 2018. # LT <lakizvezdas@gmail.com>, 2019. +# Marko Mihajlović <creationsmarko@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-07-29 19:21+0000\n" -"Last-Translator: LT <lakizvezdas@gmail.com>\n" +"PO-Revision-Date: 2022-02-26 10:27+0000\n" +"Last-Translator: Marko Mihajlović <creationsmarko@gmail.com>\n" "Language-Team: Serbian (latin) <https://hosted.weblate.org/projects/godot-" "engine/godot/sr_Latn/>\n" "Language: sr_Latn\n" @@ -21,78 +22,78 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.8-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "" +msgstr "Nevažeći tip argumenta za convert(), koristi TYPE_* konstante." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "OÄekivana niska dužine 1 (karakter)." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "" +msgstr "Nema dovoljno bajtova za dekodiranje bajtova, ili nevažeći format." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "" +msgstr "Nevažeći unos %i (nije prenesen) u izrazu" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "" +msgstr "self ne može biti korišćen jer je instanca null (nije prosledjena)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "" +msgstr "Nedozvoljen operand do operatora %s, %s i %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "" +msgstr "Nedozvoljen indeks tipa %s za bazu tipa %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "" +msgstr "Nedozvoljeno imenovan indeks '%s' za bazu tipa %s" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "" +msgstr "Neispravni argumenti za konstrukciju '%s'" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "" +msgstr "Pri pozivu '%s':" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "KiB" #: core/ustring.cpp msgid "MiB" -msgstr "" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "Gib" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "Tib" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "PiB" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -120,7 +121,7 @@ msgstr "Dodaj kljuÄ ovde" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "Dupliraj Selektovane KljuÄeve" +msgstr "Dupliraj Obeležene KljuÄeve" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" @@ -136,56 +137,51 @@ msgstr "Pomeri Bezier TaÄke" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Animacija Uduplaj KljuÄeve" +msgstr "Anim Dupliraj KljuÄeve" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "Anim ObriÅ¡i KljuÄeve" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "Animacija Promjeni Vrijeme KljuÄnog Kadra" +msgstr "Animacija Promeni Vreme KljuÄnog Kadra" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "Animacija Promjeni Tranziciju" +msgstr "Anim Promeni Prelaz" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "Animacija Promjeni Transformaciju" +msgstr "Anim Promeni Transformaciju" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "Animacija Promjeni Vrijednost KljuÄnog Kadra" +msgstr "Animacija Promeni Vrednost KljuÄnog Kadra" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "Animacija Promjeni Poziv" +msgstr "Anim Promjeni Poziv" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "Animacija Promjeni Vrijeme KljuÄnog Kadra" +msgstr "Anim Promeni Vremena KljuÄnih Kadrova" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Animacija Promjeni Tranziciju" +msgstr "Anim Promeni Tranzicije" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Animacija Promjeni Transformaciju" +msgstr "Anim Promeni Transformacije" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "Animacija Promjeni Vrijednost KljuÄnog Kadra" +msgstr "Anim Promeni Vrednost KljuÄnih Kadrova" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "Animacija Promjeni Poziv" +msgstr "Anim Promeni Pozive" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -194,52 +190,50 @@ msgstr "Promeni Dužinu Animacije" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "Promeni Ponavljanje Animacije" #: editor/animation_track_editor.cpp msgid "Property Track" -msgstr "" +msgstr "Osobine Trake" #: editor/animation_track_editor.cpp msgid "3D Transform Track" -msgstr "" +msgstr "3D Transformacija trake" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "" +msgstr "Traka Poziva Metoda" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "" +msgstr "Traka Bezier krive" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" -msgstr "Audio Plejbek Traka" +msgstr "Audio Reprodukciona Traka" #: editor/animation_track_editor.cpp msgid "Animation Playback Track" -msgstr "Animacija Plejbek Traka" +msgstr "Animacija Reprodukciona Traka" #: editor/animation_track_editor.cpp msgid "Animation length (frames)" -msgstr "Dužina Animacije (frames)" +msgstr "Dužina Animacije (frejmova)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" -msgstr "Dužina Animacije (secunde)" +msgstr "Dužina animacije (sekunde)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track" msgstr "Dodaj Traku" #: editor/animation_track_editor.cpp msgid "Animation Looping" -msgstr "" +msgstr "Ponavljanje Animacije" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" msgstr "Funkcije:" @@ -248,34 +242,32 @@ msgid "Audio Clips:" msgstr "Audio Klipovi:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Clips:" msgstr "Anim Klipovi:" #: editor/animation_track_editor.cpp msgid "Change Track Path" -msgstr "" +msgstr "Izmeni Mesto Trake" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "" +msgstr "UkljuÄi/iskljuÄi ovu traku." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "" +msgstr "NaÄin Ažuriranja (Kako je ova osobina postavljena)" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" -msgstr "" +msgstr "NaÄin Interpolacije" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" -msgstr "" +msgstr "Režim Umotanog Ponavljanja (MeÅ¡a kraj sa poÄetkom pri ponavljanju)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Remove this track." -msgstr "Odstrani Kanal Animacije" +msgstr "Ukloni ovu traku." #: editor/animation_track_editor.cpp msgid "Time (s): " @@ -283,7 +275,7 @@ msgstr "Vreme (s): " #: editor/animation_track_editor.cpp msgid "Toggle Track Enabled" -msgstr "" +msgstr "Umogući/Onemogući Traku" #: editor/animation_track_editor.cpp msgid "Continuous" @@ -299,12 +291,11 @@ msgstr "OkidaÄ" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "" +msgstr "Ulovi" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Nearest" -msgstr "Najbliže" +msgstr "Najbliža" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -313,62 +304,57 @@ msgstr "Linearna" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "" +msgstr "Kubno" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "" +msgstr "OgraniÄi Interp Ponavljanja" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "" +msgstr "Interp Umotanog Ponavljanja" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "" +msgstr "Unesi KljuÄ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Duplicate Key(s)" -msgstr "Dupliraj KljuÄeve" +msgstr "Dupliraj KljuÄ(eve)" #: editor/animation_track_editor.cpp msgid "Add RESET Value(s)" -msgstr "" +msgstr "Dodaj RESET Vrednost(i)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Key(s)" -msgstr "ObriÅ¡i KljuÄeve" +msgstr "ObriÅ¡i KljuÄ(eve)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Update Mode" -msgstr "Promijeni Dužinu Animacije" +msgstr "Promijeni NaÄin Ažuriranja Animacije" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Interpolation Mode" -msgstr "Promijeni Dužinu Animacije" +msgstr "Promeni naÄin Interpolacije Animacije" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Loop Mode" -msgstr "Optimizuj Animaciju" +msgstr "Promeni NaÄin Ponavljanja Animacije" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" -msgstr "Odstrani Kanal Animacije" +msgstr "Ukloni Anim Traku" #. TRANSLATORS: %s will be replaced by a phrase describing the target of track. #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "Napravi Novi kanal za %s i dodaj kljuÄ?" +msgstr "Napravi NOVU traku za %s i dodaj kljuÄ?" #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Napravi %d novih kanala i dodaj kljuÄeve?" +msgstr "Napravi %d NOVIH traka i dodaj kljuÄeve?" #: editor/animation_track_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp @@ -385,52 +371,51 @@ msgstr "Napravi" #: editor/animation_track_editor.cpp msgid "Anim Insert" -msgstr "Animacija Umetni" +msgstr "Anim Ubaci" #. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. #: editor/animation_track_editor.cpp msgid "node '%s'" -msgstr "" +msgstr "Ävor '%s'" #. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. #: editor/animation_track_editor.cpp -#, fuzzy msgid "animation" -msgstr "Optimizuj Animaciju" +msgstr "Animacija" #: editor/animation_track_editor.cpp msgid "AnimationPlayer can't animate itself, only other players." -msgstr "" +msgstr "Plejer Animacija ne može animirati sebe, samo druge plejere." #. TRANSLATORS: This describes the target of new animation track, will be inserted into another string. #: editor/animation_track_editor.cpp msgid "property '%s'" -msgstr "" +msgstr "Osobina '%s'" #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" -msgstr "Animacija Napravi i Dodaj" +msgstr "Anim Napravi i Ubaci" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" -msgstr "Animacija Dodaj kanal i kljuÄ" +msgstr "Anim Ubaci Traku i KljuÄ" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" -msgstr "Animacija dodaj kljuÄ" +msgstr "Anim Ubaci KljuÄ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Step" -msgstr "PoÄisti Animaciju" +msgstr "Promeni Korake Animacije" #: editor/animation_track_editor.cpp msgid "Rearrange Tracks" -msgstr "" +msgstr "Rasporedi Trake" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." msgstr "" +"Transformacione trake primenjuju se samo na Prostorno-baziranim Ävorovima." #: editor/animation_track_editor.cpp msgid "" @@ -439,66 +424,67 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" +"Audio trake mogu da upute samo na Ävorove tipa:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "" +msgstr "Animacione trake mogu da upute samo na AnimationPlayer Ävorove." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "" +msgstr "Nije moguće dodati novu traku bez korena" #: editor/animation_track_editor.cpp msgid "Invalid track for Bezier (no suitable sub-properties)" -msgstr "" +msgstr "Nevažeća traka za Bezier (nema pogodnih pod-osobina)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Bezier Track" -msgstr "Dodaj Bezier Kanal" +msgstr "Dodaj Bezier Traku" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "Mesto trake je nevažeće, ne može se dodati kljuÄ." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "Traka nije Prostornog tipa, ne može se dodati kljuÄ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Transform Track Key" -msgstr "Animacija Dodaj kanal i kljuÄ" +msgstr "Dodaj kljuÄ transformacione trake" #: editor/animation_track_editor.cpp msgid "Add Track Key" -msgstr "Dodaj Kljuc Kanal" +msgstr "Dodaj Kljuc u Traku" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "" +msgstr "Mesto trake je nevažeće, ne može se dodati kljuÄ metode." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "Animacija Dodaj kanal i kljuÄ" +msgstr "Dodaj KljuÄ Metodne Trake" #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "" +msgstr "Metod nije naÄ‘en u objektu: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" -msgstr "Animacija Pomjeri KljuÄeve" +msgstr "Anim Pomeri KljuÄeve" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Clipboard is empty!" -msgstr "" +msgstr "Klipbord je prazan!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" -msgstr "" +msgstr "Zalepi Trake" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" @@ -507,12 +493,11 @@ msgstr "Animacija Skaliraj KljuÄeve" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." -msgstr "" +msgstr "Ova opcija ne radi za Bezier obradu, jer je jedna traka." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Add RESET Keys" -msgstr "Animacija Skaliraj KljuÄeve" +msgstr "Anim Dodaj RESET KljuÄeve" #: editor/animation_track_editor.cpp msgid "" @@ -526,39 +511,48 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" +"Ova animacija pripada uvezenoj sceni, pa promene na uvezenim trakama neće " +"biti saÄuvane.\n" +"\n" +"Da omogućiÅ¡ sposobnost dodavanja prilagoÄ‘enih traka, uputi se ka uvoznim " +"podeÅ¡avanjima scene i postavi\n" +"\"Animacija > SkladiÅ¡te\" u \"Datoteke\", omogući \"Animacija > Zadrži " +"PrilagoÄ‘ene Trake\", zatim ponovo uvezi.\n" +"Alternativno, koristi uvozna podeÅ¡avanja koja uvoze animacije u zasebne " +"datoteke." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" -msgstr "" +msgstr "Upozorenje: ObraÄ‘ivanje uvezene animacije" #: editor/animation_track_editor.cpp msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "" +msgstr "Izaberi AnimationPlayer Ävor da bi napravio i uredio animacije." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "Prikaži samo trake od Ävorova koji su oznaÄeni u stablu." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "GrupiÅ¡i trake po Ävoru ili ih prikaži kao obiÄnu listu." #: editor/animation_track_editor.cpp msgid "Snap:" -msgstr "" +msgstr "KaÄenje:" #: editor/animation_track_editor.cpp msgid "Animation step value." -msgstr "" +msgstr "Vrednost koraka animacije." #: editor/animation_track_editor.cpp msgid "Seconds" -msgstr "" +msgstr "Sekunde" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "FPS" -msgstr "" +msgstr "FPS" #: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp #: editor/editor_resource_picker.cpp @@ -569,15 +563,15 @@ msgstr "" #: editor/project_settings_editor.cpp editor/property_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Edit" -msgstr "" +msgstr "Uredi" #: editor/animation_track_editor.cpp msgid "Animation properties." -msgstr "" +msgstr "Osobine animacije." #: editor/animation_track_editor.cpp msgid "Copy Tracks" -msgstr "" +msgstr "Kopiraj Trake" #: editor/animation_track_editor.cpp msgid "Scale Selection" @@ -594,26 +588,23 @@ msgstr "Uduplaj Selekciju" #: editor/animation_track_editor.cpp msgid "Duplicate Transposed" -msgstr "" +msgstr "Dupliraj Transponovanu" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "Uduplaj Selekciju" +msgstr "Ukloni oznaku" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" -msgstr "OtiÄ‘i Na Sljedeći Korak" +msgstr "Idi na Sledeći Korak" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "OtiÄ‘i Na Prethodni Korak" +msgstr "Idi na Prethodni Korak" #: editor/animation_track_editor.cpp msgid "Apply Reset" -msgstr "" +msgstr "Primeni Reset" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -625,64 +616,63 @@ msgstr "PoÄisti Animaciju" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "" +msgstr "Izaberi Ävor koji će biti animiran:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "Koristi Bezier krive" #: editor/animation_track_editor.cpp msgid "Create RESET Track(s)" -msgstr "" +msgstr "Napravi RESET Traku(ke)" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "Anim. Optimizator" #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" -msgstr "" +msgstr "Max. Linearna GreÅ¡ka:" #: editor/animation_track_editor.cpp msgid "Max. Angular Error:" -msgstr "" +msgstr "Max. Ugaona GreÅ¡ka:" #: editor/animation_track_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "Max Ugao Koji Se Može Optimizovati:" #: editor/animation_track_editor.cpp msgid "Optimize" -msgstr "" +msgstr "Optimizuj" #: editor/animation_track_editor.cpp msgid "Remove invalid keys" -msgstr "" +msgstr "Ukloni nevažeće kljuÄeve" #: editor/animation_track_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "" +msgstr "Ukloni nereÅ¡ene i prazne trake" #: editor/animation_track_editor.cpp msgid "Clean-up all animations" -msgstr "" +msgstr "OÄisti sve animacije" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "" +msgstr "OÄisti Animaciju(je) (NEMA OPOZIVANJA!)" #: editor/animation_track_editor.cpp msgid "Clean-Up" -msgstr "" +msgstr "OÄisti" #: editor/animation_track_editor.cpp msgid "Scale Ratio:" -msgstr "" +msgstr "Razmera:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Postavi tranzicije na:" +msgstr "Izaberi Trake za Kopiranje" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_resource_picker.cpp @@ -691,148 +681,148 @@ msgstr "Postavi tranzicije na:" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Copy" -msgstr "" +msgstr "Kopiraj" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Uduplaj Selekciju" +msgstr "OznaÄi Sve/NiÅ¡ta" #: editor/animation_track_editor_plugins.cpp -#, fuzzy msgid "Add Audio Track Clip" -msgstr "Animacija Dodaj Kanal" +msgstr "Dodaj Klip Audio Trake" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "Promeni PoÄetnu Poziciju Klipa Audio Trake" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "Promeni Poziciju Kraja Klipa Audio Trake" #: editor/array_property_edit.cpp msgid "Resize Array" -msgstr "" +msgstr "Promeni VeliÄinu Niza" #: editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "" +msgstr "Promeni Tip Vrednosti Niza" #: editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "" +msgstr "Promeni Vrednost Niza" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "" +msgstr "Idi na Liniju" #: editor/code_editor.cpp msgid "Line Number:" -msgstr "" +msgstr "Broj Linije:" #: editor/code_editor.cpp msgid "%d replaced." -msgstr "" +msgstr "%d zamenjen." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." -msgstr "" +msgstr "%d podudara." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d matches." -msgstr "" +msgstr "%d podudara." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" -msgstr "" +msgstr "SluÄaj Podudaranja" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" -msgstr "" +msgstr "Cele ReÄi" #: editor/code_editor.cpp msgid "Replace" -msgstr "" +msgstr "Zameni" #: editor/code_editor.cpp msgid "Replace All" -msgstr "" +msgstr "Zameni Sve" #: editor/code_editor.cpp msgid "Selection Only" -msgstr "" +msgstr "Samo Obeleženo" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp msgid "Standard" -msgstr "" +msgstr "Standardno" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "" +msgstr "UkljuÄi/IskljuÄi Panel sa Skriptama" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom In" -msgstr "" +msgstr "UveliÄaj" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom Out" -msgstr "" +msgstr "Umanji" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Resetuj UveliÄavanje" #: editor/code_editor.cpp msgid "Warnings" -msgstr "" +msgstr "Upozorenja" #: editor/code_editor.cpp msgid "Line and column numbers." -msgstr "" +msgstr "Brojevi redova i kolona." #: editor/connections_dialog.cpp msgid "Method in target node must be specified." -msgstr "" +msgstr "Metod u ciljnom Ävoru mora biti naveden." #: editor/connections_dialog.cpp msgid "Method name must be a valid identifier." -msgstr "" +msgstr "Naziv metoda mora biti važeći oznaÄavaÄ." #: editor/connections_dialog.cpp msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." msgstr "" +"Ciljni metod nije naÄ‘en. Navedi važeći metod ili priloži skriptu ciljnom " +"Ävoru." #: editor/connections_dialog.cpp msgid "Connect to Node:" -msgstr "" +msgstr "Poveži sa Ävorom:" #: editor/connections_dialog.cpp msgid "Connect to Script:" -msgstr "" +msgstr "Poveži sa Skriptom:" #: editor/connections_dialog.cpp msgid "From Signal:" -msgstr "" +msgstr "Iz Signala:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." -msgstr "" +msgstr "Scena ne sadrži ni jednu skriptu." #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp msgid "Add" -msgstr "" +msgstr "Dodaj" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp @@ -842,44 +832,45 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp msgid "Remove" -msgstr "" +msgstr "Ukloni" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "" +msgstr "Dodaj Dodatni Argument Poziva:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "" +msgstr "Dodatni Argumenti Poziva:" #: editor/connections_dialog.cpp msgid "Receiver Method:" -msgstr "" +msgstr "Metod Prijemnika:" #: editor/connections_dialog.cpp msgid "Advanced" -msgstr "" +msgstr "Napredno" #: editor/connections_dialog.cpp msgid "Deferred" -msgstr "" +msgstr "Odložen" #: editor/connections_dialog.cpp msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." -msgstr "" +msgstr "Odlaže signal, smeÅ¡ta ga u red i ispaljuje ga samo za vreme mirovanja." #: editor/connections_dialog.cpp +#, fuzzy msgid "Oneshot" -msgstr "" +msgstr "JednookidaÄ" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." -msgstr "" +msgstr "Odvezuje signal nakon njegovog prvog ispuÅ¡tanja." #: editor/connections_dialog.cpp msgid "Cannot connect signal" -msgstr "" +msgstr "Nije moguće povezati signal" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp editor/groups_editor.cpp @@ -893,115 +884,113 @@ msgstr "" #: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Close" -msgstr "" +msgstr "Zatvori" #: editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "Poveži" #: editor/connections_dialog.cpp msgid "Signal:" -msgstr "" +msgstr "Signâl:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "" +msgstr "Poveži '%s' sa '%s'" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "" +msgstr "Odveži '%s' od '%s'" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" -msgstr "" +msgstr "Odveži sve od signala: '%s'" #: editor/connections_dialog.cpp msgid "Connect..." -msgstr "" +msgstr "Poveži..." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Disconnect" -msgstr "" +msgstr "Odveži" #: editor/connections_dialog.cpp msgid "Connect a Signal to a Method" -msgstr "" +msgstr "Poveži Signal na Metod" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection:" -msgstr "Izmjeni Selekciju Krivulje" +msgstr "Izmeni Konekciju:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "" +msgstr "Da li sigurno želis da ukloniÅ¡ sve veze sa \"%s\" signala?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "Signali" #: editor/connections_dialog.cpp msgid "Filter signals" -msgstr "" +msgstr "Filtriraj signale" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "" +msgstr "Da li sigurno želiÅ¡ da ukloniÅ¡ sve veze sa ovog signala?" #: editor/connections_dialog.cpp msgid "Disconnect All" -msgstr "" +msgstr "Odveži Sve" #: editor/connections_dialog.cpp msgid "Edit..." -msgstr "" +msgstr "Uredi..." #: editor/connections_dialog.cpp -#, fuzzy msgid "Go to Method" -msgstr "OtiÄ‘i Na Sljedeći Korak" +msgstr "Idi na Metod" #: editor/create_dialog.cpp msgid "Change %s Type" -msgstr "" +msgstr "Promeni %s Tip" #: editor/create_dialog.cpp editor/project_settings_editor.cpp msgid "Change" -msgstr "" +msgstr "Promeni" #: editor/create_dialog.cpp msgid "Create New %s" -msgstr "" +msgstr "Napravi Novi %s" #: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Nema rezultata za \"%s\"." #: editor/create_dialog.cpp editor/property_selector.cpp msgid "No description available for %s." -msgstr "" +msgstr "Nema dostupnog opisa za %s." #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp msgid "Favorites:" -msgstr "" +msgstr "Omiljeno:" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "" +msgstr "Nedavno:" #: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp #: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp #: modules/visual_script/visual_script_property_selector.cpp msgid "Search:" -msgstr "" +msgstr "Pretraga:" #: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp #: editor/property_selector.cpp editor/quick_open.cpp #: modules/visual_script/visual_script_property_selector.cpp msgid "Matches:" -msgstr "" +msgstr "Podudaranja:" #: editor/create_dialog.cpp editor/editor_feature_profile.cpp #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp @@ -1009,57 +998,61 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp #: modules/visual_script/visual_script_property_selector.cpp msgid "Description:" -msgstr "" +msgstr "Opis:" #: editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "" +msgstr "Traži Zamenu za:" #: editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "Zavisnosti za:" #: editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" +"Scena '%s' se trenutno ureÄ‘uje.\n" +"Promene će imati uticaj nakon ponovnog uÄitavanja." #: editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" +"Resurs '%s' se koristi.\n" +"Promene će imati uticaj nakon ponovnog uÄitavanja." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Dependencies" -msgstr "" +msgstr "Zavisnosti" #: editor/dependency_editor.cpp editor/editor_resource_picker.cpp msgid "Resource" -msgstr "" +msgstr "Resurs" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp #: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" -msgstr "" +msgstr "Putanja" #: editor/dependency_editor.cpp msgid "Dependencies:" -msgstr "" +msgstr "Zavisnosti:" #: editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "Popravi Pokvareno" #: editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "" +msgstr "UreÄ‘ivaÄ Zavisnosti" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "Traži Resurs Zamene:" #: editor/dependency_editor.cpp editor/editor_file_dialog.cpp #: editor/editor_help_search.cpp editor/editor_node.cpp @@ -1069,11 +1062,11 @@ msgstr "" #: modules/visual_script/visual_script_property_selector.cpp #: scene/gui/file_dialog.cpp msgid "Open" -msgstr "" +msgstr "Otvori" #: editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "" +msgstr "Vlasnici Od:" #: editor/dependency_editor.cpp msgid "" @@ -1081,6 +1074,9 @@ msgid "" "Depending on your filesystem configuration, the files will either be moved " "to the system trash or deleted permanently." msgstr "" +"Ukloni oznaÄene datoteke iz projekta? (Ne može se opozvati.)\n" +"U zavisnosti od konfiguracije sistema datoteka, datoteke će ili biti " +"premeÅ¡tene u kantu za otpatke ili biti trajno uklonjene." #: editor/dependency_editor.cpp msgid "" @@ -1360,9 +1356,8 @@ msgid "Bypass" msgstr "" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Bus Options" -msgstr "Funkcije:" +msgstr "PodeÅ¡avanja Magistrale" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/scene_tree_dock.cpp @@ -1471,6 +1466,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -1782,9 +1781,8 @@ msgid "(Properties Disabled)" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "(Editor Disabled)" -msgstr "Onemogućeno" +msgstr "(UreÄ‘ivaÄ Onemogućen)" #: editor/editor_feature_profile.cpp msgid "Class Options:" @@ -1829,14 +1827,12 @@ msgid "Current Profile:" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Create Profile" -msgstr "Napravi" +msgstr "Napravi Profil" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Remove Profile" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni Profil" #: editor/editor_feature_profile.cpp msgid "Available Profiles:" @@ -1993,14 +1989,12 @@ msgid "Move Favorite Down" msgstr "" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to previous folder." -msgstr "OtiÄ‘i Na Prethodni Korak" +msgstr "Idi na prethodni direktorijum." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "OtiÄ‘i Na Sljedeći Korak" +msgstr "Idi na sledeći direktorijum." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Go to parent folder." @@ -2128,9 +2122,8 @@ msgid "Property Descriptions" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "(value)" -msgstr "Vrednost:" +msgstr "(Vrednost)" #: editor/editor_help.cpp msgid "" @@ -2178,9 +2171,8 @@ msgid "Signals Only" msgstr "" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Kontanta" +msgstr "Samo Konstante" #: editor/editor_help_search.cpp msgid "Properties Only" @@ -2208,7 +2200,7 @@ msgstr "" #: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp msgid "Constant" -msgstr "Kontanta" +msgstr "Konstanta" #: editor/editor_help_search.cpp msgid "Property" @@ -2223,9 +2215,8 @@ msgid "Property:" msgstr "" #: editor/editor_inspector.cpp -#, fuzzy msgid "Pin value" -msgstr "Vrednost:" +msgstr "ZakaÄi vrednost" #: editor/editor_inspector.cpp msgid "" @@ -2256,14 +2247,12 @@ msgid "Unpinned %s" msgstr "" #: editor/editor_inspector.cpp -#, fuzzy msgid "Copy Property" -msgstr "ObriÅ¡i Selekciju" +msgstr "Kopiraj Osobinu" #: editor/editor_inspector.cpp -#, fuzzy msgid "Paste Property" -msgstr "Animacija Uduplaj KljuÄeve" +msgstr "Zalepi Osobinu" #: editor/editor_inspector.cpp msgid "Copy Property Path" @@ -2274,9 +2263,8 @@ msgid "Output:" msgstr "" #: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "ObriÅ¡i Selekciju" +msgstr "Kopiraj OznaÄeno" #: editor/editor_log.cpp editor/editor_network_profiler.cpp #: editor/editor_profiler.cpp editor/editor_resource_picker.cpp @@ -2629,9 +2617,8 @@ msgid "Can't reload a scene that was never saved." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "Napravi" +msgstr "Ponovo UÄitaj SaÄuvanu Scenu" #: editor/editor_node.cpp msgid "" @@ -2832,7 +2819,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -2841,9 +2828,8 @@ msgid "Go to previously opened scene." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Copy Text" -msgstr "ObriÅ¡i Selekciju" +msgstr "Kopiraj Tekst" #: editor/editor_node.cpp msgid "Next tab" @@ -3052,9 +3038,8 @@ msgid "Editor" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "Tranzicije" +msgstr "Postavke UreÄ‘ivaÄa..." #: editor/editor_node.cpp msgid "Editor Layout" @@ -3121,9 +3106,8 @@ msgid "Community" msgstr "Zajednica" #: editor/editor_node.cpp -#, fuzzy msgid "About Godot" -msgstr "O nama / O Godou" +msgstr "O Godot" #: editor/editor_node.cpp msgid "Support Godot Development" @@ -3175,19 +3159,16 @@ msgid "Save & Restart" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Update Continuously" -msgstr "Neprekidna" +msgstr "Neprekidno Ažuriraj" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Napravi" +msgstr "Ažuriraj sve promene" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Napravi" +msgstr "Ažuriraj Vitalne Promene" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -3265,9 +3246,8 @@ msgid "Merge With Existing" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Apply MeshInstance Transforms" -msgstr "Animacija Promjeni Transformaciju" +msgstr "Primeni Transformacije MeshInstance a" #: editor/editor_node.cpp msgid "Open & Run a Script" @@ -3303,9 +3283,8 @@ msgid "Select" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Select Current" -msgstr "Izmjeni Krivulju ÄŒvora" +msgstr "Obeleži Trenutno" #: editor/editor_node.cpp msgid "Open 2D Editor" @@ -3385,9 +3364,8 @@ msgid "Measure:" msgstr "" #: editor/editor_profiler.cpp -#, fuzzy msgid "Frame Time (ms)" -msgstr "Vreme (s): " +msgstr "Vreme Frejma(ms)" #: editor/editor_profiler.cpp msgid "Average Time (ms)" @@ -3432,9 +3410,8 @@ msgid "Calls" msgstr "" #: editor/editor_properties.cpp -#, fuzzy msgid "Edit Text:" -msgstr "Izmjeni Selekciju Krivulje" +msgstr "Izmeni Tekst:" #: editor/editor_properties.cpp editor/script_create_dialog.cpp msgid "On" @@ -3536,9 +3513,8 @@ msgid "Paste" msgstr "" #: editor/editor_resource_picker.cpp editor/property_editor.cpp -#, fuzzy msgid "Convert to %s" -msgstr "Napravi" +msgstr "Konvertuj u %s" #: editor/editor_resource_picker.cpp editor/property_editor.cpp msgid "New %s" @@ -3605,9 +3581,8 @@ msgstr "" #. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git"). #: editor/editor_vcs_interface.cpp -#, fuzzy msgid "%s Error" -msgstr "Ogledalo" +msgstr "%s GreÅ¡ka" #: editor/export_template_manager.cpp msgid "Open the folder containing these templates." @@ -4090,9 +4065,8 @@ msgid "Overwrite" msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Create Scene" -msgstr "Napravi" +msgstr "Napravi Scenu" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4186,9 +4160,8 @@ msgid "Rename Group" msgstr "" #: editor/groups_editor.cpp -#, fuzzy msgid "Delete Group" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "Ukloni Grupu" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" @@ -4301,9 +4274,8 @@ msgid "Saving..." msgstr "" #: editor/import_defaults_editor.cpp -#, fuzzy msgid "Select Importer" -msgstr "Uduplaj Selekciju" +msgstr "OznaÄi Uvoznika" #: editor/import_defaults_editor.cpp msgid "Importer:" @@ -4377,9 +4349,8 @@ msgid "Copy Properties" msgstr "" #: editor/inspector_dock.cpp -#, fuzzy msgid "Paste Properties" -msgstr "Animacija Uduplaj KljuÄeve" +msgstr "Zalepi Osobine" #: editor/inspector_dock.cpp msgid "Make Sub-Resources Unique" @@ -4499,16 +4470,14 @@ msgstr "" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon" -msgstr "Napravi" +msgstr "Napravi Poligon" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Create points." -msgstr "Napravi" +msgstr "Napravi taÄke." #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "" @@ -4523,9 +4492,8 @@ msgid "Erase points." msgstr "" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon" -msgstr "Napravi" +msgstr "izmeni Poligon" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Insert Point" @@ -4580,9 +4548,8 @@ msgstr "" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Animation Point" -msgstr "Optimizuj Animaciju" +msgstr "Dodaj TaÄku Animacije" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Remove BlendSpace1D Point" @@ -4631,18 +4598,16 @@ msgstr "" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Open Animation Node" -msgstr "Optimizuj Animaciju" +msgstr "Otvori ÄŒvor Animacije" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Triangle already exists." msgstr "" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Triangle" -msgstr "Animacija Dodaj Kanal" +msgstr "Dodaj Trougao" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Limits" @@ -4725,15 +4690,13 @@ msgid "Nodes Disconnected" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Set Animation" -msgstr "Optimizuj Animaciju" +msgstr "Postavi Animaciju" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Node" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "Ukloni ÄŒvor" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/scene_tree_dock.cpp @@ -4764,19 +4727,16 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Anim Clips" -msgstr "Anim Klipovi:" +msgstr "Anim Klipovi" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Audio Clips" -msgstr "Audio Klipovi:" +msgstr "Audio Klipovi" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Functions" -msgstr "Funkcije:" +msgstr "Funkcije" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp @@ -4914,9 +4874,8 @@ msgid "New" msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Transitions..." -msgstr "Tranzicije" +msgstr "Izmeni Tranzicije..." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Open in Inspector" @@ -5014,14 +4973,12 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition exists!" -msgstr "Tranzicije" +msgstr "Prelaz postoji!" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Add Transition" -msgstr "Tranzicije" +msgstr "Dodaj Tranziciju" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -5061,9 +5018,8 @@ msgid "Node Removed" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition Removed" -msgstr "Tranzicije" +msgstr "Tranzicija Uklonjena" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -5085,9 +5041,8 @@ msgid "Connect nodes." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "ObriÅ¡i Selekciju" +msgstr "ObriÅ¡i obeležen Ävor ili prelaz." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -5098,9 +5053,8 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "Tranzicije" +msgstr "Tranzicija: " #: editor/plugins/animation_state_machine_editor.cpp msgid "Play Mode:" @@ -5312,9 +5266,8 @@ msgid "Request failed, timeout" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "Vreme:" +msgstr "Istek vremena." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed:" @@ -5508,6 +5461,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -5545,23 +5502,20 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Step:" -msgstr "Skaliraj Selekciju" +msgstr "Skaliraj Korak:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Vertical Guide" -msgstr "Napravi" +msgstr "Napravi Vertikalni VodiÄ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Vertical Guide" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni Vertikalni VodiÄ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Horizontal Guide" @@ -5572,9 +5526,8 @@ msgid "Create Horizontal Guide" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Horizontal Guide" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni Horizontalni VodiÄ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Horizontal and Vertical Guides" @@ -5627,9 +5580,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Grouped" -msgstr "ObriÅ¡i Selekciju" +msgstr "Grupisane" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5684,18 +5636,16 @@ msgid "Center" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Left Wide" -msgstr "Linearna" +msgstr "Leva Å iroka" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Wide" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Right Wide" -msgstr "Linearna" +msgstr "Desna Å iroka" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Bottom Wide" @@ -5756,33 +5706,29 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected" -msgstr "ObriÅ¡i Selekciju" +msgstr "GrupiÅ¡i OznaÄeno" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected" -msgstr "ObriÅ¡i Selekciju" +msgstr "OdgrupiÅ¡i OznaÄeno" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "Animacija Promjeni Transformaciju" +msgstr "OÄisti VodiÄe" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Custom Bone(s) from Node(s)" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Bones" -msgstr "Animacija Promjeni Transformaciju" +msgstr "OÄisti Kosti" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" @@ -5812,24 +5758,20 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Drag: Rotate selected node around pivot." -msgstr "ObriÅ¡i Selekciju" +msgstr "Prevuci: Rotiraj obeležen Ävor oko ose." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Alt+Drag: Move selected node." -msgstr "IzbriÅ¡i oznaÄeni kljuÄ(eve)" +msgstr "Alt+Drag: Pomeri obeležen Ävor." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Alt+Drag: Scale selected node." -msgstr "IzbriÅ¡i oznaÄeni kljuÄ(eve)" +msgstr "Alt+Drag: Skaliraj oznaÄen Ävor." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "V: Set selected node's pivot position." -msgstr "ObriÅ¡i Selekciju" +msgstr "V: Postavi poziciju ose obeleženog Ävora." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5954,9 +5896,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock Selected Node(s)" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "ZakljuÄaj OznaÄen ÄŒvor(ove)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5965,9 +5906,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Unlock Selected Node(s)" -msgstr "Dupliraj Selektovane KljuÄeve" +msgstr "OtkljuÄaj OznaÄen ÄŒvor(ove)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5976,9 +5916,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected Node(s)" -msgstr "ObriÅ¡i Selekciju" +msgstr "GrupiÅ¡i OznaÄen ÄŒvor(ove)" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5987,9 +5926,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected Node(s)" -msgstr "ObriÅ¡i Selekciju" +msgstr "OdgrupiÅ¡i OznaÄen ÄŒvor(ove)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton Options" @@ -6065,9 +6003,8 @@ msgid "Scale mask for inserting keys." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "Animacija dodaj kljuÄ" +msgstr "Ubaci kljuÄ (na osnovu maske)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6078,14 +6015,12 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Auto Insert Key" -msgstr "Animacija dodaj kljuÄ" +msgstr "Automatski Ubaci KljuÄ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Animation Key and Pose Options" -msgstr "Dužina Animacije (secunde)" +msgstr "KljuÄevi Animacije i PodeÅ¡avanja Poziranja" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -6104,9 +6039,8 @@ msgid "Add Node Here" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Instance Scene Here" -msgstr "Dodaj kljuÄ ovde" +msgstr "Instanciraj Scenu Ovde" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" @@ -6194,9 +6128,8 @@ msgid "" msgstr "" #: editor/plugins/collision_polygon_editor_plugin.cpp -#, fuzzy msgid "Create Polygon3D" -msgstr "Napravi" +msgstr "Napravi Poligon3D" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" @@ -6315,24 +6248,21 @@ msgid "Load Curve Preset" msgstr "" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Add Point" -msgstr "Optimizuj Animaciju" +msgstr "Dodaj TaÄku" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Remove Point" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni TaÄku" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Left Linear" -msgstr "Linearna" +msgstr "Levi Linearni" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy msgid "Right Linear" -msgstr "Linearna" +msgstr "Desni Linearni" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Preset" @@ -6494,7 +6424,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy msgid "Create Single Convex Collision Sibling" -msgstr "Napravi" +msgstr "Napravi Jednostruki Konveksni Duplikat Sudara" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6505,7 +6435,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy msgid "Create Simplified Convex Collision Sibling" -msgstr "Napravi" +msgstr "Napravi Pojednostavljen Konveksni Duplikat Sudara" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6517,7 +6447,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy msgid "Create Multiple Convex Collision Siblings" -msgstr "Napravi" +msgstr "Napravi ViÅ¡e Konveksnih Duplikata Sudara" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6711,9 +6641,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Napravi" +msgstr "Konvertuj u CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6794,9 +6723,8 @@ msgid "Add Point to Curve" msgstr "" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Split Curve" -msgstr "Izmjeni Krivulju ÄŒvora" +msgstr "Razdeli Krivu" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" @@ -6952,23 +6880,20 @@ msgid "Invalid Polygon (need 3 different vertices)" msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Napravi" +msgstr "Dodaj PrilagoÄ‘eni Poligon" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Napravi" +msgstr "Ukloni PrilagoÄ‘eni Poligon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Transform Polygon" -msgstr "Napravi" +msgstr "TransformiÅ¡i Poligon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" @@ -6991,9 +6916,8 @@ msgid "Points" msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Napravi" +msgstr "Poligoni" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -7062,9 +6986,8 @@ msgid "Copy Polygon to UV" msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Napravi" +msgstr "Kopiraj UV u Poligon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -7169,28 +7092,24 @@ msgid "Flip Portals" msgstr "" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Room Generate Points" -msgstr "Pomeri Bezier TaÄke" +msgstr "GeneriÅ¡i TaÄke u prostoru" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Generate Points" -msgstr "Napravi" +msgstr "GeneriÅ¡i TaÄke" #: editor/plugins/room_manager_editor_plugin.cpp msgid "Flip Portal" msgstr "" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Occluder Set Transform" -msgstr "Animacija Promjeni Transformaciju" +msgstr "Postavi Transformaciju Okludera" #: editor/plugins/room_manager_editor_plugin.cpp -#, fuzzy msgid "Center Node" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "Centriraj ÄŒvor" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" @@ -7328,9 +7247,8 @@ msgid "Next Script" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Previous Script" -msgstr "OtiÄ‘i Na Prethodni Korak" +msgstr "Prethodna Skripta" #: editor/plugins/script_editor_plugin.cpp msgid "File" @@ -7491,9 +7409,8 @@ msgid "[Ignore]" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "Linearna" +msgstr "Linija" #: editor/plugins/script_text_editor.cpp msgid "Go to Function" @@ -7542,9 +7459,8 @@ msgid "Bookmarks" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Breakpoints" -msgstr "Napravi" +msgstr "TaÄke Prekida" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp @@ -7594,9 +7510,8 @@ msgid "Complete Symbol" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "Skaliraj Selekciju" +msgstr "Proceni OznaÄeno" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -7631,14 +7546,12 @@ msgid "Toggle Bookmark" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Bookmark" -msgstr "OtiÄ‘i Na Sljedeći Korak" +msgstr "Idi na Sledeći ObeleživaÄ" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Bookmark" -msgstr "OtiÄ‘i Na Prethodni Korak" +msgstr "Idi na Prethodni ObeleživaÄ" #: editor/plugins/script_text_editor.cpp msgid "Remove All Bookmarks" @@ -7662,14 +7575,12 @@ msgid "Remove All Breakpoints" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "OtiÄ‘i Na Sljedeći Korak" +msgstr "Idi na Sledeću TaÄku Prekida" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "OtiÄ‘i Na Prethodni Korak" +msgstr "Idi na Prethodnu TaÄku Prekida" #: editor/plugins/shader_editor_plugin.cpp msgid "" @@ -7698,9 +7609,8 @@ msgid "Skeleton2D" msgstr "" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Reset to Rest Pose" -msgstr "Napravi" +msgstr "Resetuj na Mirujuću Pozu" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Overwrite Rest Pose" @@ -7824,9 +7734,8 @@ msgid "Translate" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Scale" -msgstr "Skaliraj Selekciju" +msgstr "Razmera" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " @@ -7985,7 +7894,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8040,9 +7954,8 @@ msgid "" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Convert Rooms" -msgstr "Napravi" +msgstr "Konvertuj Prostore" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -8281,42 +8194,36 @@ msgid "Unnamed Gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "Napravi" +msgstr "Napravi Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Mesh2D Preview" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Polygon2D" -msgstr "Napravi" +msgstr "Napravi Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Polygon2D Preview" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D" -msgstr "Napravi" +msgstr "Napravi CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "CollisionPolygon2D Preview" -msgstr "Napravi" +msgstr "Predpogled CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D" -msgstr "Napravi" +msgstr "Napravi LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "LightOccluder2D Preview" -msgstr "Napravi" +msgstr "Predpogled LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -8339,18 +8246,16 @@ msgid "Invalid geometry, can't create polygon." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Polygon2D" -msgstr "Napravi" +msgstr "Konvertuj u Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D Sibling" -msgstr "Napravi" +msgstr "Napravi CollisionPolygon2D Duplikat" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." @@ -8429,14 +8334,12 @@ msgid "Move Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animations:" -msgstr "Optimizuj Animaciju" +msgstr "Animacije:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "New Animation" -msgstr "Optimizuj Animaciju" +msgstr "Nova Animacija" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed:" @@ -8447,14 +8350,12 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animation Frames:" -msgstr "Optimizuj Animaciju" +msgstr "Frejmovi Animacije:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add a Texture from File" -msgstr "ObriÅ¡i Selekciju" +msgstr "Dodaj Teksturu iz Datoteke" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frames from a Sprite Sheet" @@ -8533,9 +8434,8 @@ msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Separation:" -msgstr "Tranzicije" +msgstr "Odvajanje:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" @@ -8554,14 +8454,12 @@ msgid "No colors found." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "{num} constant(s)" -msgstr "Napravi" +msgstr "{num} Konstant(e)" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "No constants found." -msgstr "Kontanta" +msgstr "Konstante nisu naÄ‘ene." #: editor/plugins/theme_editor_plugin.cpp msgid "{num} font(s)" @@ -8710,18 +8608,16 @@ msgid "Select all Theme items with item data." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Deselect All" -msgstr "Uduplaj Selekciju" +msgstr "PoniÅ¡ti Obeleženo" #: editor/plugins/theme_editor_plugin.cpp msgid "Deselect all Theme items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Import Selected" -msgstr "ObriÅ¡i Selekciju" +msgstr "Uvezi Obeleženo" #: editor/plugins/theme_editor_plugin.cpp msgid "" @@ -8741,23 +8637,20 @@ msgid "Remove All Color Items" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Rename Item" -msgstr "Animacija Preimenuj Kanal" +msgstr "Preimenuj stavku" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Constant Items" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Remove All Font Items" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni Sve Font Stavke" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Remove All Icon Items" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni Sve Icon Stavke" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All StyleBox Items" @@ -8846,9 +8739,8 @@ msgid "Add StyleBox Item" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Remove Items:" -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni stavku:" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" @@ -8889,6 +8781,11 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Resurs" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8937,6 +8834,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8953,7 +8862,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Promeni %s Tip" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9194,9 +9114,8 @@ msgid "Add Texture(s) to TileSet." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni oznaÄenu Teksturu iz TileSet-a." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -9317,9 +9236,8 @@ msgid "Erase bitmask." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "Napravi" +msgstr "Napravi novi pravougaonik." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -9327,9 +9245,8 @@ msgid "New Rectangle" msgstr "Napravi" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new polygon." -msgstr "Napravi" +msgstr "Napravi novi poligon." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -9359,9 +9276,8 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "ObriÅ¡i Selekciju" +msgstr "Ukloni oznaÄenu teksturu? Ovo će ukloniti sva polja koja je koriste." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -9391,9 +9307,8 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "IzbriÅ¡i oznaÄeni kljuÄ(eve)" +msgstr "Ukloni oznaÄeni Pravoug." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -9402,9 +9317,8 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete polygon." -msgstr "Napravi" +msgstr "Ukloni poligon." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -9566,9 +9480,8 @@ msgid "Unstaged Changes" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit:" -msgstr "Zajednica" +msgstr "Posveti:" #: editor/plugins/version_control_editor_plugin.cpp msgid "Date:" @@ -9669,18 +9582,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -9960,14 +9861,12 @@ msgid "SoftLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." -msgstr "Kontanta" +msgstr "Konstanta boje." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color uniform." -msgstr "Animacija Promjeni Transformaciju" +msgstr "Homogenost Boje." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." @@ -10076,9 +9975,8 @@ msgid "'%s' input parameter for vertex and fragment shader mode." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar function." -msgstr "Skaliraj Selekciju" +msgstr "Skalarna funkcija." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar operator." @@ -10311,9 +10209,8 @@ msgid "Scalar constant." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Animacija Promjeni Transformaciju" +msgstr "Skalarna homogenost." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." @@ -10336,9 +10233,8 @@ msgid "2D texture uniform lookup with triplanar." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Napravi" +msgstr "Funkcija transformacije." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -10380,14 +10276,12 @@ msgid "Multiplies vector by transform." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Napravi" +msgstr "Transformacija konstante." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Napravi" +msgstr "Transformacija homogenosti." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector function." @@ -11074,7 +10968,7 @@ msgstr "ObriÅ¡i Selekciju" #: editor/project_manager.cpp msgid "About" -msgstr "O nama / O Godou" +msgstr "O Godot-u" #: editor/project_manager.cpp msgid "Asset Library Projects" @@ -11349,7 +11243,7 @@ msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" -msgstr "OpÅ¡ti deo" +msgstr "OpÅ¡ta" #: editor/project_settings_editor.cpp msgid "Override For..." @@ -11733,14 +11627,12 @@ msgid "Make node as Root" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes and any children?" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "Obrisi %d Ävorova i decu?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes?" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "ObriÅ¡i %d Ävorova?" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" @@ -11751,9 +11643,8 @@ msgid "Delete node \"%s\" and its children?" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Animacija ObriÅ¡i KljuÄeve" +msgstr "ObriÅ¡i Ävor \"%s\"?" #: editor/scene_tree_dock.cpp msgid "" @@ -11944,9 +11835,8 @@ msgid "Delete (No Confirm)" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add/Create a New Node." -msgstr "Napravi" +msgstr "Dodaj/Napravi nov Ävor." #: editor/scene_tree_dock.cpp msgid "" @@ -12154,9 +12044,8 @@ msgid "Built-in script (into scene file)." msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will create a new script file." -msgstr "Napravi" +msgstr "Biće kreirana nova datoteka skripte." #: editor/script_create_dialog.cpp msgid "Will load an existing script file." @@ -12207,9 +12096,8 @@ msgid "Warning:" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Error:" -msgstr "Ogledalo" +msgstr "GreÅ¡ka:" #: editor/script_editor_debugger.cpp msgid "C++ Error" @@ -12273,6 +12161,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtriraj signale" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -12887,27 +12780,24 @@ msgid "Override an existing built-in function." msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new function." -msgstr "Napravi" +msgstr "Napravi novu funkciju." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new variable." -msgstr "Napravi" +msgstr "Napravi novu promenljivu." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new signal." -msgstr "Napravi" +msgstr "Napravi novi signal." #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" @@ -13126,14 +13016,12 @@ msgid "Add Nodes..." msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function..." -msgstr "Funkcije:" +msgstr "Dodaj funkciju..." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "function_name" -msgstr "Funkcije:" +msgstr "naziv_funkcije" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -13156,9 +13044,8 @@ msgid "Cut Nodes" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Funkcije:" +msgstr "Napravi Funkciju" #: modules/visual_script/visual_script_editor.cpp msgid "Refresh Graph" @@ -13308,9 +13195,8 @@ msgid "Emit %s" msgstr "" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid "Function" -msgstr "Funkcije:" +msgstr "Funkcija" #: modules/visual_script/visual_script_nodes.cpp msgid "Compose Array" @@ -13589,6 +13475,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp @@ -13908,9 +13797,8 @@ msgid "" msgstr "" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Kontanta" +msgstr "Identitet nije pronaÄ‘en." #: platform/osx/export/export.cpp msgid "Creating app bundle" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index 9645a3adff..91d13086f4 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -1501,6 +1501,11 @@ msgstr "Ladda standard Buss-Layouten." msgid "Create a new Bus Layout." msgstr "Skapa en ny Buss-Layout." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Öppna Ljud-Buss Layout" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ogiltigt namn." @@ -2989,7 +2994,7 @@ msgstr "Växla distraktionsfritt läge." msgid "Add a new scene." msgstr "Lägg till en ny scen." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Scen" @@ -5781,6 +5786,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Välj mall-fil" @@ -8349,7 +8358,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9293,6 +9307,11 @@ msgstr "Välj en annan temaresurs:" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Byt namn pÃ¥ Resurs" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Importera Tema" @@ -9346,6 +9365,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Ändra Bas Typ:" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Ändra Bas Typ:" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "Ladda Standard" @@ -9363,7 +9396,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "Ändra Typ" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -10112,18 +10156,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Matchar:" @@ -12781,6 +12813,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Filtrera tiles" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14135,6 +14172,9 @@ msgstr "Ogiltigt paket namn:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 6a737cca56..c278dc4460 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -1465,6 +1465,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2820,7 +2824,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5484,6 +5488,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7928,7 +7936,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8818,6 +8831,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8866,6 +8883,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8882,7 +8911,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9570,18 +9609,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12158,6 +12185,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13462,6 +13493,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/te.po b/editor/translations/te.po index f329a3c39f..1c6ddff44b 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -1438,6 +1438,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2787,7 +2791,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5430,6 +5434,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7855,7 +7863,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8730,6 +8743,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8776,6 +8793,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8792,7 +8821,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9472,18 +9511,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12037,6 +12064,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13326,6 +13357,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/th.po b/editor/translations/th.po index 3359054a03..c3de50112f 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -1491,6 +1491,11 @@ msgstr "โหลดค่าเริ่มต้นเลย์เà¸à¸²à¸•์ msgid "Create a new Bus Layout." msgstr "สร้างเลย์เà¸à¸²à¸•์บัสใหม่" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "เปิดเลย์เà¸à¸²à¸•์ขà¸à¸‡à¸šà¸±à¸ªà¹€à¸ªà¸µà¸¢à¸‡" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "ชื่à¸à¸œà¸´à¸”พลาด" @@ -2911,7 +2916,7 @@ msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™" msgid "Add a new scene." msgstr "เพิ่มฉาà¸à¹ƒà¸«à¸¡à¹ˆ" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "ฉาà¸" @@ -5666,6 +5671,10 @@ msgid "Bake Lightmaps" msgstr "สร้าง Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "เลืà¸à¸à¹„ฟล์ bake ขà¸à¸‡ lightmap :" @@ -8180,7 +8189,13 @@ msgid "Cinematic Preview" msgstr "ดูตัวà¸à¸¢à¹ˆà¸²à¸‡à¹à¸šà¸šà¸ าพยนตร์" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "ไม่สามารถใช้งานได้เมื่à¸à¹ƒà¸Šà¹‰à¸à¸²à¸£à¹€à¸£à¸™à¹€à¸”à¸à¸£à¹Œà¹‚ดย GLES2" #: editor/plugins/spatial_editor_plugin.cpp @@ -9126,6 +9141,11 @@ msgstr "ลบรีซà¸à¸£à¹Œà¸ª" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "เปลี่ยนชื่à¸à¸£à¸µà¸‹à¸à¸£à¹Œà¸ª" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "นำเข้าธีม" @@ -9180,6 +9200,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "เพิ่มไà¸à¹€à¸—ม" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "à¹à¸à¹‰à¹„ขประเภทตัวà¹à¸›à¸£" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "เปลี่ยนประเภท" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "โหลดค่าเริ่มต้น" @@ -9198,8 +9233,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "เพิ่มไà¸à¹€à¸—ม" +msgid "Base Type" +msgstr "เปลี่ยนประเภท" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -9914,18 +9959,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "พบ:" @@ -12620,6 +12653,11 @@ msgid "Stack Frames" msgstr "สà¹à¸•ค" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "ตัวà¸à¸£à¸à¸‡à¹„ทล์" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "ตัวตรวจวิเคราะห์ประสิทธิภาพ (Profiler)" @@ -13960,9 +13998,10 @@ msgstr "ชื่à¸à¹à¸žà¹‡à¸„เà¸à¸ˆà¸œà¸´à¸”พลาด:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"โมดูล \"GodotPaymentV3\" ที่ไม่ถูà¸à¸•้à¸à¸‡à¹„ด้รวมà¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸à¸²à¸£à¸•ั้งค่าโปรเจà¸à¸•์ \"android/" -"modules\" (เปลี่ยนà¹à¸›à¸¥à¸‡à¹ƒà¸™ Godot 3.2.2)\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/tl.po b/editor/translations/tl.po index 3384446e1d..c943692efb 100644 --- a/editor/translations/tl.po +++ b/editor/translations/tl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2022-01-07 11:42+0000\n" +"PO-Revision-Date: 2022-03-02 18:39+0000\n" "Last-Translator: Napstaguy04 <brokenscreen3@gmail.com>\n" "Language-Team: Tagalog <https://hosted.weblate.org/projects/godot-engine/" "godot/tl/>\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 " "|| n % 10 == 6 || n % 10 == 9);\n" -"X-Generator: Weblate 4.10.1\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -253,7 +253,7 @@ msgstr "Ipalit sa on/off ang track na ito." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "Paraang Nag-aapdate (Kung papano inayos ang katangian na ito)" +msgstr "Paraan ng Pag-update (Kung papano inayos ang katangian na ito)" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" @@ -321,7 +321,7 @@ msgstr "Maglagay ng Key" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" -msgstr "Doblehin ang (mga) Key" +msgstr "Duplikahin ang (mga) Key" #: editor/animation_track_editor.cpp msgid "Add RESET Value(s)" @@ -548,7 +548,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." -msgstr "" +msgstr "Bilang ng usog ng Animasyon." #: editor/animation_track_editor.cpp msgid "Seconds" @@ -609,7 +609,7 @@ msgstr "Bumalik sa Nakaraang Hakbang" #: editor/animation_track_editor.cpp msgid "Apply Reset" -msgstr "" +msgstr "I-apply ang Reset" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -633,7 +633,7 @@ msgstr "Gumawa ng (mga) RESET Track" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "Tagapabilis ng Animasyon" #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" @@ -645,7 +645,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "Pinakahangganang Angulo na Mao-optimize:" #: editor/animation_track_editor.cpp msgid "Optimize" @@ -1151,11 +1151,11 @@ msgstr "Mga Resources na Walang Tiyak na Pagmamayari:" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "" +msgstr "Ibahin ang Dictionary Key" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" -msgstr "" +msgstr "Ibahin ang Dictionary Value" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" @@ -1347,7 +1347,7 @@ msgstr "Ilipat ang Effect ng Bus" #: editor/editor_audio_buses.cpp msgid "Delete Bus Effect" -msgstr "" +msgstr "Alisin ang Effect sa Bus" #: editor/editor_audio_buses.cpp msgid "Drag & drop to rearrange." @@ -1363,7 +1363,7 @@ msgstr "Nakatahimik" #: editor/editor_audio_buses.cpp msgid "Bypass" -msgstr "Pasikot-sikot" +msgstr "Ligtaan" #: editor/editor_audio_buses.cpp msgid "Bus Options" @@ -1376,11 +1376,11 @@ msgstr "Doblehin" #: editor/editor_audio_buses.cpp msgid "Reset Volume" -msgstr "" +msgstr "I-balik sa dati ang Volume" #: editor/editor_audio_buses.cpp msgid "Delete Effect" -msgstr "" +msgstr "Alisin ang Effect" #: editor/editor_audio_buses.cpp msgid "Audio" @@ -1440,7 +1440,7 @@ msgstr "Nabigong ang pagsave ang file: %s" #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "" +msgstr "Magdagdag ng Bus" #: editor/editor_audio_buses.cpp msgid "Add a new Audio Bus to this layout." @@ -1476,6 +1476,11 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "I-save Ang Ayos ng Audio Bus Bilang..." + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Di-wastong pangalan." @@ -1507,7 +1512,7 @@ msgstr "" #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "" +msgstr "Meron ng '%s' na Autoload!" #: editor/editor_autoload_settings.cpp msgid "Rename Autoload" @@ -1572,11 +1577,11 @@ msgstr "Pangkalahatang (Global) Variable" #: editor/editor_data.cpp msgid "Paste Params" -msgstr "" +msgstr "I-pasta ang mga Params" #: editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Sinasariwa ang Eksena" #: editor/editor_data.cpp msgid "Storing local changes..." @@ -1821,6 +1826,8 @@ msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." msgstr "" +"Meron ng '%s' na profile. Alisin muna ito bago mag-import. Naihinto ang pag-" +"import." #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." @@ -2030,12 +2037,12 @@ msgstr "Tingnan ang mga item bilang talaan." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" -msgstr "" +msgstr "Mga Direktoryo at mga File:" #: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp #: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp msgid "Preview:" -msgstr "" +msgstr "Pasilip:" #: editor/editor_file_dialog.cpp #: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp @@ -2086,9 +2093,8 @@ msgid "Properties" msgstr "Mga Katangian" #: editor/editor_help.cpp -#, fuzzy msgid "overrides %s:" -msgstr "ipagpalit:" +msgstr "Ipagpapalit sa %s:" #: editor/editor_help.cpp msgid "default:" @@ -2104,7 +2110,7 @@ msgstr "Mga Katangian ng Theme" #: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp msgid "Colors" -msgstr "" +msgstr "Mga Kulay" #: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp msgid "Constants" @@ -2112,15 +2118,15 @@ msgstr "Mga Konstant" #: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp msgid "Fonts" -msgstr "" +msgstr "Mga Font" #: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp msgid "Icons" -msgstr "" +msgstr "Mga Icon" #: editor/editor_help.cpp msgid "Styles" -msgstr "" +msgstr "Mga Estilo" #: editor/editor_help.cpp msgid "Enumerations" @@ -2161,7 +2167,7 @@ msgstr "Maghanap sa Sanggunian" #: editor/editor_help_search.cpp msgid "Case Sensitive" -msgstr "" +msgstr "Sensitibo sa Case" #: editor/editor_help_search.cpp msgid "Show Hierarchy" @@ -2228,9 +2234,8 @@ msgid "Property:" msgstr "Katangian:" #: editor/editor_inspector.cpp -#, fuzzy msgid "Pin value" -msgstr "(halaga)" +msgstr "Halaga ng Pin" #: editor/editor_inspector.cpp msgid "" @@ -2261,19 +2266,16 @@ msgid "Unpinned %s" msgstr "" #: editor/editor_inspector.cpp -#, fuzzy msgid "Copy Property" -msgstr "Katangian" +msgstr "Kopyahin ang Katangian" #: editor/editor_inspector.cpp -#, fuzzy msgid "Paste Property" -msgstr "Katangian" +msgstr "I-paste ang Katangian" #: editor/editor_inspector.cpp -#, fuzzy msgid "Copy Property Path" -msgstr "Kopyahin ang Kinaroroonan" +msgstr "Kopyahin ang Kinaroroonan ng Katangian" #: editor/editor_log.cpp msgid "Output:" @@ -2373,10 +2375,12 @@ msgid "" "This resource can't be saved because it does not belong to the edited scene. " "Make it unique first." msgstr "" +"Hindi mai-ligtas ang resource na ito dahil hindi ito nabibilang sa ginagalaw " +"na eksena. Gawing tangi (unique) muna ito." #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." -msgstr "I-save ang Resource Bilang..." +msgstr "I-ligtas ang Resource Bilang..." #: editor/editor_node.cpp msgid "Can't open file for writing:" @@ -2440,11 +2444,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Could not save one or more scenes!" -msgstr "" +msgstr "Hindi mai-iligtas ang ni isa o dalawang eksena!" #: editor/editor_node.cpp msgid "Save All Scenes" -msgstr "Iimpok Lahat ng Mga Eksena" +msgstr "I-ligtas Lahat ng Mga Eksena" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" @@ -2523,7 +2527,7 @@ msgstr "" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "Walang eksenang pinili upang patakbuhin ang aplikasyon." #: editor/editor_node.cpp msgid "Save scene before running..." @@ -2531,7 +2535,7 @@ msgstr "Isave muna ang eksena bago ito patakbuhin..." #: editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "" +msgstr "Hindi maumpisa ang subprocess!" #: editor/editor_node.cpp editor/filesystem_dock.cpp msgid "Open Scene" @@ -2539,11 +2543,11 @@ msgstr "Magbukas ng Eksena" #: editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "Buksan ang Punong Eksena (Base Scene)" #: editor/editor_node.cpp msgid "Quick Open..." -msgstr "Mabilisang Magbukas..." +msgstr "Buksan Kaagad..." #: editor/editor_node.cpp msgid "Quick Open Scene..." @@ -2579,7 +2583,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Save Scene As..." -msgstr "" +msgstr "I-ligtas ang Eksena Bilang..." #: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp msgid "This operation can't be done without a scene." @@ -2797,11 +2801,11 @@ msgstr "Isara ang Tab" #: editor/editor_node.cpp msgid "Undo Close Tab" -msgstr "" +msgstr "Ibalik ang Nasarang Tab" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" -msgstr "Isara Ang Ibang Mga Tab" +msgstr "Isara ang Ibang mga Tab" #: editor/editor_node.cpp msgid "Close Tabs to the Right" @@ -2843,7 +2847,7 @@ msgstr "" msgid "Add a new scene." msgstr "Magdagdag ng panibagong eksena." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Eksena" @@ -2885,7 +2889,7 @@ msgstr "Magbukas ng Eksena..." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Open Recent" -msgstr "" +msgstr "Buksan ang Kumakailan" #: editor/editor_node.cpp msgid "Save Scene" @@ -2906,12 +2910,12 @@ msgstr "TileSet..." #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Undo" -msgstr "" +msgstr "I-undo" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" -msgstr "" +msgstr "I-redo" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." @@ -2947,9 +2951,8 @@ msgid "Install Android Build Template..." msgstr "Ikabit ang Android Build Template..." #: editor/editor_node.cpp -#, fuzzy msgid "Open User Data Folder" -msgstr "Buksan ang Folder ng Datos ng Proyekto" +msgstr "Buksan ang User Data Folder ng Proyekto" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" @@ -3093,11 +3096,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" -msgstr "" +msgstr "Buksan ang Folder ng Editor Settings" #: editor/editor_node.cpp msgid "Manage Editor Features..." -msgstr "" +msgstr "Pangasiwaan ang mga Tampok ng Editor..." #: editor/editor_node.cpp msgid "Manage Export Templates..." @@ -3232,7 +3235,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Install from file" -msgstr "" +msgstr "Mag-install mula sa file" #: editor/editor_node.cpp msgid "Select android sources file" @@ -3393,7 +3396,7 @@ msgstr "Sukat:" #: editor/editor_profiler.cpp msgid "Frame Time (ms)" -msgstr "" +msgstr "Oras ng Frame (ms)" #: editor/editor_profiler.cpp msgid "Average Time (ms)" @@ -3485,7 +3488,7 @@ msgstr "Pumili ng Tinginan" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "" +msgstr "Ang piniling node ay hindi Viewport!" #: editor/editor_properties_array_dict.cpp msgid "Size: " @@ -3524,7 +3527,7 @@ msgstr "" #: editor/editor_resource_picker.cpp editor/property_editor.cpp msgid "Make Unique" -msgstr "" +msgstr "Gawing Tangi (Unique)" #: editor/editor_resource_picker.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp @@ -3538,7 +3541,7 @@ msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp #: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Paste" -msgstr "Idikit" +msgstr "I-pasta" #: editor/editor_resource_picker.cpp editor/property_editor.cpp msgid "Convert to %s" @@ -3631,7 +3634,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Starting the download..." -msgstr "" +msgstr "Inuumpisahan ang pag-download..." #: editor/export_template_manager.cpp msgid "Error requesting URL:" @@ -3708,7 +3711,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Can't Resolve" -msgstr "" +msgstr "Hindi Mairesolba" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3871,7 +3874,7 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Favorites" -msgstr "" +msgstr "Mga Paborito" #: editor/filesystem_dock.cpp msgid "Status: Import of file failed. Please fix file and reimport manually." @@ -3938,19 +3941,19 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Renaming file:" -msgstr "" +msgstr "Pinapalitan ang pangalan ng file:" #: editor/filesystem_dock.cpp msgid "Renaming folder:" -msgstr "" +msgstr "Pinapalitan ang pangalan ng folder:" #: editor/filesystem_dock.cpp msgid "Duplicating file:" -msgstr "" +msgstr "Dinuduplicate ang file:" #: editor/filesystem_dock.cpp msgid "Duplicating folder:" -msgstr "" +msgstr "Dinuduplicate ang folder:" #: editor/filesystem_dock.cpp msgid "New Inherited Scene" @@ -3970,15 +3973,15 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Add to Favorites" -msgstr "" +msgstr "Idagdag sa Paborito mo" #: editor/filesystem_dock.cpp msgid "Remove from Favorites" -msgstr "" +msgstr "Alisin sa Paborito mo" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." -msgstr "Baguhin ang mga Kaasahan..." +msgstr "Baguhin ang mga Kaasahan (Dependencies)..." #: editor/filesystem_dock.cpp msgid "View Owners..." @@ -3998,7 +4001,7 @@ msgstr "Bagong Skrip..." #: editor/filesystem_dock.cpp msgid "New Resource..." -msgstr "" +msgstr "Bagong Resource..." #: editor/filesystem_dock.cpp editor/inspector_dock.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -4034,15 +4037,15 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Sort by Last Modified" -msgstr "Ayusin ayon sa Huling Binago" +msgstr "Pagbukud-bukurin ayon sa Huling Binago" #: editor/filesystem_dock.cpp msgid "Sort by First Modified" -msgstr "" +msgstr "Pagbukud-bukurin ayon sa Unang Binago" #: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate..." -msgstr "" +msgstr "I-duplicate..." #: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Rename..." @@ -4087,15 +4090,15 @@ msgstr "Ilipat" #: editor/project_manager.cpp editor/rename_dialog.cpp #: editor/scene_tree_dock.cpp msgid "Rename" -msgstr "" +msgstr "Baguhin ang Pangalan" #: editor/filesystem_dock.cpp msgid "Overwrite" -msgstr "" +msgstr "Ipagpalit" #: editor/filesystem_dock.cpp msgid "Create Scene" -msgstr "" +msgstr "Lumikha ng Eksena" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4111,11 +4114,11 @@ msgstr "Hanapin:" #: editor/find_in_files.cpp editor/rename_dialog.cpp msgid "Replace:" -msgstr "" +msgstr "Palitan:" #: editor/find_in_files.cpp msgid "Folder:" -msgstr "" +msgstr "Folder:" #: editor/find_in_files.cpp msgid "Filters:" @@ -4130,11 +4133,11 @@ msgstr "" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find..." -msgstr "" +msgstr "Hanapin..." #: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp msgid "Replace..." -msgstr "" +msgstr "Palitan..." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -4156,7 +4159,7 @@ msgstr "Palitan Lahat" #: editor/find_in_files.cpp msgid "Searching..." -msgstr "" +msgstr "Naghahanap..." #: editor/find_in_files.cpp msgid "%d match in %d file." @@ -4172,11 +4175,11 @@ msgstr "" #: editor/groups_editor.cpp msgid "Add to Group" -msgstr "" +msgstr "Idagdag sa Pangkat" #: editor/groups_editor.cpp msgid "Remove from Group" -msgstr "" +msgstr "Alisin sa Pangkat" #: editor/groups_editor.cpp msgid "Group name already exists." @@ -4205,7 +4208,7 @@ msgstr "" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp msgid "Filter nodes" -msgstr "" +msgstr "Salain ang mga node" #: editor/groups_editor.cpp msgid "Nodes in Group" @@ -4266,11 +4269,11 @@ msgstr "" #: editor/import/resource_importer_scene.cpp #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Import Scene" -msgstr "" +msgstr "Mag-angkat ng Eksena" #: editor/import/resource_importer_scene.cpp msgid "Importing Scene..." -msgstr "" +msgstr "Inaangkat ang Eksena..." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" @@ -4302,7 +4305,7 @@ msgstr "" #: editor/import/resource_importer_scene.cpp msgid "Saving..." -msgstr "" +msgstr "Nililigtas..." #: editor/import_defaults_editor.cpp msgid "Select Importer" @@ -4346,15 +4349,15 @@ msgstr "" #: editor/import_dock.cpp msgid "Import As:" -msgstr "" +msgstr "Iangkat Bilang:" #: editor/import_dock.cpp msgid "Preset" -msgstr "" +msgstr "Preset" #: editor/import_dock.cpp msgid "Save Scenes, Re-Import, and Restart" -msgstr "" +msgstr "I-ligtas ang mga Eksena, I-reimport at Mag-restart" #: editor/import_dock.cpp msgid "Changing the type of an imported file requires editor restart." @@ -4377,11 +4380,11 @@ msgstr "" #: editor/inspector_dock.cpp msgid "Copy Properties" -msgstr "" +msgstr "Kopyahin ang mga Katangian" #: editor/inspector_dock.cpp msgid "Paste Properties" -msgstr "" +msgstr "I-pasta ang mga Katangian" #: editor/inspector_dock.cpp msgid "Make Sub-Resources Unique" @@ -4403,7 +4406,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Save As..." -msgstr "" +msgstr "I-ligtas Bilang..." #: editor/inspector_dock.cpp msgid "Extra resource options." @@ -4435,11 +4438,11 @@ msgstr "" #: editor/inspector_dock.cpp msgid "Open documentation for this object." -msgstr "" +msgstr "Buksan ang dokumentasyon para sa object na ito." #: editor/inspector_dock.cpp editor/scene_tree_dock.cpp msgid "Open Documentation" -msgstr "" +msgstr "Buksan ang Dokumentasyon" #: editor/inspector_dock.cpp msgid "Filter properties" @@ -4467,48 +4470,48 @@ msgstr "" #: editor/plugin_config_dialog.cpp msgid "Create a Plugin" -msgstr "" +msgstr "Gumawa ng Plugin" #: editor/plugin_config_dialog.cpp msgid "Plugin Name:" -msgstr "" +msgstr "Pangalan ng Plugin:" #: editor/plugin_config_dialog.cpp msgid "Subfolder:" -msgstr "" +msgstr "Subfolder:" #: editor/plugin_config_dialog.cpp #: editor/plugins/version_control_editor_plugin.cpp msgid "Author:" -msgstr "" +msgstr "May-akda:" #: editor/plugin_config_dialog.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Version:" -msgstr "" +msgstr "Bersyon:" #: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp msgid "Language:" -msgstr "" +msgstr "Wika:" #: editor/plugin_config_dialog.cpp msgid "Script Name:" -msgstr "" +msgstr "Pangalan ng Skript:" #: editor/plugin_config_dialog.cpp msgid "Activate now?" -msgstr "" +msgstr "Aktibahin na ngayon?" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon" -msgstr "" +msgstr "Lumikha ng Polygon" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create points." -msgstr "" +msgstr "Lumikha ng mga punto." #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "" @@ -4516,27 +4519,30 @@ msgid "" "LMB: Move Point\n" "RMB: Erase Point" msgstr "" +"Ayusin ang mga punto.\n" +"LMB: Maglipat ng Punto\n" +"RMB: Magbura ng Punto" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Erase points." -msgstr "" +msgstr "Burahin ang mga punto." #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Edit Polygon" -msgstr "" +msgstr "Ayusin ang Polygon" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Insert Point" -msgstr "" +msgstr "Maglagay ng Punto" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Edit Polygon (Remove Point)" -msgstr "" +msgstr "Ayusin ang Polygon (Alisin ang Punto)" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Remove Polygon And Point" -msgstr "" +msgstr "Alisin ang Polygon At Punto" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4544,14 +4550,14 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "" +msgstr "Magdagdag ng Animation" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Load..." -msgstr "" +msgstr "Magload..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4617,20 +4623,20 @@ msgstr "" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Point" -msgstr "" +msgstr "Punto" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Open Editor" -msgstr "" +msgstr "Buksan ang Editor" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Open Animation Node" -msgstr "" +msgstr "Buksan ang Animation Node" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Triangle already exists." @@ -4638,7 +4644,7 @@ msgstr "" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Add Triangle" -msgstr "" +msgstr "Magdagdag ng Tatsulok" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Limits" @@ -4722,12 +4728,12 @@ msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Set Animation" -msgstr "" +msgstr "Itakda ang Animasyon" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Delete Node" -msgstr "" +msgstr "Burahin ang Node" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/scene_tree_dock.cpp @@ -4790,42 +4796,42 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "" +msgstr "I-toggle ang Kusang Pagpapalabas" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "" +msgstr "Bagong Pangalan ng Animation:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "Bagong Anim" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "" +msgstr "Baguhin ang Pangalan ng Animasyon:" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Animation?" -msgstr "" +msgstr "Alisin ang Animation?" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Alisin ang Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Invalid animation name!" -msgstr "" +msgstr "Di-wastong pangalan ng animation!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation name already exists!" -msgstr "" +msgstr "May nakapangalan na parehas sa Animation na ito!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "Palitan ang Pangalan ng Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" @@ -4861,7 +4867,7 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation to edit!" -msgstr "" +msgstr "Walang animasyong pinagtratrabauhan!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -4906,7 +4912,7 @@ msgstr "Bago" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Transitions..." -msgstr "" +msgstr "Ayusin ang mga Transisyon..." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Open in Inspector" @@ -4930,7 +4936,7 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" -msgstr "" +msgstr "Mga Direksyon" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Past" @@ -5062,6 +5068,9 @@ msgid "" "RMB to add new nodes.\n" "Shift+LMB to create connections." msgstr "" +"Magpili at maglipad ng mga node.\n" +"RMB upang magdagdag ng bagong mga node.\n" +"Shift+LMB upang gumawa ng mga bagong koneksyon." #: editor/plugins/animation_state_machine_editor.cpp msgid "Create new nodes." @@ -5175,15 +5184,15 @@ msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Delete Input" -msgstr "" +msgstr "Alisin ang Input" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is valid." -msgstr "" +msgstr "Wasto ang animation tree." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is invalid." -msgstr "" +msgstr "Di-wasto ang animation tree." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation Node" @@ -5235,27 +5244,27 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Contents:" -msgstr "" +msgstr "Laman:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "View Files" -msgstr "" +msgstr "Tignan ang mga File" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download" -msgstr "" +msgstr "I-download" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connection error, please try again." -msgstr "" +msgstr "Nabigo sa pagkonekta, maaring subukan muli." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect." -msgstr "" +msgstr "Hindi makakonekta." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" -msgstr "" +msgstr "Hindi makakonekta sa host:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response from host:" @@ -5271,7 +5280,7 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve." -msgstr "" +msgstr "Hindi mai-resolba." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" @@ -5283,7 +5292,7 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." -msgstr "" +msgstr "Nabigo sa pag-write." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" @@ -5303,55 +5312,55 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed:" -msgstr "" +msgstr "Nabigo:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "" +msgstr "Di-wastong download hash, inaakalang may gumalaw ng file." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" -msgstr "" +msgstr "Inaasahan:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Got:" -msgstr "" +msgstr "Natanggap:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed SHA-256 hash check" -msgstr "" +msgstr "Nabigo sa pagsusuri ng SHA-256 hash" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "" +msgstr "Nabigo sa Pagdownload ng Asset:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Downloading (%s / %s)..." -msgstr "" +msgstr "Dinadawnlowd (%s/%s)..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Downloading..." -msgstr "" +msgstr "Dinadawnlowd..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." -msgstr "" +msgstr "Rineresolba..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Error making request" -msgstr "" +msgstr "Nabigo sa paggawa ng hiling" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" -msgstr "" +msgstr "Nakatenga" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Install..." -msgstr "" +msgstr "I-install..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" -msgstr "" +msgstr "Subukan muli" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" @@ -5371,23 +5380,23 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (A-Z)" -msgstr "" +msgstr "Pangalan (A-Z)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (Z-A)" -msgstr "" +msgstr "Pangalan (Z-A)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "License (A-Z)" -msgstr "" +msgstr "Lisensya (A-Z)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "License (Z-A)" -msgstr "" +msgstr "Lisensya (Z-A)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" -msgstr "" +msgstr "Panguna" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Previous" @@ -5403,7 +5412,7 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "All" -msgstr "" +msgstr "Lahat" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Search templates, projects, and demos" @@ -5423,31 +5432,31 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" -msgstr "" +msgstr "Ipagbukud-bukod:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Category:" -msgstr "" +msgstr "Kaurian:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "Site:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Support" -msgstr "" +msgstr "Naka-alalay" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Opisyal" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "Sinusubukan" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Loading..." -msgstr "" +msgstr "Nagloload..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -5493,13 +5502,17 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" -msgstr "" +msgstr "Pasilip" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" @@ -5567,7 +5580,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate %d CanvasItems" -msgstr "" +msgstr "Paikutin ang (mga) %d Canvasitems" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate CanvasItem \"%s\" to %d degrees" @@ -5715,7 +5728,7 @@ msgid "" "Project Camera Override\n" "Overrides the running project's camera with the editor viewport camera." msgstr "" -"Pagpapalit ng Kamera ng Proyekto\n" +"Pagpapalit sa Kamera ng Proyekto\n" "Pinapalitan ang kamera ng tumatakbong proyekto sa kamera ng editor viewport." #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5729,12 +5742,12 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" -msgstr "" +msgstr "I-lock ang nakapili" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Unlock Selected" -msgstr "" +msgstr "I-unlock ang nakapili" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5748,7 +5761,7 @@ msgstr "Ibuwag Ang Pangkat ng Napili" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" -msgstr "" +msgstr "I-pasta ang Pose" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Guides" @@ -5764,11 +5777,11 @@ msgstr "Alisin Ang Mga Buto" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "" +msgstr "Lumikha ng IK Chain" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "" +msgstr "Alisin ang IK Chain" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5781,7 +5794,7 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom Reset" -msgstr "" +msgstr "Ibalik sa Dati ang Zoom" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5810,10 +5823,12 @@ msgstr "V: Itakda ang posisyon ng pivot sa node." #: editor/plugins/spatial_editor_plugin.cpp msgid "Alt+RMB: Show list of all nodes at position clicked, including locked." msgstr "" +"Alt+RMB: Ipakita ang listahan ng lahat ng node at posisyong pinindutan, " +"kabilang ang mga naka-lock." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "RMB: Add node at position clicked." -msgstr "" +msgstr "RMB: Magdagdag ng node sa posisyong pinindutan." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5832,7 +5847,7 @@ msgstr "Paraan ng Pagpapalaki" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Shift: Scale proportionally." -msgstr "" +msgstr "Shift: Palakihin na pa-proporsyonal." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5861,7 +5876,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Smart Snap" -msgstr "" +msgstr "Gamitin ang Smart Snap" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Toggle grid snapping." @@ -5931,14 +5946,13 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock Selected Node(s)" -msgstr "Doblehin ang (mga) Napiling Key" +msgstr "I-lock ang Nakapiling (mga) Node" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "" +msgstr "I-Unlock ang Napiling Object (maaring galawin)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5964,9 +5978,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected Node(s)" -msgstr "Ibuwag Ang Pangkat ng Napili" +msgstr "Ibuwag Ang Pangkat ng (mga) Napiling Node" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton Options" @@ -5991,7 +6004,7 @@ msgstr "Tingnan" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Always Show Grid" -msgstr "" +msgstr "Parating Ipakita ang Grid" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -6095,11 +6108,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom to 3.125%" -msgstr "" +msgstr "I-zoom sa 3.125%" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom to 6.25%" -msgstr "" +msgstr "I-zoom sa 6.25%" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom to 12.5%" @@ -6168,15 +6181,15 @@ msgstr "" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Polygon3D" -msgstr "" +msgstr "Gumawa ng Polygon3D" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" -msgstr "" +msgstr "Ayusin ang Poly" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly (Remove Point)" -msgstr "" +msgstr "Ayusin ang Poly (Magalis ng Punto)" #: editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" @@ -6192,7 +6205,7 @@ msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Restart" -msgstr "" +msgstr "Simulan muli" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -6247,12 +6260,12 @@ msgstr "" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "" +msgstr "Gumawa ng mga Punto ng Bugahan Galing sa Mesh" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "" +msgstr "Gumawa ng mga Punto ng Bugahan Galing sa Node" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 0" @@ -6264,11 +6277,11 @@ msgstr "" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" -msgstr "" +msgstr "Suwabeng Pagpasok" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease Out" -msgstr "" +msgstr "Suwabeng Paglabas" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" @@ -6288,11 +6301,11 @@ msgstr "" #: editor/plugins/curve_editor_plugin.cpp msgid "Add Point" -msgstr "" +msgstr "Magdagdag ng Punto" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Point" -msgstr "" +msgstr "Magalis ng Punto" #: editor/plugins/curve_editor_plugin.cpp msgid "Left Linear" @@ -7242,16 +7255,16 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Next" -msgstr "" +msgstr "Hanapin ang Susunod" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "" +msgstr "Hanapin ang Nakaraan" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" -msgstr "" +msgstr "Salain ang mga skrip" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." @@ -7291,15 +7304,15 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp msgid "Open..." -msgstr "" +msgstr "Buksan..." #: editor/plugins/script_editor_plugin.cpp msgid "Reopen Closed Script" -msgstr "" +msgstr "Buksan Muli ang Naisarang Skrip" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "" +msgstr "I-ligtas Lahat" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" @@ -7416,7 +7429,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp msgid "Search Results" -msgstr "" +msgstr "Bunga ng Paghahanap" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Scripts" @@ -7449,7 +7462,7 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Go to Function" -msgstr "" +msgstr "Tumungo sa Punsyon" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -7500,29 +7513,29 @@ msgstr "" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Go To" -msgstr "" +msgstr "Pumunta sa" #: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Cut" -msgstr "" +msgstr "Gupitin" #: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Select All" -msgstr "" +msgstr "Piliin Lahat" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" -msgstr "" +msgstr "Burahin ang Linya" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "" +msgstr "I-urong Pakaliwa" #: editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "" +msgstr "I-urong Pakanan" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" @@ -7595,11 +7608,11 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Go to Function..." -msgstr "" +msgstr "Pumunta sa Punsyon..." #: editor/plugins/script_text_editor.cpp msgid "Go to Line..." -msgstr "" +msgstr "Pumunta sa Linya..." #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -7930,7 +7943,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8808,6 +8826,11 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Baguhin ang Pangalan ng Resource" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8857,6 +8880,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Magdagdag ng Bagong Uri ng Item" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Ibahin ang Punong-Uri" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Ibahin ang Punong-Uri" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Ipakita ang Karaniwan" @@ -8873,8 +8910,19 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Magdagdag ng Bagong Uri ng Item" +#, fuzzy +msgid "Base Type" +msgstr "Ibahin ang Punong-Uri" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9559,18 +9607,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Mga Tugma:" @@ -10922,47 +10958,47 @@ msgstr "" #: editor/project_manager.cpp msgid "Scan" -msgstr "" +msgstr "Maghanap" #: editor/project_manager.cpp msgid "Scan Projects" -msgstr "" +msgstr "Maghanap ng mga Proyekto" #: editor/project_manager.cpp msgid "Select a Folder to Scan" -msgstr "" +msgstr "Pumili ng Folder na Paghahanapan" #: editor/project_manager.cpp msgid "New Project" -msgstr "" +msgstr "Bagong Proyekto" #: editor/project_manager.cpp msgid "Import Project" -msgstr "" +msgstr "Mag-angkat ng Proyekto" #: editor/project_manager.cpp msgid "Remove Project" -msgstr "" +msgstr "Alisin ang Proyekto" #: editor/project_manager.cpp msgid "Remove Missing" -msgstr "" +msgstr "Alisin ang Nawawala" #: editor/project_manager.cpp msgid "About" -msgstr "Tungkol sa Godot" +msgstr "Tungkol dito" #: editor/project_manager.cpp msgid "Asset Library Projects" -msgstr "" +msgstr "Mga Proyekto mula sa Asset Library" #: editor/project_manager.cpp msgid "Restart Now" -msgstr "" +msgstr "I-restart" #: editor/project_manager.cpp msgid "Remove All" -msgstr "" +msgstr "Alisin Lahat" #: editor/project_manager.cpp msgid "Also delete project contents (no undo!)" @@ -10970,17 +11006,20 @@ msgstr "" #: editor/project_manager.cpp msgid "Can't run project" -msgstr "" +msgstr "Hindi mapatakbo ang proyekto" #: editor/project_manager.cpp msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" msgstr "" +"Kasalukuyang wala ka pang mga proyekto.\n" +"Gusto mo bang pumunta sa mga opisyal na halimbawang proyekto sa Asset " +"Library?" #: editor/project_manager.cpp msgid "Filter projects" -msgstr "" +msgstr "Salain ang mga proyekto" #: editor/project_manager.cpp msgid "" @@ -10988,6 +11027,10 @@ msgid "" "To filter projects by name and full path, the query must contain at least " "one `/` character." msgstr "" +"Ang patlang na ito ay nagsasala sa mga proyekto ayon sa pangalan at hulihang " +"path component. \n" +"Upang sumala ng mga proyekto ayon sa pangalan at full path, dapat mayroong " +"kahit isang '/' na karakter sa paghahanap." #: editor/project_settings_editor.cpp msgid "Physical Key" @@ -12136,6 +12179,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Salain ang mga hudyat" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -12153,7 +12201,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "" +msgstr "Mga Tagasubaybay" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -13010,30 +13058,28 @@ msgid "Edit Member" msgstr "Ayusin ang Kasapi" #: modules/visual_script/visual_script_expression.cpp -#, fuzzy msgid "Expression" -msgstr "Ibahin ang Ekspresyon" +msgstr "Ekspresyon" #: modules/visual_script/visual_script_flow_control.cpp msgid "Return" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp -#, fuzzy msgid "Condition" -msgstr "animation" +msgstr "Kondisyon" #: modules/visual_script/visual_script_flow_control.cpp msgid "if (cond) is:" -msgstr "" +msgstr "if (kondisyon) ay:" #: modules/visual_script/visual_script_flow_control.cpp msgid "While" -msgstr "" +msgstr "While" #: modules/visual_script/visual_script_flow_control.cpp msgid "while (cond):" -msgstr "" +msgstr "while (kondisyon):" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator" @@ -13045,11 +13091,11 @@ msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Hindi iterable ang uri ng input: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "Naging invalid ang Iterator" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " @@ -13065,7 +13111,7 @@ msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "Switch" -msgstr "" +msgstr "Switch" #: modules/visual_script/visual_script_flow_control.cpp msgid "'input' is:" @@ -13078,7 +13124,7 @@ msgstr "Mga Uri:" #: modules/visual_script/visual_script_flow_control.cpp msgid "Is %s?" -msgstr "" +msgstr "%s ba?" #: modules/visual_script/visual_script_func_nodes.cpp msgid "On %s" @@ -13351,7 +13397,7 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Exporting APK..." -msgstr "" +msgstr "Iniluluwas ang APK..." #: platform/android/export/export_plugin.cpp msgid "Uninstalling..." @@ -13367,7 +13413,7 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Running on device..." -msgstr "" +msgstr "Tumatakbo sa device..." #: platform/android/export/export_plugin.cpp msgid "Could not execute on device." @@ -13433,7 +13479,7 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Invalid public key for APK expansion." -msgstr "" +msgstr "Di-wastong public key para sa APK expansion." #: platform/android/export/export_plugin.cpp msgid "Invalid package name:" @@ -13443,6 +13489,9 @@ msgstr "Di-wastong pangalan para sa pakete:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp @@ -13504,11 +13553,11 @@ msgstr "nagbalik ng may pagkakabigong #%d ang 'apksigner'" #: platform/android/export/export_plugin.cpp msgid "Verifying %s..." -msgstr "" +msgstr "Pinapatunayan ang %s..." #: platform/android/export/export_plugin.cpp msgid "'apksigner' verification of %s failed." -msgstr "" +msgstr "Nabigo ang pagpapatunay ng 'apksigner' ng %s." #: platform/android/export/export_plugin.cpp msgid "Exporting for Android" @@ -13561,7 +13610,7 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Building Android Project (gradle)" -msgstr "" +msgstr "Binibuild ang Android Project (gradle)" #: platform/android/export/export_plugin.cpp msgid "" @@ -13585,13 +13634,15 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Creating APK..." -msgstr "" +msgstr "Nililikha ang APK..." #: platform/android/export/export_plugin.cpp msgid "" "Could not find template APK to export:\n" "%s" msgstr "" +"Walang mahanap na template APK upang iluwas:\n" +"%s" #: platform/android/export/export_plugin.cpp msgid "" @@ -13603,11 +13654,11 @@ msgstr "" #: platform/android/export/export_plugin.cpp msgid "Adding files..." -msgstr "" +msgstr "Dinadagdag ang mga file..." #: platform/android/export/export_plugin.cpp msgid "Could not export project files" -msgstr "" +msgstr "Hindi mai-luwas ang mga project file" #: platform/android/export/export_plugin.cpp msgid "Aligning APK..." @@ -13635,11 +13686,11 @@ msgstr "" #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Ihinto ang HTTP Server" #: platform/javascript/export/export.cpp msgid "Run in Browser" -msgstr "" +msgstr "Patakbuhin sa Browser" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." @@ -13703,9 +13754,8 @@ msgid "Failed to extract thin binary." msgstr "" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Di-wastong pangalan." +msgstr "Di-wastong binary format." #: platform/osx/export/codesign.cpp msgid "Already signed!" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 87535e17f4..81253d421c 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -1539,6 +1539,11 @@ msgstr "Varsayılan Bus YerleÅŸim Düzenini Yükle." msgid "Create a new Bus Layout." msgstr "Yeni bir Bus YerleÅŸim Düzeni oluÅŸtur." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Audio Bus YerleÅŸim Düzenini Aç" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Geçersiz ad." @@ -2981,7 +2986,7 @@ msgstr "Dikkat-Dağıtmayan Kipine geç." msgid "Add a new scene." msgstr "Yeni bir sahne ekle." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Sahne" @@ -5756,6 +5761,10 @@ msgid "Bake Lightmaps" msgstr "Işık-Haritalarını PiÅŸir" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Işık Haritası piÅŸirme dosyası seçiniz:" @@ -8235,7 +8244,13 @@ msgid "Cinematic Preview" msgstr "Sinematik Önizleme" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "GLES2 iÅŸleyici kullanılırken kullanılamaz." #: editor/plugins/spatial_editor_plugin.cpp @@ -9130,6 +9145,11 @@ msgid "Select Another Theme Resource:" msgstr "BaÅŸka Bir Tema Kaynağı Seçin:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Kaynağı Yeniden Adlandır" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "BaÅŸka Bir Tema" @@ -9178,6 +9198,20 @@ msgstr "" "tipteki diÄŸer tüm StyleBox'larda aynı özellikleri güncelleyecektir." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Öğe Türü Ekle" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "DeÄŸiÅŸken Tipini Ayarla" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Temel Tipi DeÄŸiÅŸtir" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Varsayılanı Göster" @@ -9194,8 +9228,19 @@ msgid "Override all default type items." msgstr "Tüm varsayılan tür öğelerini geçersiz kıl." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Öğe Türü Ekle" +#, fuzzy +msgid "Base Type" +msgstr "Temel Tipi DeÄŸiÅŸtir" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9899,18 +9944,6 @@ msgid "Commit list size" msgstr "İşlem listesi boyutu" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Dallar" @@ -12642,6 +12675,11 @@ msgid "Stack Frames" msgstr "Çerçeveleri Yığ" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Döşemelerde Bul" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "Kesitçi" @@ -13963,9 +14001,10 @@ msgstr "Geçersiz paket ismi:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Geçersiz \"GodotPaymentV3\" modülü \"android/modüller\" proje ayarına dahil " -"edildi (Godot 3.2.2'de deÄŸiÅŸtirildi).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/tt.po b/editor/translations/tt.po index 8459c61d41..afad464d26 100644 --- a/editor/translations/tt.po +++ b/editor/translations/tt.po @@ -1438,6 +1438,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2787,7 +2791,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5429,6 +5433,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7854,7 +7862,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8729,6 +8742,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8775,6 +8792,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8791,7 +8820,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9469,18 +9508,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12034,6 +12061,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13317,6 +13348,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po index 3b2ebd6275..478dc7420f 100644 --- a/editor/translations/tzm.po +++ b/editor/translations/tzm.po @@ -1436,6 +1436,10 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +msgid "Audio Bus Layout" +msgstr "" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2785,7 +2789,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5427,6 +5431,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "" @@ -7852,7 +7860,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8727,6 +8740,10 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Theme Resource" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -8773,6 +8790,18 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Variation Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Set Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -8789,7 +8818,17 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +msgid "Base Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9465,18 +9504,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12030,6 +12057,10 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Filter stack variables" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13313,6 +13344,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 63a2ecc734..d5e68f8a84 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -23,7 +23,7 @@ msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-01-24 02:05+0000\n" +"PO-Revision-Date: 2022-02-16 16:36+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -1497,6 +1497,11 @@ msgstr "Завантажити типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ð½Ð¸." msgid "Create a new Bus Layout." msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ð½Ð¸." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Відкрити ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾ шини" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Ðекоректна назва." @@ -2117,7 +2122,6 @@ msgstr "КлаÑ:" #: editor/editor_help.cpp editor/scene_tree_editor.cpp #: editor/script_create_dialog.cpp -#, fuzzy msgid "Inherits:" msgstr "УÑпадковує:" @@ -2884,9 +2888,8 @@ msgstr "Видалити компонуваннÑ" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp -#, fuzzy msgid "Default" -msgstr "За замовчуваннÑм" +msgstr "Типовий" #: editor/editor_node.cpp editor/editor_resource_picker.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp @@ -2949,7 +2952,7 @@ msgstr "Перемкнути режим без відволіканнÑ." msgid "Add a new scene." msgstr "Додати нову Ñцену." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Сцена" @@ -3325,14 +3328,12 @@ msgid "Update Continuously" msgstr "Оновлювати неперервно" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "Оновлювати при зміні" +msgstr "Оновити уÑÑ– зміни" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "Зміни матеріалу:" +msgstr "Оновити критичні зміни" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4111,6 +4112,11 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"Цей ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð² файлів не розпізнано редактором.\n" +"Якщо ви хочете виконати Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¿Ñ€Ð¸ це, ÑкориÑтайтеÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¾ÑŽ Ð´Ð»Ñ " +"ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ операційної ÑиÑтеми.\n" +"ПіÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð· заÑтоÑуваннÑм невідомого ÑуфікÑа назви, редактор " +"більше не показуватиме файл у ÑпиÑку." #: editor/filesystem_dock.cpp msgid "" @@ -5731,6 +5737,10 @@ msgid "Bake Lightmaps" msgstr "Запікати карти оÑвітленнÑ" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "Виберіть файл Ð¿Ñ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ оÑвітленнÑ:" @@ -8218,7 +8228,13 @@ msgid "Cinematic Preview" msgstr "Кінематичний переглÑд" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Є недоÑтупним, Ñкщо викориÑтовуєтьÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸Ðº GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9115,6 +9131,11 @@ msgid "Select Another Theme Resource:" msgstr "Виберіть реÑÑƒÑ€Ñ Ñ–Ð½ÑˆÐ¾Ñ— теми:" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "Перейменувати реÑурÑ" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "Інша тема" @@ -9164,6 +9185,20 @@ msgstr "" "цього типу." #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "Додати тип запиÑу" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Ð’Ñтановити тип змінної" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Змінити базовий тип" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "Показати типовий" @@ -9181,8 +9216,19 @@ msgid "Override all default type items." msgstr "Перевизначити уÑÑ– запиÑи Ñтандартних типів." #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "Додати тип запиÑу" +#, fuzzy +msgid "Base Type" +msgstr "Змінити базовий тип" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9890,18 +9936,6 @@ msgid "Commit list size" msgstr "Розмір ÑпиÑку внеÑку" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "Гілки" @@ -12655,6 +12689,11 @@ msgid "Stack Frames" msgstr "СтоÑувати кадри" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Фільтрувати плитки" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "ЗаÑіб профілюваннÑ" @@ -12828,14 +12867,12 @@ msgid "Set Occluder Sphere Position" msgstr "Ð’Ñтановити позицію Ñфери закупорюваннÑ" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "Задати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ порталу" +msgstr "Задати Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ затінювального багатокутника" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "Задати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ кривої" +msgstr "Задати Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ отвору затінюваннÑ" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -13978,9 +14015,10 @@ msgstr "Ðекоректна назва пакунка:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Ðекоректний модуль «GodotPaymentV3» включено до параметрів проєкту «android/" -"modules» (змінено у Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -14250,166 +14288,167 @@ msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби запуÑку Ñервера #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до файлової ÑиÑтеми." #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ хеш-Ñуму Info.plist." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "Ðекоректна назва проєкту." +msgstr "Ðекоректний вміÑÑ‚ Info.plist — немає назви виконуваного файла." #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "Ðекоректний вміÑÑ‚ Info.plist — немає ідентифікатора комплекту." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "Ðекоректна геометріÑ, неможливо Ñтворити багатокутник." +msgstr "Ðекоректний вміÑÑ‚ Info.plist — не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "Ðеможливо Ñтворити теку." +msgstr "Ðе вдалоÑÑ Ñтворити підтеку «%s»." #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ «тонкі» двійкові дані." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "Ðекоректний базовий шлÑÑ…." +msgstr "Ðекоректний формат двійкових даних." #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "Вже підпиÑано!" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ." +msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ вкладені реÑурÑи." #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "Ðе вдалоÑÑ Ñтворити підтеку _CodeSignature." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ." +msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ хеш-Ñуму CodeResources." #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "Ðекоректний ÑуфікÑ." +msgstr "Ðекоректний файл найменувань." #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "Ðекоректний ÑуфікÑ." +msgstr "Ðекоректний виконуваний файл." #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ розмір команди Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñу." #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "Ðе вдалоÑÑ Ñтворити «товÑті» двійкові дані." #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "Ðевідомий тип комплекту." #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "Ðевідомий тип об'єктів." #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." msgstr "" +"ЗауваженнÑ: процедура заÑвідченнÑ, загалом, триває не більше години. Щойно " +"процедуру буде завершено, ви отримаєте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾ÑŽ поштою." #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" msgstr "" +"Ви можете Ñтежити за поÑтупом вручну — відкрийте термінал Ñ– віддайте у ньому " +"таку команду:" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" msgstr "" +"Віддайте таку команду Ð´Ð»Ñ Ð´Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐ²Ð¸Ñ‚ÐºÐ° заÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ екÑпортованої " +"програми (необов'Ñзкова процедура):" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "Піктограм не знайдено." +msgstr "Ðе знайдено профілю." #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "Створюємо мініатюру" +msgstr "Створюємо комплект програми" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ шаблон APK Ð´Ð»Ñ ÐµÐºÑпортуваннÑ:\n" -"%s" +msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ програму-шаблон Ð´Ð»Ñ ÐµÐºÑпортуваннÑ:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" msgstr "" +"У цій операційній ÑиÑтемі не передбачено підтримки відноÑних Ñимволічних " +"поÑилань. ЕкÑпортований проєкт може виÑвитиÑÑ Ð½ÐµÐ¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¸Ð¼!" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." msgstr "" +"Ðе знайдено двійкового файла шаблона «%s». Ймовірно, його немає у вашому " +"архіві шаблона." #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "Створюємо PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." msgstr "" +"Ð”Ð»Ñ Ð¾Ð´Ð½Ð¾Ñ€Ð°Ð·Ð¾Ð²Ð¾ підпиÑаних програм потрібен параметр «Вимкнути перевірку " +"бібліотек» Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… бібліотек." #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "Комплект із підпиÑуваннÑм коду" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "Створюємо DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "DMG із підпиÑуваннÑм коду" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "Створюємо ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." msgstr "" +"Ð”Ð»Ñ Ð·Ð°ÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ Ñлід Ñпочатку архівувати. Виберіть заміÑть " +"поточного формат екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ DMG або ZIP." #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "ÐадÑилаємо архів Ð´Ð»Ñ Ð·Ð°ÑвідченнÑ" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14420,31 +14459,36 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"ПопередженнÑ: у параметрах редактора вибрано вбудований «codesign». " +"ПідпиÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ обмежено одноразовим підпиÑом." #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"ПопередженнÑ: не вÑтановлено інÑтрументи командного Ñ€Ñдка Xcode, " +"викориÑтовуємо вбудований «codesign». ПідпиÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ обмежено одноразовим " +"підпиÑом." #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." msgstr "" +"ЗаÑвідченнÑ: підтримки заÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð· одноразовим підпиÑом не передбачено." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "ЗаÑвідченнÑ: потрібен код підпиÑуваннÑ." +msgstr "ЗаÑвідченнÑ: Ð´Ð»Ñ Ð·Ð°ÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ підпиÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "ЗаÑвідченнÑ: потрібне Ñтійке Ñередовище запуÑку." +msgstr "ЗаÑвідченнÑ: Ð´Ð»Ñ Ð·Ð°ÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ Ñтійке Ñередовище запуÑку." #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "ЗаÑвідченнÑ: потрібне Ñтійке Ñередовище запуÑку." +msgstr "" +"ЗаÑвідченнÑ: Ð´Ð»Ñ Ð·Ð°ÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ Ñередовище запуÑку із чаÑовими " +"позначками." #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14459,63 +14503,86 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"ПопередженнÑ: заÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾. ЕкÑпортований проєкт буде заблоковано " +"Gatekeeper, Ñкщо його отримано з невідомого джерела." #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"ПідпиÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ вимкнено. ЕкÑпортований проєкт не запуÑкатиметьÑÑ Ð½Ð° Macіз " +"Gatekeeper та Mac на оÑнові Apple Silicon." #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" msgstr "" +"Стійке Ñередовище запуÑку Ñ” неÑуміÑним із одноразовим підпиÑом — його буде " +"вимкнено!" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" msgstr "" +"ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñових позначок Ñ” неÑуміÑним із одноразовим підпиÑом — його " +"буде вимкнено!" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"ПопередженнÑ: підтримки заÑÐ²Ñ–Ð´Ñ‡ÐµÐ½Ð½Ñ Ñƒ цій операційній ÑиÑтемі не " +"передбачено. ЕкÑпортований проєкт буде заблоковано Gatekeeper, Ñкщо його " +"отримано із невідомого джерела." #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." msgstr "" +"КонфіденційніÑть: увімкнено доÑтуп до мікрофона, але Ð¾Ð¿Ð¸Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð½Ðµ " +"вказано." #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." msgstr "" +"КонфіденційніÑть: увімкнено доÑтуп до камери, але Ð¾Ð¿Ð¸Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð½Ðµ " +"вказано." #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." msgstr "" +"КонфіденційніÑть: увімкнено доÑтуп до даних щодо міÑÑ†Ñ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ð½Ð½Ñ, але Ð¾Ð¿Ð¸Ñ " +"викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ðµ вказано." #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." msgstr "" +"КонфіденційніÑть: увімкнено доÑтуп до адреÑної книги, але Ð¾Ð¿Ð¸Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ " +"не вказано." #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." msgstr "" +"КонфіденційніÑть: увімкнено доÑтуп до календарÑ, але Ð¾Ð¿Ð¸Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð½Ðµ " +"вказано." #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." msgstr "" +"КонфіденційніÑть: увімкнено доÑтуп до бібліотеки фотографій, але Ð¾Ð¿Ð¸Ñ " +"викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ðµ вказано." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14584,21 +14651,21 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"Щоб мати змогу змінювати піктограму або дані щодо програми, має бути " +"налаштовано інÑтрумент rcedit у параметрах редактора (ЕкÑпорт > Windows > " +"Rcedit)." #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "Ðеправильний шлÑÑ…." +msgstr "Ðекоректний шлÑÑ… до піктограм:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "Ðекоректний ÑуфікÑ." +msgstr "Ðекоректна верÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°:" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "Ðекоректний GUID продукту." +msgstr "Ðекоректна верÑÑ–Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ñƒ:" #: scene/2d/animated_sprite.cpp msgid "" @@ -15344,14 +15411,13 @@ msgstr "" "Цей вузол вважаєтьÑÑ Ð·Ð°Ñтарілим. СкориÑтайтеÑÑ Ð·Ð°Ð¼Ñ–Ñть нього AnimationTree." #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" "RMB: Remove preset" msgstr "" "Колір: #%s\n" -"Ліва кнопка: вÑтановити колір\n" +"Ліва кнопка: заÑтоÑувати колір\n" "Права кнопка: вилучити взірець" #: scene/gui/color_picker.cpp diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 90156465b3..3febf6aebe 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -1463,6 +1463,11 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr ".تمام کا انتخاب" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "" @@ -2844,7 +2849,7 @@ msgstr "" msgid "Add a new scene." msgstr "" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "" @@ -5555,6 +5560,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr ".تمام کا انتخاب" @@ -8061,7 +8070,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -8979,6 +8993,11 @@ msgid "Select Another Theme Resource:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr ".تمام کا انتخاب" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "" @@ -9026,6 +9045,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "" @@ -9042,7 +9075,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -9769,18 +9813,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "" @@ -12395,6 +12427,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "سب سکریپشن بنائیں" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -13739,6 +13776,9 @@ msgstr "" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 12cb91b7f9..3590c07d79 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -18,14 +18,14 @@ # LetterC67 <hoangdeptoong@gmail.com>, 2020, 2021. # Rev <revolnoom7801@gmail.com>, 2021. # SyliawDeV <thanhlongstranger@gmail.com>, 2021. -# IoeCmcomc <hopdaigia2004@gmail.com>, 2021. +# IoeCmcomc <hopdaigia2004@gmail.com>, 2021, 2022. # Hung <hungthitkhia@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-09-15 00:46+0000\n" +"PO-Revision-Date: 2022-02-26 10:27+0000\n" "Last-Translator: IoeCmcomc <hopdaigia2004@gmail.com>\n" "Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/" "godot/vi/>\n" @@ -34,7 +34,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.9-dev\n" +"X-Generator: Weblate 4.11.1-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -815,7 +815,7 @@ msgid "" "target node." msgstr "" "Phương thức không được tìm thấy. Chỉ định phương thức hợp lệ hoặc Ä‘Ãnh kèm " -"tệp lệnh và o nút." +"táºp lệnh và o nút." #: editor/connections_dialog.cpp msgid "Connect to Node:" @@ -1495,6 +1495,11 @@ msgstr "Nạp bố cục Bus mặc định." msgid "Create a new Bus Layout." msgstr "Tạo bố cục Bus má»›i." +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "Mở bố cục Bus âm thanh" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "Tên không hợp lệ." @@ -2103,7 +2108,7 @@ msgstr "Lá»›p:" #: editor/editor_help.cpp editor/scene_tree_editor.cpp #: editor/script_create_dialog.cpp msgid "Inherits:" -msgstr "Thừa kế:" +msgstr "Kế thừa:" #: editor/editor_help.cpp msgid "Inherited by:" @@ -2145,7 +2150,7 @@ msgstr "Mà u" #: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp msgid "Constants" -msgstr "Hằng số" +msgstr "Hằng" #: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -2924,7 +2929,7 @@ msgstr "Báºt tắt chế độ táºp trung." msgid "Add a new scene." msgstr "Thêm cảnh má»›i." -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "Cảnh" @@ -5674,6 +5679,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "Chá»n tệp bake lightmap:" @@ -8203,7 +8212,13 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "Không khả dụng khi sá» dụng trình kết xuất GLES2." #: editor/plugins/spatial_editor_plugin.cpp @@ -9145,6 +9160,11 @@ msgstr "Xóa tà i nguyên" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "Äổi tên tà i nguyên" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "Nháºp Tông mà u" @@ -9199,6 +9219,21 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Add Item Type" +msgstr "Thêm mục" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "Äặt loại biến" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "Thay đổi loại cÆ¡ sở" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Show Default" msgstr "Nạp mặc định" @@ -9217,8 +9252,18 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy -msgid "Add Item Type" -msgstr "Thêm mục" +msgid "Base Type" +msgstr "Thay đổi loại cÆ¡ sở" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -9934,18 +9979,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "Phù hợp:" @@ -10056,7 +10089,7 @@ msgstr "Tá»· lệ" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector" -msgstr "Vector" +msgstr "Véc tÆ¡" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean" @@ -10178,11 +10211,11 @@ msgstr "hà m Ä‘en trắng" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "Chuyển vector mà u HSV sang RGB tương ứng." +msgstr "Chuyển véc tÆ¡ mà u HSV sang RGB tương ứng." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "Chuyển vector mà u RGB sang HSV tương ứng." +msgstr "Chuyển véc tÆ¡ mà u RGB sang HSV tương ứng." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." @@ -10622,16 +10655,16 @@ msgid "" "whose number of rows is the number of components in 'c' and whose number of " "columns is the number of components in 'r'." msgstr "" -"TÃnh tÃch ngoà i cá»§a má»™t cặp vector.\n" +"TÃnh tÃch ngoà i cá»§a má»™t cặp véc tÆ¡.\n" "\n" -"TÃch ngoà i đặt tham số 'c' đầu tiên là m vector dá»c (ma tráºn 1 cá»™t) và tham " -"số 'h' thứ hai là vector ngang (ma tráºn 1 hà ng) rồi thá»±c hiện phép nhân ma " -"tráºn tuyến tÃnh 'c * h', tạo ra ma tráºn có số hà ng bằng số phần tá» trong 'h' " -"và số cá»™t bằng số phần tá» trong 'c'." +"TÃch ngoà i coi tham số 'c' đầu tiên là véc tÆ¡ dá»c (ma tráºn 1 cá»™t) và tham số " +"'h' thứ hai là véc tÆ¡ ngang (ma tráºn 1 hà ng) rồi thá»±c hiện phép nhân ma tráºn " +"tuyến tÃnh 'c * h', tạo ra ma tráºn có số hà ng bằng số phần tá» trong 'h' và " +"số cá»™t bằng số phần tá» trong 'c'." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes transform from four vectors." -msgstr "Tạo phép biến đổi từ 4 vector." +msgstr "Tạo phép biến đổi từ 4 véc tÆ¡." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes transform to four vectors." @@ -10655,7 +10688,7 @@ msgstr "Nhân hai phép biến đổi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by transform." -msgstr "Nhân vector vá»›i phép biến đổi." +msgstr "Nhân véc tÆ¡ vá»›i phép biến đổi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Transform constant." @@ -10668,11 +10701,11 @@ msgstr "Tạo" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector function." -msgstr "Hà m Vector." +msgstr "Hà m véc tÆ¡." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector operator." -msgstr "" +msgstr "Toán tá» véc tÆ¡." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes vector from three scalars." @@ -10680,7 +10713,7 @@ msgstr "Tạo vector từ ba giá trị vô hướng." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes vector to three scalars." -msgstr "Tách vector thà nh ba giá trị vô hướng." +msgstr "Tách véc tÆ¡ thà nh ba giá trị vô hướng." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the cross product of two vectors." @@ -10692,7 +10725,7 @@ msgstr "Trả vá» khoảng cách giữa hai Ä‘iểm." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the dot product of two vectors." -msgstr "TÃnh tÃch vô hướng cá»§a hai vector." +msgstr "TÃnh tÃch vô hướng cá»§a hai véc tÆ¡." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -10704,7 +10737,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the length of a vector." -msgstr "TÃnh chiá»u dà i vector." +msgstr "TÃnh chiá»u dà i cá»§a má»™t véc tÆ¡." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two vectors." @@ -10716,27 +10749,27 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the normalize product of vector." -msgstr "TÃnh tÃch chuẩn hóa cá»§a vector." +msgstr "TÃnh tÃch chuẩn hóa cá»§a véc tÆ¡." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - vector" -msgstr "1.0 - vector" +msgstr "1.0 - véc tÆ¡" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / vector" -msgstr "1.0 / vector" +msgstr "1.0 / véc tÆ¡" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the vector that points in the direction of reflection ( a : incident " "vector, b : normal vector )." msgstr "" -"Trả vá» vector chỉ hướng phản xạ ( a : vector tia tá»›i, b : vector pháp " +"Trả vá» véc tÆ¡ chỉ hướng phản xạ ( a : vector tia tá»›i, b : vector pháp " "tuyến )." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the vector that points in the direction of refraction." -msgstr "Trả vá» vector chỉ hướng khúc xạ." +msgstr "Trả vá» véc tÆ¡ chỉ theo hướng khúc xạ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -11879,7 +11912,7 @@ msgstr "Tên nút" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "Tên cha mẹ cá»§a nút, nếu có sẵn" +msgstr "Tên cá»§a nút mẹ, nếu có sẵn" #: editor/rename_dialog.cpp msgid "Node type" @@ -11981,7 +12014,7 @@ msgstr "Tại kà tá»± %s" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "Äổi cha mẹ cá»§a nút" +msgstr "Äổi mẹ cá»§a nút" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" @@ -11993,7 +12026,7 @@ msgstr "" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "Äổi nút cha" +msgstr "Äổi nút mẹ" #: editor/run_settings_dialog.cpp msgid "Run Mode:" @@ -12063,11 +12096,11 @@ msgstr "Thao tác nà y không thể áp dụng lên gốc cá»§a cây." #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" -msgstr "Chuyển nút trong cha mẹ" +msgstr "Di chuyển nút trong nút mẹ" #: editor/scene_tree_dock.cpp msgid "Move Nodes In Parent" -msgstr "Di chuyển các nút trong cha mẹ" +msgstr "Di chuyển các nút trong nút mẹ" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" @@ -12076,8 +12109,8 @@ msgstr "Nhân đôi các nút" #: editor/scene_tree_dock.cpp msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." msgstr "" -"Không thể đổi cha mẹ các nút trong cảnh kế thừa, thứ tá»± các nút không thể " -"thay đổi." +"Không thể đổi mẹ cá»§a các nút trong cảnh kế thừa, thứ tá»± các nút không thể " +"được thay đổi." #: editor/scene_tree_dock.cpp msgid "Node must belong to the edited scene to become root." @@ -12285,7 +12318,7 @@ msgstr "Äổi Kiểu" #: editor/scene_tree_dock.cpp msgid "Reparent to New Node" -msgstr "Reparent đến nút má»›i" +msgstr "Thay nút mẹ thà nh nút má»›i" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -12526,7 +12559,7 @@ msgstr "Tên Lá»›p không hợp lệ." #: editor/script_create_dialog.cpp msgid "Invalid inherited parent name or path." -msgstr "" +msgstr "Tên hoặc đưá»ng dẫn nút mẹ được kế thừa không hợp lệ." #: editor/script_create_dialog.cpp #, fuzzy @@ -12663,6 +12696,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "Lá»c ô" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14026,9 +14064,10 @@ msgstr "Tên gói không hợp lệ:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"Cà i đặt dá»± án chứa module không hợp lệ \"GodotPaymentV3\" ở mục \"android/" -"modules\" (đã thay đổi từ Godot 3.2.2).\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 0675b564d3..47b66ad06d 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -88,7 +88,7 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2022-02-12 21:43+0000\n" +"PO-Revision-Date: 2022-03-08 15:20+0000\n" "Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" @@ -97,7 +97,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.11-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -683,7 +683,7 @@ msgstr "优化动画" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation" -msgstr "清空动画" +msgstr "清ç†åŠ¨ç”»" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" @@ -723,19 +723,19 @@ msgstr "ç§»é™¤æ— æ•ˆå¸§" #: editor/animation_track_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "移除未分解的空轨é“" +msgstr "ç§»é™¤æ— æ³•è§£æžçš„轨é“和空轨é“" #: editor/animation_track_editor.cpp msgid "Clean-up all animations" -msgstr "清除所有动画" +msgstr "æ¸…ç†æ‰€æœ‰åŠ¨ç”»" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "æ¸…é™¤åŠ¨ç”»ï¼ˆæ— æ³•æ’¤é”€ï¼ï¼‰" +msgstr "清ç†åŠ¨ç”»ï¼ˆæ— æ³•æ’¤é”€ï¼ï¼‰" #: editor/animation_track_editor.cpp msgid "Clean-Up" -msgstr "清空" +msgstr "清ç†" #: editor/animation_track_editor.cpp msgid "Scale Ratio:" @@ -1538,6 +1538,11 @@ msgstr "åŠ è½½é»˜è®¤æ€»çº¿å¸ƒå±€ã€‚" msgid "Create a new Bus Layout." msgstr "创建新的总线布局。" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "打开音频总线布局" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "åç§°æ— æ•ˆã€‚" @@ -2930,7 +2935,7 @@ msgstr "切æ¢ä¸“注模å¼ã€‚" msgid "Add a new scene." msgstr "æ·»åŠ æ–°åœºæ™¯ã€‚" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "场景" @@ -3290,14 +3295,12 @@ msgid "Update Continuously" msgstr "æŒç»æ›´æ–°" #: editor/editor_node.cpp -#, fuzzy msgid "Update All Changes" -msgstr "当有更改时更新" +msgstr "更新所有修改" #: editor/editor_node.cpp -#, fuzzy msgid "Update Vital Changes" -msgstr "æè´¨å˜æ›´ï¼š" +msgstr "更新关键修改" #: editor/editor_node.cpp msgid "Hide Update Spinner" @@ -4050,6 +4053,9 @@ msgid "" "After renaming to an unknown extension, the file won't be shown in the " "editor anymore." msgstr "" +"ç¼–è¾‘å™¨æ— æ³•è¯†åˆ«è¯¥æ–‡ä»¶æ‰©å±•å。\n" +"å¦‚æžœä½ ä»è¦é‡å‘½å,请使用æ“作系统的文件管ç†å™¨ã€‚\n" +"在é‡å‘½å为未知扩展ååŽï¼Œæ”¹æ–‡ä»¶ä¸ä¼šå†åœ¨ç¼–è¾‘å™¨ä¸æ˜¾ç¤ºã€‚" #: editor/filesystem_dock.cpp msgid "" @@ -5135,7 +5141,7 @@ msgstr "接下æ¥ï¼ˆè‡ªåŠ¨é˜Ÿåˆ—ï¼‰ï¼š" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "跨动画时间混åˆ" +msgstr "è·¨åŠ¨ç”»æ··åˆæ—¶é—´" #: editor/plugins/animation_state_machine_editor.cpp msgid "Move Node" @@ -5638,6 +5644,10 @@ msgid "Bake Lightmaps" msgstr "烘焙光照贴图" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "选择光照贴图烘焙文件:" @@ -8094,7 +8104,13 @@ msgid "Cinematic Preview" msgstr "效果预览" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "使用 GLES2 渲染器时ä¸å¯ç”¨ã€‚" #: editor/plugins/spatial_editor_plugin.cpp @@ -8982,6 +8998,11 @@ msgid "Select Another Theme Resource:" msgstr "选择其他主题资æºï¼š" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "é‡å‘½å资æº" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "其他主题" @@ -9029,6 +9050,20 @@ msgstr "" "å°†æ¤æ ·å¼ç›’ç½®é¡¶ä¸ºä¸»æ ·å¼ã€‚ç¼–è¾‘å…¶å±žæ€§ä¼šæ›´æ–°è¯¥ç±»åž‹ä¸‹å…¶ä»–æ‰€æœ‰æ ·å¼ç›’的相åŒå±žæ€§ã€‚" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "æ·»åŠ é¡¹ç›®ç±»åž‹" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "设置å˜é‡ç±»åž‹" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "修改基础类型" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "显示默认" @@ -9045,8 +9080,19 @@ msgid "Override all default type items." msgstr "覆盖所有默认类型项目。" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "æ·»åŠ é¡¹ç›®ç±»åž‹" +#, fuzzy +msgid "Base Type" +msgstr "修改基础类型" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9739,18 +9785,6 @@ msgid "Commit list size" msgstr "æäº¤åˆ—表大å°" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "10" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "20" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "30" - -#: editor/plugins/version_control_editor_plugin.cpp msgid "Branches" msgstr "分支" @@ -12415,6 +12449,11 @@ msgid "Stack Frames" msgstr "æ ˆå¸§" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "ç›é€‰å›¾å—" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "性能分æžå™¨" @@ -12588,14 +12627,12 @@ msgid "Set Occluder Sphere Position" msgstr "è®¾ç½®é®æŒ¡çƒä½“ä½ç½®" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Polygon Point Position" -msgstr "设置入å£é¡¶ç‚¹ä½ç½®" +msgstr "è®¾ç½®é®æŒ¡å¤šè¾¹å½¢é¡¶ç‚¹ä½ç½®" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Set Occluder Hole Point Position" -msgstr "设置曲线的顶点ä½ç½®" +msgstr "è®¾ç½®é®æŒ¡ç©ºæ´žé¡¶ç‚¹ä½ç½®" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Radius" @@ -13705,9 +13742,10 @@ msgstr "æ— æ•ˆçš„åŒ…å称:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"“android/modulesâ€ é¡¹ç›®è®¾ç½®ï¼ˆå˜æ›´äºŽGodot 3.2.2)ä¸åŒ…å«äº†æ— 效模组 " -"“GodotPaymentV3â€ã€‚\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." @@ -13952,166 +13990,153 @@ msgstr "å¯åЍ HTTP æœåŠ¡å™¨æ—¶å‡ºé”™ï¼š" #: platform/osx/export/codesign.cpp msgid "Can't get filesystem access." -msgstr "" +msgstr "æ— æ³•è®¿é—®æ–‡ä»¶ç³»ç»Ÿã€‚" #: platform/osx/export/codesign.cpp msgid "Failed to get Info.plist hash." -msgstr "" +msgstr "èŽ·å– Info.plist 哈希失败。" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, no exe name." -msgstr "项目åç§°æ— æ•ˆã€‚" +msgstr "Info.plist æ— æ•ˆï¼Œæ²¡æœ‰å¯æ‰§è¡Œæ–‡ä»¶å称。" #: platform/osx/export/codesign.cpp msgid "Invalid Info.plist, no bundle id." -msgstr "" +msgstr "Info.plist æ— æ•ˆï¼Œæ²¡æœ‰æ†ç»‘包 ID。" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid Info.plist, can't load." -msgstr "æ— æ•ˆçš„å‡ ä½•ä½“ï¼Œæ— æ³•åˆ›å»ºå¤šè¾¹å½¢ã€‚" +msgstr "Info.plist æ— æ•ˆï¼Œæ— æ³•åŠ è½½ã€‚" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to create \"%s\" subfolder." -msgstr "æ— æ³•åˆ›å»ºæ–‡ä»¶å¤¹ã€‚" +msgstr "创建“%sâ€å文件夹失败。" #: platform/osx/export/codesign.cpp msgid "Failed to extract thin binary." -msgstr "" +msgstr "æå–瘦二进制文件失败。" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid binary format." -msgstr "æ— æ•ˆçš„åŸºæœ¬è·¯å¾„ã€‚" +msgstr "äºŒè¿›åˆ¶æ ¼å¼æ— 效。" #: platform/osx/export/codesign.cpp msgid "Already signed!" -msgstr "" +msgstr "ç¾åå·²å˜åœ¨ï¼" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to process nested resources." -msgstr "åŠ è½½èµ„æºå¤±è´¥ã€‚" +msgstr "处ç†åµŒå¥—资æºå¤±è´¥ã€‚" #: platform/osx/export/codesign.cpp msgid "Failed to create _CodeSignature subfolder." -msgstr "" +msgstr "创建 _CodeSignature åæ–‡ä»¶å¤¹å¤±è´¥ã€‚" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Failed to get CodeResources hash." -msgstr "åŠ è½½èµ„æºå¤±è´¥ã€‚" +msgstr "èŽ·å– CodeResources 哈希失败。" #: platform/osx/export/codesign.cpp platform/osx/export/export.cpp -#, fuzzy msgid "Invalid entitlements file." -msgstr "æ‰©å±•åæ— 效。" +msgstr "æŽˆæƒæ–‡ä»¶æ— 效。" #: platform/osx/export/codesign.cpp -#, fuzzy msgid "Invalid executable file." -msgstr "æ‰©å±•åæ— 效。" +msgstr "坿‰§è¡Œæ–‡ä»¶æ— 效。" #: platform/osx/export/codesign.cpp msgid "Can't resize signature load command." -msgstr "" +msgstr "æ— æ³•æ”¹å˜ç¾ååŠ è½½å‘½ä»¤çš„å¤§å°ã€‚" #: platform/osx/export/codesign.cpp msgid "Failed to create fat binary." -msgstr "" +msgstr "æ— æ³•åˆ›å»ºèƒ–äºŒè¿›åˆ¶ã€‚" #: platform/osx/export/codesign.cpp msgid "Unknown bundle type." -msgstr "" +msgstr "未知æ†ç»‘包类型。" #: platform/osx/export/codesign.cpp msgid "Unknown object type." -msgstr "" +msgstr "未知对象类型。" #: platform/osx/export/export.cpp msgid "" "Note: The notarization process generally takes less than an hour. When the " "process is completed, you'll receive an email." -msgstr "" +msgstr "注æ„:公è¯è¿‡ç¨‹é€šå¸¸å°‘äºŽä¸€ä¸ªå°æ—¶ã€‚过程结æŸåŽï¼Œä½ 会收到一å°é‚®ä»¶ã€‚" #: platform/osx/export/export.cpp msgid "" "You can check progress manually by opening a Terminal and running the " "following command:" -msgstr "" +msgstr "ä½ å¯ä»¥æ‰‹åŠ¨æ£€æŸ¥è¿›åº¦ï¼Œè¯·æ‰“å¼€ç»ˆç«¯å¹¶è¿è¡Œä»¥ä¸‹å‘½ä»¤ï¼š" #: platform/osx/export/export.cpp msgid "" "Run the following command to staple the notarization ticket to the exported " "application (optional):" -msgstr "" +msgstr "è¿è¡Œä»¥ä¸‹å‘½ä»¤å°†å…¬è¯ç¥¨è¯è£…订到导出的应用ä¸ï¼ˆå¯é€‰ï¼‰ï¼š" #: platform/osx/export/export.cpp -#, fuzzy msgid "No identity found." -msgstr "æ²¡æœ‰å›¾æ ‡ã€‚" +msgstr "没有找到身份。" #: platform/osx/export/export.cpp -#, fuzzy msgid "Creating app bundle" -msgstr "æ£åœ¨åˆ›å»ºç¼©ç•¥å›¾" +msgstr "æ£åœ¨åˆ›å»ºåº”用æ†ç»‘包" #: platform/osx/export/export.cpp -#, fuzzy msgid "Could not find template app to export:" -msgstr "" -"找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ APK:\n" -"%s" +msgstr "æ— æ³•æ‰¾åˆ°å¯¼å‡ºçš„æ¨¡æ¿åº”用:" #: platform/osx/export/export.cpp msgid "" "Relative symlinks are not supported on this OS, the exported project might " "be broken!" -msgstr "" +msgstr "该æ“ä½œç³»ç»Ÿä¸Šä¸æ”¯æŒç›¸å¯¹ç¬¦å·é“¾æŽ¥ï¼Œå¯¼å‡ºçš„项目å¯èƒ½æŸåï¼" #: platform/osx/export/export.cpp msgid "" "Requested template binary '%s' not found. It might be missing from your " "template archive." -msgstr "" +msgstr "未找到请求的二进制模æ¿â€œ%sâ€ã€‚ä½ çš„æ¨¡æ¿å½’æ¡£ä¸å¯èƒ½ç¼ºå¤±è¯¥æ–‡ä»¶ã€‚" #: platform/osx/export/export.cpp msgid "Making PKG" -msgstr "" +msgstr "æ£åœ¨åˆ¶ä½œ PKG" #: platform/osx/export/export.cpp msgid "" "Ad-hoc signed applications require the 'Disable Library Validation' " "entitlement to load dynamic libraries." -msgstr "" +msgstr "Ad-hoc ç¾å的应用需è¦â€œDisable Library Validationâ€æŽˆæƒæ‰èƒ½åŠ è½½åŠ¨æ€åº“。" #: platform/osx/export/export.cpp msgid "Code signing bundle" -msgstr "" +msgstr "æ£åœ¨å¯¹æ†ç»‘包进行代ç ç¾å" #: platform/osx/export/export.cpp msgid "Making DMG" -msgstr "" +msgstr "æ£åœ¨åˆ¶ä½œ DMG" #: platform/osx/export/export.cpp msgid "Code signing DMG" -msgstr "" +msgstr "æ£åœ¨å¯¹ DMG 进行代ç ç¾å" #: platform/osx/export/export.cpp msgid "Making ZIP" -msgstr "" +msgstr "æ£åœ¨åˆ¶ä½œ ZIP" #: platform/osx/export/export.cpp msgid "" "Notarization requires the app to be archived first, select the DMG or ZIP " "export format instead." -msgstr "" +msgstr "å…¬è¯è¦æ±‚该应用先进行归档,请选择 DMG 或 ZIP å¯¼å‡ºæ ¼å¼ã€‚" #: platform/osx/export/export.cpp msgid "Sending archive for notarization" -msgstr "" +msgstr "æ£åœ¨å‘é€å½’档进行公è¯" #: platform/osx/export/export.cpp msgid "Invalid bundle identifier:" @@ -14122,31 +14147,31 @@ msgid "" "Warning: Built-in \"codesign\" is selected in the Editor Settings. Code " "signing is limited to ad-hoc signature only." msgstr "" +"è¦å‘Šï¼šç¼–辑器设置里选ä¸çš„æ˜¯å†…置的“codesignâ€ã€‚代ç ç¾åä»…é™äºŽ ad-hoc ç¾å。" #: platform/osx/export/export.cpp msgid "" "Warning: Xcode command line tools are not installed, using built-in " "\"codesign\". Code signing is limited to ad-hoc signature only." msgstr "" +"è¦å‘Šï¼šæœªå®‰è£… Xcode 命令行工具,将使用内置的“codesignâ€ã€‚代ç ç¾åä»…é™äºŽ ad-hoc " +"ç¾å。" #: platform/osx/export/export.cpp msgid "Notarization: Notarization with an ad-hoc signature is not supported." -msgstr "" +msgstr "å…¬è¯ï¼šä¸æ”¯æŒä½¿ç”¨ Ad-hoc ç¾å进行公è¯ã€‚" #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Code signing is required for notarization." -msgstr "å…¬è¯ï¼šéœ€è¦ä»£ç ç¾å。" +msgstr "å…¬è¯ï¼šå…¬è¯éœ€è¦ä»£ç ç¾å。" #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Hardened runtime is required for notarization." -msgstr "å…¬è¯ï¼šéœ€è¦åŠ å¼ºçš„è¿è¡Œæ—¶çŽ¯å¢ƒã€‚" +msgstr "å…¬è¯ï¼šå…¬è¯éœ€è¦åŠ å›ºè¿è¡Œæ—¶çŽ¯å¢ƒã€‚" #: platform/osx/export/export.cpp -#, fuzzy msgid "Notarization: Timestamp runtime is required for notarization." -msgstr "å…¬è¯ï¼šéœ€è¦åŠ å¼ºçš„è¿è¡Œæ—¶çŽ¯å¢ƒã€‚" +msgstr "å…¬è¯ï¼šå…¬è¯éœ€è¦æ—¶é—´æˆ³è¿è¡Œæ—¶çŽ¯å¢ƒã€‚" #: platform/osx/export/export.cpp msgid "Notarization: Apple ID name not specified." @@ -14161,63 +14186,69 @@ msgid "" "Warning: Notarization is disabled. The exported project will be blocked by " "Gatekeeper if it's downloaded from an unknown source." msgstr "" +"è¦å‘Šï¼šå·²ç¦ç”¨å…¬è¯ã€‚å¦‚æžœä»ŽæœªçŸ¥æ¥æºä¸‹è½½è¯¥å¯¼å‡ºåŽçš„项目,将被 Gatekeeper 阻æ¢è¿" +"行。" #: platform/osx/export/export.cpp msgid "" "Code signing is disabled. The exported project will not run on Macs with " "enabled Gatekeeper and Apple Silicon powered Macs." msgstr "" +"å·²ç¦ç”¨ä»£ç ç¾å。导出åŽçš„é¡¹ç›®å°†æ— æ³•åœ¨å¯ç”¨ Gatekeeper çš„ Mac 和使用 Apple " +"Silicon çš„ Mac 上è¿è¡Œã€‚" #: platform/osx/export/export.cpp msgid "" "Hardened Runtime is not compatible with ad-hoc signature, and will be " "disabled!" -msgstr "" +msgstr "åŠ å›ºè¿è¡Œæ—¶çŽ¯å¢ƒä¸Ž Ad-hoc ç¾åä¸å…¼å®¹ï¼Œå°†è¢«ç¦ç”¨ï¼" #: platform/osx/export/export.cpp msgid "" "Timestamping is not compatible with ad-hoc signature, and will be disabled!" -msgstr "" +msgstr "时间戳è¿è¡Œæ—¶çŽ¯å¢ƒä¸Ž Ad-hoc ç¾åä¸å…¼å®¹ï¼Œå°†è¢«ç¦ç”¨ï¼" #: platform/osx/export/export.cpp msgid "" "Warning: Notarization is not supported from this OS. The exported project " "will be blocked by Gatekeeper if it's downloaded from an unknown source." msgstr "" +"è¦å‘Šï¼šä¸æ”¯æŒä»Žè¯¥æ“作系统进行公è¯ã€‚å¦‚æžœä»ŽæœªçŸ¥æ¥æºä¸‹è½½è¯¥å¯¼å‡ºåŽçš„项目,将被 " +"Gatekeeper 阻æ¢è¿è¡Œã€‚" #: platform/osx/export/export.cpp msgid "" "Privacy: Microphone access is enabled, but usage description is not " "specified." -msgstr "" +msgstr "éšç§ï¼šå·²å¯ç”¨éº¦å…‹é£Žè®¿é—®ï¼Œä½†æœªæŒ‡å®šç”¨é€”æè¿°ã€‚" #: platform/osx/export/export.cpp msgid "" "Privacy: Camera access is enabled, but usage description is not specified." -msgstr "" +msgstr "éšç§ï¼šå·²å¯ç”¨ç›¸æœºè®¿é—®ï¼Œä½†æœªæŒ‡å®šç”¨é€”æè¿°ã€‚" #: platform/osx/export/export.cpp msgid "" "Privacy: Location information access is enabled, but usage description is " "not specified." -msgstr "" +msgstr "éšç§ï¼šå·²å¯ç”¨ä½ç½®ä¿¡æ¯è®¿é—®ï¼Œä½†æœªæŒ‡å®šç”¨é€”æè¿°ã€‚" #: platform/osx/export/export.cpp msgid "" "Privacy: Address book access is enabled, but usage description is not " "specified." -msgstr "" +msgstr "éšç§ï¼šå·²å¯ç”¨åœ°å€ç°¿è®¿é—®ï¼Œä½†æœªæŒ‡å®šç”¨é€”æè¿°ã€‚" #: platform/osx/export/export.cpp msgid "" "Privacy: Calendar access is enabled, but usage description is not specified." -msgstr "" +msgstr "éšç§ï¼šå·²å¯ç”¨æ—¥åŽ†è®¿é—®ï¼Œä½†æœªæŒ‡å®šç”¨é€”æè¿°ã€‚" #: platform/osx/export/export.cpp msgid "" "Privacy: Photo library access is enabled, but usage description is not " "specified." -msgstr "" +msgstr "éšç§ï¼šå·²å¯ç”¨ç…§ç‰‡åº“访问,但未指定用途æè¿°ã€‚" #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -14276,21 +14307,20 @@ msgid "" "The rcedit tool must be configured in the Editor Settings (Export > Windows " "> Rcedit) to change the icon or app information data." msgstr "" +"必须在编辑器设置ä¸é…ç½® rcedit 工具(Export > Windows > Rcedit)æ‰èƒ½ä¿®æ”¹å›¾æ ‡æˆ–" +"åº”ç”¨ä¿¡æ¯æ•°æ®ã€‚" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid icon path:" -msgstr "è·¯å¾„æ— æ•ˆã€‚" +msgstr "å›¾æ ‡è·¯å¾„æ— æ•ˆï¼š" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid file version:" -msgstr "æ‰©å±•åæ— 效。" +msgstr "æ–‡ä»¶ç‰ˆæœ¬æ— æ•ˆï¼š" #: platform/windows/export/export.cpp -#, fuzzy msgid "Invalid product version:" -msgstr "äº§å“ GUID æ— æ•ˆã€‚" +msgstr "产å“ç‰ˆæœ¬æ— æ•ˆï¼š" #: scene/2d/animated_sprite.cpp msgid "" @@ -14967,14 +14997,13 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "该节点已废弃。请使用 AnimationTree 代替。" #: scene/gui/color_picker.cpp -#, fuzzy msgid "" "Color: #%s\n" "LMB: Apply color\n" "RMB: Remove preset" msgstr "" "颜色:#%s\n" -"é¼ æ ‡å·¦é”®ï¼šè®¾ç½®é¢œè‰²\n" +"é¼ æ ‡å·¦é”®ï¼šåº”ç”¨é¢œè‰²\n" "é¼ æ ‡å³é”®ï¼šç§»é™¤é¢„设" #: scene/gui/color_picker.cpp diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 3e58cca1e2..be7d27d9c9 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -1537,6 +1537,11 @@ msgstr "" msgid "Create a new Bus Layout." msgstr "" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "編輯器佈局" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "無效å稱。" @@ -2990,7 +2995,7 @@ msgstr "" msgid "Add a new scene." msgstr "新增軌迹" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "å ´æ™¯" @@ -5861,6 +5866,10 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Select lightmap bake file:" msgstr "é¸å–Template檔案" @@ -8447,7 +8456,12 @@ msgid "Cinematic Preview" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -9400,6 +9414,11 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy +msgid "Theme Resource" +msgstr "資æº" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy msgid "Another Theme" msgstr "檔案" @@ -9452,6 +9471,20 @@ msgid "" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "更改動畫循環" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "更改動畫循環" + +#: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Show Default" msgstr "é è¨" @@ -9470,7 +9503,18 @@ msgid "Override all default type items." msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" +#, fuzzy +msgid "Base Type" +msgstr "更改動畫循環" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." msgstr "" #: editor/plugins/theme_editor_plugin.cpp @@ -10227,18 +10271,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "å»åˆï¼š" @@ -12956,6 +12988,11 @@ msgid "Stack Frames" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "ç¯©é¸æª”案..." + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "" @@ -14331,6 +14368,9 @@ msgstr "無效å稱" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" #: platform/android/export/export_plugin.cpp diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index e58704257e..15a32eaec6 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -1486,6 +1486,11 @@ msgstr "載入é è¨åŒ¯æµæŽ’é…置。" msgid "Create a new Bus Layout." msgstr "å»ºç«‹æ–°åŒ¯æµæŽ’é…置。" +#: editor/editor_audio_buses.cpp +#, fuzzy +msgid "Audio Bus Layout" +msgstr "é–‹å•ŸéŸ³è¨ŠåŒ¯æµæŽ’é…ç½®" + #: editor/editor_autoload_settings.cpp msgid "Invalid name." msgstr "無效的å稱。" @@ -2885,7 +2890,7 @@ msgstr "切æ›ï¼å–消專注模å¼ã€‚" msgid "Add a new scene." msgstr "æ–°å¢žå ´æ™¯ã€‚" -#: editor/editor_node.cpp +#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp msgid "Scene" msgstr "å ´æ™¯" @@ -5592,6 +5597,10 @@ msgid "Bake Lightmaps" msgstr "烘焙光照圖" #: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "LightMap Bake" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" msgstr "鏿“‡å…‰ç…§åœ–烘焙檔案:" @@ -8054,7 +8063,13 @@ msgid "Cinematic Preview" msgstr "效果é 覽" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Not available when using the GLES2 renderer." +msgid "(Not in GLES2)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "" +"Debug draw modes are only available when using the GLES3 renderer, not GLES2." msgstr "使用 GLES2 算繪引擎時無法使用。" #: editor/plugins/spatial_editor_plugin.cpp @@ -8943,6 +8958,11 @@ msgid "Select Another Theme Resource:" msgstr "鏿“‡å…¶ä»–主題資æºï¼š" #: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme Resource" +msgstr "釿–°å‘½å資æº" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Another Theme" msgstr "其他主題" @@ -8993,6 +9013,20 @@ msgstr "" "釘é¸è©²æ¨£å¼ç›’ç‚ºä¸»è¦æ¨£å¼ã€‚編輯其屬性將更新所有其他åŒé¡žåˆ¥çš„æ¨£å¼ç›’之相åŒå±¬æ€§ã€‚" #: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item Type" +msgstr "æ–°å¢žé …ç›®é¡žåž‹" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Variation Base Type" +msgstr "è¨å®šè®Šæ•¸åž‹åˆ¥" + +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Set Base Type" +msgstr "更改基礎型別" + +#: editor/plugins/theme_editor_plugin.cpp msgid "Show Default" msgstr "顯示é è¨" @@ -9009,8 +9043,19 @@ msgid "Override all default type items." msgstr "複寫所有é è¨é¡žåˆ¥é …目。" #: editor/plugins/theme_editor_plugin.cpp -msgid "Add Item Type" -msgstr "æ–°å¢žé …ç›®é¡žåž‹" +#, fuzzy +msgid "Base Type" +msgstr "更改基礎型別" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Select the variation base type from a list of available types." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme:" @@ -9718,18 +9763,6 @@ msgid "Commit list size" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -msgid "10" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "20" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp -msgid "30" -msgstr "" - -#: editor/plugins/version_control_editor_plugin.cpp #, fuzzy msgid "Branches" msgstr "ç¬¦åˆæ¢ä»¶ï¼š" @@ -12401,6 +12434,11 @@ msgid "Stack Frames" msgstr "å †ç–Šæ¡†" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Filter stack variables" +msgstr "篩é¸åœ–塊" + +#: editor/script_editor_debugger.cpp msgid "Profiler" msgstr "分æžå·¥å…·" @@ -13725,9 +13763,10 @@ msgstr "無效的套件å稱:" msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" +"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n" +"Note that the singleton was also renamed from \"GodotPayments\" to " +"\"GodotGooglePlayBilling\"." msgstr "" -"「andoird/modulesã€å°ˆæ¡ˆè¨å®šä¸åŒ…å«äº†ç„¡æ•ˆçš„「GodotPaymentV3ã€æ¨¡çµ„(更改於 " -"Godot 3.2.2)。\n" #: platform/android/export/export_plugin.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/main/main.cpp b/main/main.cpp index da79020bac..97794ece1a 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -371,11 +371,6 @@ void Main::print_help(const char *p_binary) { OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n"); OS::get_singleton()->print(" --build-solutions Build the scripting solutions (e.g. for C# projects). Implies --editor and requires a valid project to edit.\n"); OS::get_singleton()->print(" --dump-extension-api Generate JSON dump of the Godot API for GDExtension bindings named 'extension_api.json' in the current folder.\n"); -#ifdef DEBUG_METHODS_ENABLED - // TODO: Should be removed together with nativescript eventually. - OS::get_singleton()->print(" --gdnative-generate-json-api <path> Generate JSON dump of the Godot API for GDNative bindings and save it on the file specified in <path>.\n"); - OS::get_singleton()->print(" --gdnative-generate-json-builtin-api <path> Generate JSON dump of the Godot API of the builtin Variant types and utility functions for GDNative bindings and save it on the file specified in <path>.\n"); -#endif #ifdef TESTS_ENABLED OS::get_singleton()->print(" --test [--help] Run unit tests. Use --test --help for more information.\n"); #endif @@ -946,15 +941,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph auto_build_solutions = true; editor = true; cmdline_tool = true; -#ifdef DEBUG_METHODS_ENABLED - } else if (I->get() == "--gdnative-generate-json-api" || I->get() == "--gdnative-generate-json-builtin-api") { - // Register as an editor instance to use low-end fallback if relevant. - editor = true; - cmdline_tool = true; - // We still pass it to the main arguments since the argument handling itself is not done in this function, - // it's done in nativescript init code. - main_args.push_back(I->get()); -#endif } else if (I->get() == "--dump-extension-api") { // Register as an editor instance to use low-end fallback if relevant. editor = true; diff --git a/misc/dist/linux/godot.6 b/misc/dist/linux/godot.6 index 3e5bdefdce..07e2a389a7 100644 --- a/misc/dist/linux/godot.6 +++ b/misc/dist/linux/godot.6 @@ -150,9 +150,6 @@ Disallow dumping the base types (used with \fB\-\-doctool\fR). \fB\-\-build\-solutions\fR Build the scripting solutions (e.g. for C# projects). Implies \-\-editor and requires a valid project to edit. .TP -\fB\-\-gdnative\-generate\-json\-api\fR -Generate JSON dump of the Godot API for GDNative bindings. -.TP \fB\-\-test\fR <test> Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'ordered_hash_map', 'astar'). .SH FILES diff --git a/misc/dist/shell/_godot.zsh-completion b/misc/dist/shell/_godot.zsh-completion index 9d42f4fe05..8548b18cb0 100644 --- a/misc/dist/shell/_godot.zsh-completion +++ b/misc/dist/shell/_godot.zsh-completion @@ -70,5 +70,4 @@ _arguments \ '--doctool[dump the engine API reference to the given path in XML format, merging if existing files are found]:path to base Godot build directory:_dirs' \ '--no-docbase[disallow dumping the base types (used with --doctool)]' \ '--build-solutions[build the scripting solutions (e.g. for C# projects)]' \ - '--gdnative-generate-json-api[generate JSON dump of the Godot API for GDNative bindings]' \ '--test[run a unit test]:unit test name' diff --git a/misc/dist/shell/godot.bash-completion b/misc/dist/shell/godot.bash-completion index eeee538aba..56bf23a268 100644 --- a/misc/dist/shell/godot.bash-completion +++ b/misc/dist/shell/godot.bash-completion @@ -73,7 +73,6 @@ _complete_godot_options() { --doctool --no-docbase --build-solutions ---gdnative-generate-json-api --test " -- "$1")) } diff --git a/misc/dist/shell/godot.fish b/misc/dist/shell/godot.fish index 79df2de7f0..6aa3f38f1f 100644 --- a/misc/dist/shell/godot.fish +++ b/misc/dist/shell/godot.fish @@ -84,5 +84,4 @@ complete -c godot -l export-pack -d "Same as --export, but only export the game complete -c godot -l doctool -d "Dump the engine API reference to the given path in XML format, merging if existing files are found" -r complete -c godot -l no-docbase -d "Disallow dumping the base types (used with --doctool)" complete -c godot -l build-solutions -d "Build the scripting solutions (e.g. for C# projects)" -complete -c godot -l gdnative-generate-json-api -d "Generate JSON dump of the Godot API for GDNative bindings" complete -c godot -l test -d "Run a unit test" -x diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp index 3bb2bc3a4d..6c14b694a4 100644 --- a/modules/csg/csg_shape.cpp +++ b/modules/csg/csg_shape.cpp @@ -125,7 +125,7 @@ bool CSGShape3D::get_collision_mask_value(int p_layer_number) const { } bool CSGShape3D::is_root_shape() const { - return !parent; + return !parent_shape; } void CSGShape3D::set_snap(float p_snap) { @@ -136,13 +136,13 @@ float CSGShape3D::get_snap() const { return snap; } -void CSGShape3D::_make_dirty() { - if (!is_inside_tree()) { - return; +void CSGShape3D::_make_dirty(bool p_parent_removing) { + if ((p_parent_removing || is_root_shape()) && !dirty) { + call_deferred(SNAME("_update_shape")); // Must be deferred; otherwise, is_root_shape() will use the previous parent } - if (parent) { - parent->_make_dirty(); + if (!is_root_shape()) { + parent_shape->_make_dirty(); } else if (!dirty) { call_deferred(SNAME("_update_shape")); } @@ -164,7 +164,7 @@ CSGBrush *CSGShape3D::_get_brush() { if (!child) { continue; } - if (!child->is_visible_in_tree()) { + if (!child->is_visible()) { continue; } @@ -280,7 +280,7 @@ void CSGShape3D::mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const } void CSGShape3D::_update_shape() { - if (parent || !is_inside_tree()) { + if (!is_root_shape() || !is_inside_tree()) { return; } @@ -345,27 +345,6 @@ void CSGShape3D::_update_shape() { } } - // Update collision faces. - if (root_collision_shape.is_valid()) { - Vector<Vector3> physics_faces; - physics_faces.resize(n->faces.size() * 3); - Vector3 *physicsw = physics_faces.ptrw(); - - for (int i = 0; i < n->faces.size(); i++) { - int order[3] = { 0, 1, 2 }; - - if (n->faces[i].invert) { - SWAP(order[1], order[2]); - } - - physicsw[i * 3 + 0] = n->faces[i].vertices[order[0]]; - physicsw[i * 3 + 1] = n->faces[i].vertices[order[1]]; - physicsw[i * 3 + 2] = n->faces[i].vertices[order[2]]; - } - - root_collision_shape->set_faces(physics_faces); - } - //fill arrays { for (int i = 0; i < n->faces.size(); i++) { @@ -458,6 +437,32 @@ void CSGShape3D::_update_shape() { } set_base(root_mesh->get_rid()); + + _update_collision_faces(); +} + +void CSGShape3D::_update_collision_faces() { + if (use_collision && is_root_shape() && root_collision_shape.is_valid()) { + CSGBrush *n = _get_brush(); + ERR_FAIL_COND_MSG(!n, "Cannot get CSGBrush."); + Vector<Vector3> physics_faces; + physics_faces.resize(n->faces.size() * 3); + Vector3 *physicsw = physics_faces.ptrw(); + + for (int i = 0; i < n->faces.size(); i++) { + int order[3] = { 0, 1, 2 }; + + if (n->faces[i].invert) { + SWAP(order[1], order[2]); + } + + physicsw[i * 3 + 0] = n->faces[i].vertices[order[0]]; + physicsw[i * 3 + 1] = n->faces[i].vertices[order[1]]; + physicsw[i * 3 + 2] = n->faces[i].vertices[order[2]]; + } + + root_collision_shape->set_faces(physics_faces); + } } AABB CSGShape3D::get_aabb() const { @@ -492,61 +497,72 @@ Vector<Face3> CSGShape3D::get_faces(uint32_t p_usage_flags) const { void CSGShape3D::_notification(int p_what) { switch (p_what) { - case NOTIFICATION_ENTER_TREE: { + case NOTIFICATION_PARENTED: { Node *parentn = get_parent(); if (parentn) { - parent = Object::cast_to<CSGShape3D>(parentn); - if (parent) { + parent_shape = Object::cast_to<CSGShape3D>(parentn); + if (parent_shape) { set_base(RID()); root_mesh.unref(); } } - - if (use_collision && is_root_shape()) { - root_collision_shape.instantiate(); - root_collision_instance = PhysicsServer3D::get_singleton()->body_create(); - PhysicsServer3D::get_singleton()->body_set_mode(root_collision_instance, PhysicsServer3D::BODY_MODE_STATIC); - PhysicsServer3D::get_singleton()->body_set_state(root_collision_instance, PhysicsServer3D::BODY_STATE_TRANSFORM, get_global_transform()); - PhysicsServer3D::get_singleton()->body_add_shape(root_collision_instance, root_collision_shape->get_rid()); - PhysicsServer3D::get_singleton()->body_set_space(root_collision_instance, get_world_3d()->get_space()); - PhysicsServer3D::get_singleton()->body_attach_object_instance_id(root_collision_instance, get_instance_id()); - set_collision_layer(collision_layer); - set_collision_mask(collision_mask); + if (!brush || parent_shape) { + // Update this node if uninitialized, or both this node and its new parent if it gets added to another CSG shape + _make_dirty(); } + last_visible = is_visible(); + } break; - _make_dirty(); + case NOTIFICATION_UNPARENTED: { + if (!is_root_shape()) { + // Update this node and its previous parent only if it's currently being removed from another CSG shape + _make_dirty(true); // Must be forced since is_root_shape() uses the previous parent + } + parent_shape = nullptr; } break; - case NOTIFICATION_TRANSFORM_CHANGED: { - if (use_collision && is_root_shape() && root_collision_instance.is_valid()) { - PhysicsServer3D::get_singleton()->body_set_state(root_collision_instance, PhysicsServer3D::BODY_STATE_TRANSFORM, get_global_transform()); + case NOTIFICATION_VISIBILITY_CHANGED: { + if (!is_root_shape() && last_visible != is_visible()) { + // Update this node's parent only if its own visibility has changed, not the visibility of parent nodes + parent_shape->_make_dirty(); } + last_visible = is_visible(); } break; case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: { - if (parent) { - parent->_make_dirty(); + if (!is_root_shape()) { + // Update this node's parent only if its own transformation has changed, not the transformation of parent nodes + parent_shape->_make_dirty(); } } break; - case NOTIFICATION_VISIBILITY_CHANGED: { - if (parent) { - parent->_make_dirty(); + case NOTIFICATION_ENTER_TREE: { + if (use_collision && is_root_shape()) { + root_collision_shape.instantiate(); + root_collision_instance = PhysicsServer3D::get_singleton()->body_create(); + PhysicsServer3D::get_singleton()->body_set_mode(root_collision_instance, PhysicsServer3D::BODY_MODE_STATIC); + PhysicsServer3D::get_singleton()->body_set_state(root_collision_instance, PhysicsServer3D::BODY_STATE_TRANSFORM, get_global_transform()); + PhysicsServer3D::get_singleton()->body_add_shape(root_collision_instance, root_collision_shape->get_rid()); + PhysicsServer3D::get_singleton()->body_set_space(root_collision_instance, get_world_3d()->get_space()); + PhysicsServer3D::get_singleton()->body_attach_object_instance_id(root_collision_instance, get_instance_id()); + set_collision_layer(collision_layer); + set_collision_mask(collision_mask); + _update_collision_faces(); } } break; case NOTIFICATION_EXIT_TREE: { - if (parent) { - parent->_make_dirty(); - } - parent = nullptr; - if (use_collision && is_root_shape() && root_collision_instance.is_valid()) { PhysicsServer3D::get_singleton()->free(root_collision_instance); root_collision_instance = RID(); root_collision_shape.unref(); } - _make_dirty(); + } break; + + case NOTIFICATION_TRANSFORM_CHANGED: { + if (use_collision && is_root_shape() && root_collision_instance.is_valid()) { + PhysicsServer3D::get_singleton()->body_set_state(root_collision_instance, PhysicsServer3D::BODY_STATE_TRANSFORM, get_global_transform()); + } } break; } } diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h index 6da9893368..d16250e30d 100644 --- a/modules/csg/csg_shape.h +++ b/modules/csg/csg_shape.h @@ -52,13 +52,14 @@ public: private: Operation operation = OPERATION_UNION; - CSGShape3D *parent = nullptr; + CSGShape3D *parent_shape = nullptr; CSGBrush *brush = nullptr; AABB node_aabb; bool dirty = false; + bool last_visible = false; float snap = 0.001; bool use_collision = false; @@ -104,11 +105,12 @@ private: const tbool bIsOrientationPreserving, const int iFace, const int iVert); void _update_shape(); + void _update_collision_faces(); protected: void _notification(int p_what); virtual CSGBrush *_build_brush() = 0; - void _make_dirty(); + void _make_dirty(bool p_parent_removing = false); static void _bind_methods(); diff --git a/modules/gdnative/SCsub b/modules/gdnative/SCsub deleted file mode 100644 index f7f21a433e..0000000000 --- a/modules/gdnative/SCsub +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python - -Import("env") -Import("env_modules") - -env_gdnative = env_modules.Clone() -env_gdnative.add_source_files(env.modules_sources, "gdnative.cpp") -env_gdnative.add_source_files(env.modules_sources, "register_types.cpp") -env_gdnative.add_source_files(env.modules_sources, "android/*.cpp") -env_gdnative.add_source_files(env.modules_sources, "gdnative/*.cpp") -env_gdnative.add_source_files(env.modules_sources, "nativescript/*.cpp") -env_gdnative.add_source_files(env.modules_sources, "gdnative_library_singleton_editor.cpp") -env_gdnative.add_source_files(env.modules_sources, "gdnative_library_editor_plugin.cpp") - -env_gdnative.Prepend(CPPPATH=["#modules/gdnative/include/"]) - -Export("env_gdnative") - -SConscript("pluginscript/SCsub") -SConscript("videodecoder/SCsub") - - -import gdnative_builders - -_, gensource = env_gdnative.CommandNoCache( - ["include/gdnative_api_struct.gen.h", "gdnative_api_struct.gen.cpp"], - "gdnative_api.json", - env.Run(gdnative_builders.build_gdnative_api_struct, "Generating GDNative API."), -) -env_gdnative.add_source_files(env.modules_sources, [gensource]) diff --git a/modules/gdnative/android/android_gdn.cpp b/modules/gdnative/android/android_gdn.cpp deleted file mode 100644 index 7411fc4031..0000000000 --- a/modules/gdnative/android/android_gdn.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************/ -/* android_gdn.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "modules/gdnative/gdnative.h" - -// Code by Paritosh97 with minor tweaks by Mux213 -// These entry points are only for the android platform and are simple stubs in all others. - -#ifdef __ANDROID__ -#include "platform/android/java_godot_wrapper.h" -#include "platform/android/os_android.h" -#include "platform/android/thread_jandroid.h" -#else -#define JNIEnv void -#define jobject void * -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -JNIEnv *GDAPI godot_android_get_env() { -#ifdef __ANDROID__ - return get_jni_env(); -#else - return nullptr; -#endif -} - -jobject GDAPI godot_android_get_activity() { -#ifdef __ANDROID__ - OS_Android *os_android = (OS_Android *)OS::get_singleton(); - return os_android->get_godot_java()->get_activity(); -#else - return nullptr; -#endif -} - -jobject GDAPI godot_android_get_surface() { -#ifdef __ANDROID__ - OS_Android *os_android = (OS_Android *)OS::get_singleton(); - return os_android->get_godot_java()->get_surface(); -#else - return nullptr; -#endif -} - -bool GDAPI godot_android_is_activity_resumed() { -#ifdef __ANDROID__ - OS_Android *os_android = (OS_Android *)OS::get_singleton(); - return os_android->get_godot_java()->is_activity_resumed(); -#else - return false; -#endif -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/config.py b/modules/gdnative/config.py deleted file mode 100644 index 026a84a70f..0000000000 --- a/modules/gdnative/config.py +++ /dev/null @@ -1,20 +0,0 @@ -def can_build(env, platform): - return True - - -def configure(env): - pass - - -def get_doc_classes(): - return [ - "GDNative", - "GDNativeLibrary", - "NativeScript", - "PluginScript", - "VideoStreamGDNative", - ] - - -def get_doc_path(): - return "doc_classes" diff --git a/modules/gdnative/doc_classes/GDNative.xml b/modules/gdnative/doc_classes/GDNative.xml deleted file mode 100644 index 405365ad68..0000000000 --- a/modules/gdnative/doc_classes/GDNative.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="GDNative" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> - <brief_description> - </brief_description> - <description> - </description> - <tutorials> - </tutorials> - <methods> - <method name="call_native"> - <return type="Variant" /> - <argument index="0" name="calling_type" type="StringName" /> - <argument index="1" name="procedure_name" type="StringName" /> - <argument index="2" name="arguments" type="Array" /> - <description> - </description> - </method> - <method name="initialize"> - <return type="bool" /> - <description> - </description> - </method> - <method name="terminate"> - <return type="bool" /> - <description> - </description> - </method> - </methods> - <members> - <member name="library" type="GDNativeLibrary" setter="set_library" getter="get_library"> - </member> - </members> -</class> diff --git a/modules/gdnative/doc_classes/GDNativeLibrary.xml b/modules/gdnative/doc_classes/GDNativeLibrary.xml deleted file mode 100644 index 66811467fc..0000000000 --- a/modules/gdnative/doc_classes/GDNativeLibrary.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="GDNativeLibrary" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> - <brief_description> - An external library containing functions or script classes to use in Godot. - </brief_description> - <description> - A GDNative library can implement [NativeScript]s, global functions to call with the [GDNative] class, or low-level engine extensions through interfaces such as XRInterfaceGDNative. The library must be compiled for each platform and architecture that the project will run on. - </description> - <tutorials> - <link title="GDNative C example">$DOCS_URL/tutorials/scripting/gdnative/gdnative_c_example.html</link> - <link title="GDNative C++ example">$DOCS_URL/tutorials/scripting/gdnative/gdnative_cpp_example.html</link> - </tutorials> - <methods> - <method name="get_current_dependencies" qualifiers="const"> - <return type="PackedStringArray" /> - <description> - Returns paths to all dependency libraries for the current platform and architecture. - </description> - </method> - <method name="get_current_library_path" qualifiers="const"> - <return type="String" /> - <description> - Returns the path to the dynamic library file for the current platform and architecture. - </description> - </method> - </methods> - <members> - <member name="config_file" type="ConfigFile" setter="set_config_file" getter="get_config_file"> - This resource in INI-style [ConfigFile] format, as in [code].gdnlib[/code] files. - </member> - <member name="load_once" type="bool" setter="set_load_once" getter="should_load_once" default="true"> - If [code]true[/code], Godot loads only one copy of the library and each script that references the library will share static data like static or global variables. - If [code]false[/code], Godot loads a separate copy of the library into memory for each script that references it. - </member> - <member name="reloadable" type="bool" setter="set_reloadable" getter="is_reloadable" default="true"> - If [code]true[/code], the editor will temporarily unload the library whenever the user switches away from the editor window, allowing the user to recompile the library without restarting Godot. - [b]Note:[/b] If the library defines tool scripts that run inside the editor, [code]reloadable[/code] must be [code]false[/code]. Otherwise, the editor will attempt to unload the tool scripts while they're in use and crash. - </member> - <member name="singleton" type="bool" setter="set_singleton" getter="is_singleton" default="false"> - If [code]true[/code], Godot loads the library at startup rather than the first time a script uses the library, calling [code]{prefix}gdnative_singleton[/code] after initializing the library (where [code]{prefix}[/code] is the value of [member symbol_prefix]). The library remains loaded as long as Godot is running. - [b]Note:[/b] A singleton library cannot be [member reloadable]. - </member> - <member name="symbol_prefix" type="String" setter="set_symbol_prefix" getter="get_symbol_prefix" default=""godot_""> - The prefix this library's entry point functions begin with. For example, a GDNativeLibrary would declare its [code]gdnative_init[/code] function as [code]godot_gdnative_init[/code] by default. - On platforms that require statically linking libraries (currently only iOS), each library must have a different [code]symbol_prefix[/code]. - </member> - </members> -</class> diff --git a/modules/gdnative/doc_classes/NativeScript.xml b/modules/gdnative/doc_classes/NativeScript.xml deleted file mode 100644 index b752b66f7e..0000000000 --- a/modules/gdnative/doc_classes/NativeScript.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="NativeScript" inherits="Script" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> - <brief_description> - </brief_description> - <description> - </description> - <tutorials> - </tutorials> - <methods> - <method name="get_class_documentation" qualifiers="const"> - <return type="String" /> - <description> - Returns the documentation string that was previously set with [code]godot_nativescript_set_class_documentation[/code]. - </description> - </method> - <method name="get_method_documentation" qualifiers="const"> - <return type="String" /> - <argument index="0" name="method" type="StringName" /> - <description> - Returns the documentation string that was previously set with [code]godot_nativescript_set_method_documentation[/code]. - </description> - </method> - <method name="get_property_documentation" qualifiers="const"> - <return type="String" /> - <argument index="0" name="path" type="StringName" /> - <description> - Returns the documentation string that was previously set with [code]godot_nativescript_set_property_documentation[/code]. - </description> - </method> - <method name="get_signal_documentation" qualifiers="const"> - <return type="String" /> - <argument index="0" name="signal_name" type="StringName" /> - <description> - Returns the documentation string that was previously set with [code]godot_nativescript_set_signal_documentation[/code]. - </description> - </method> - <method name="new" qualifiers="vararg"> - <return type="Variant" /> - <description> - Constructs a new object of the base type with a script of this type already attached. - [b]Note:[/b] Any arguments passed to this function will be ignored and not passed to the native constructor function. This will change with in a future API extension. - </description> - </method> - </methods> - <members> - <member name="class_name" type="String" setter="set_class_name" getter="get_class_name" default=""""> - </member> - <member name="library" type="GDNativeLibrary" setter="set_library" getter="get_library"> - </member> - <member name="script_class_icon_path" type="String" setter="set_script_class_icon_path" getter="get_script_class_icon_path" default=""""> - </member> - <member name="script_class_name" type="String" setter="set_script_class_name" getter="get_script_class_name" default=""""> - </member> - </members> -</class> diff --git a/modules/gdnative/doc_classes/PluginScript.xml b/modules/gdnative/doc_classes/PluginScript.xml deleted file mode 100644 index 1fe6d95d3b..0000000000 --- a/modules/gdnative/doc_classes/PluginScript.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="PluginScript" inherits="Script" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> - <brief_description> - </brief_description> - <description> - </description> - <tutorials> - </tutorials> - <methods> - <method name="new" qualifiers="vararg"> - <return type="Variant" /> - <description> - Returns a new instance of the script. - </description> - </method> - </methods> -</class> diff --git a/modules/gdnative/doc_classes/VideoStreamGDNative.xml b/modules/gdnative/doc_classes/VideoStreamGDNative.xml deleted file mode 100644 index 2b27556fab..0000000000 --- a/modules/gdnative/doc_classes/VideoStreamGDNative.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="VideoStreamGDNative" inherits="VideoStream" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> - <brief_description> - [VideoStream] resource for for video formats implemented via GDNative. - </brief_description> - <description> - [VideoStream] resource for for video formats implemented via GDNative. - It can be used via [url=https://github.com/KidRigger/godot-videodecoder]godot-videodecoder[/url] which uses the [url=https://ffmpeg.org]FFmpeg[/url] library. - </description> - <tutorials> - </tutorials> - <methods> - <method name="get_file"> - <return type="String" /> - <description> - Returns the video file handled by this [VideoStreamGDNative]. - </description> - </method> - <method name="set_file"> - <return type="void" /> - <argument index="0" name="file" type="String" /> - <description> - Sets the video file that this [VideoStreamGDNative] resource handles. The supported extensions depend on the GDNative plugins used to expose video formats. - </description> - </method> - </methods> -</class> diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp deleted file mode 100644 index 3950ce1ade..0000000000 --- a/modules/gdnative/gdnative.cpp +++ /dev/null @@ -1,583 +0,0 @@ -/*************************************************************************/ -/* gdnative.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative.h" - -#include "core/config/project_settings.h" -#include "core/core_constants.h" -#include "core/io/dir_access.h" -#include "core/io/file_access.h" -#include "core/io/file_access_encrypted.h" -#include "core/os/os.h" - -#include "scene/main/scene_tree.h" - -static const String init_symbol = "gdnative_init"; -static const String terminate_symbol = "gdnative_terminate"; -static const String default_symbol_prefix = "godot_"; -static const bool default_singleton = false; -static const bool default_load_once = true; -static const bool default_reloadable = true; - -// Defined in gdnative_api_struct.gen.cpp -extern const godot_gdnative_core_api_struct api_struct; - -Map<String, Vector<Ref<GDNative>>> GDNativeLibrary::loaded_libraries; - -GDNativeLibrary::GDNativeLibrary() { - config_file.instantiate(); - - symbol_prefix = default_symbol_prefix; - load_once = default_load_once; - singleton = default_singleton; - reloadable = default_reloadable; -} - -GDNativeLibrary::~GDNativeLibrary() { -} - -bool GDNativeLibrary::_set(const StringName &p_name, const Variant &p_property) { - String name = p_name; - - if (name.begins_with("entry/")) { - String key = name.substr(6, name.length() - 6); - - config_file->set_value("entry", key, p_property); - - set_config_file(config_file); - - return true; - } - - if (name.begins_with("dependency/")) { - String key = name.substr(11, name.length() - 11); - - config_file->set_value("dependencies", key, p_property); - - set_config_file(config_file); - - return true; - } - - return false; -} - -bool GDNativeLibrary::_get(const StringName &p_name, Variant &r_property) const { - String name = p_name; - - if (name.begins_with("entry/")) { - String key = name.substr(6, name.length() - 6); - - r_property = config_file->get_value("entry", key); - - return true; - } - - if (name.begins_with("dependency/")) { - String key = name.substr(11, name.length() - 11); - - r_property = config_file->get_value("dependencies", key); - - return true; - } - - return false; -} - -void GDNativeLibrary::reset_state() { - config_file.instantiate(); - current_library_path = ""; - current_dependencies.clear(); - symbol_prefix = default_symbol_prefix; - load_once = default_load_once; - singleton = default_singleton; - reloadable = default_reloadable; -} - -void GDNativeLibrary::_get_property_list(List<PropertyInfo> *p_list) const { - // set entries - List<String> entry_key_list; - - if (config_file->has_section("entry")) { - config_file->get_section_keys("entry", &entry_key_list); - } - - for (const String &key : entry_key_list) { - PropertyInfo prop; - - prop.type = Variant::STRING; - prop.name = "entry/" + key; - - p_list->push_back(prop); - } - - // set dependencies - List<String> dependency_key_list; - - if (config_file->has_section("dependencies")) { - config_file->get_section_keys("dependencies", &dependency_key_list); - } - - for (const String &key : dependency_key_list) { - PropertyInfo prop; - - prop.type = Variant::STRING; - prop.name = "dependency/" + key; - - p_list->push_back(prop); - } -} - -void GDNativeLibrary::set_config_file(Ref<ConfigFile> p_config_file) { - ERR_FAIL_COND(p_config_file.is_null()); - - set_singleton(p_config_file->get_value("general", "singleton", default_singleton)); - set_load_once(p_config_file->get_value("general", "load_once", default_load_once)); - set_symbol_prefix(p_config_file->get_value("general", "symbol_prefix", default_symbol_prefix)); - set_reloadable(p_config_file->get_value("general", "reloadable", default_reloadable)); - - String entry_lib_path; - { - List<String> entry_keys; - - if (p_config_file->has_section("entry")) { - p_config_file->get_section_keys("entry", &entry_keys); - } - - for (const String &key : entry_keys) { - Vector<String> tags = key.split("."); - - bool skip = false; - for (int i = 0; i < tags.size(); i++) { - bool has_feature = OS::get_singleton()->has_feature(tags[i]); - - if (!has_feature) { - skip = true; - break; - } - } - - if (skip) { - continue; - } - - entry_lib_path = p_config_file->get_value("entry", key); - break; - } - } - - Vector<String> dependency_paths; - { - List<String> dependency_keys; - - if (p_config_file->has_section("dependencies")) { - p_config_file->get_section_keys("dependencies", &dependency_keys); - } - - for (const String &key : dependency_keys) { - Vector<String> tags = key.split("."); - - bool skip = false; - for (int i = 0; i < tags.size(); i++) { - bool has_feature = OS::get_singleton()->has_feature(tags[i]); - - if (!has_feature) { - skip = true; - break; - } - } - - if (skip) { - continue; - } - - dependency_paths = p_config_file->get_value("dependencies", key); - break; - } - } - - current_library_path = entry_lib_path; - current_dependencies = dependency_paths; -} - -void GDNativeLibrary::_bind_methods() { - ClassDB::bind_method(D_METHOD("get_config_file"), &GDNativeLibrary::get_config_file); - ClassDB::bind_method(D_METHOD("set_config_file", "config_file"), &GDNativeLibrary::set_config_file); - - ClassDB::bind_method(D_METHOD("get_current_library_path"), &GDNativeLibrary::get_current_library_path); - ClassDB::bind_method(D_METHOD("get_current_dependencies"), &GDNativeLibrary::get_current_dependencies); - - ClassDB::bind_method(D_METHOD("should_load_once"), &GDNativeLibrary::should_load_once); - ClassDB::bind_method(D_METHOD("is_singleton"), &GDNativeLibrary::is_singleton); - ClassDB::bind_method(D_METHOD("get_symbol_prefix"), &GDNativeLibrary::get_symbol_prefix); - ClassDB::bind_method(D_METHOD("is_reloadable"), &GDNativeLibrary::is_reloadable); - - ClassDB::bind_method(D_METHOD("set_load_once", "load_once"), &GDNativeLibrary::set_load_once); - ClassDB::bind_method(D_METHOD("set_singleton", "singleton"), &GDNativeLibrary::set_singleton); - ClassDB::bind_method(D_METHOD("set_symbol_prefix", "symbol_prefix"), &GDNativeLibrary::set_symbol_prefix); - ClassDB::bind_method(D_METHOD("set_reloadable", "reloadable"), &GDNativeLibrary::set_reloadable); - - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "config_file", PROPERTY_HINT_RESOURCE_TYPE, "ConfigFile", PROPERTY_USAGE_NONE), "set_config_file", "get_config_file"); - - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "load_once"), "set_load_once", "should_load_once"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "singleton"), "set_singleton", "is_singleton"); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "symbol_prefix"), "set_symbol_prefix", "get_symbol_prefix"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "reloadable"), "set_reloadable", "is_reloadable"); -} - -GDNative::GDNative() { - native_handle = nullptr; - initialized = false; -} - -GDNative::~GDNative() { -} - -void GDNative::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_library", "library"), &GDNative::set_library); - ClassDB::bind_method(D_METHOD("get_library"), &GDNative::get_library); - - ClassDB::bind_method(D_METHOD("initialize"), &GDNative::initialize); - ClassDB::bind_method(D_METHOD("terminate"), &GDNative::terminate); - - ClassDB::bind_method(D_METHOD("call_native", "calling_type", "procedure_name", "arguments"), &GDNative::call_native); - - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "library", PROPERTY_HINT_RESOURCE_TYPE, "GDNativeLibrary"), "set_library", "get_library"); -} - -void GDNative::set_library(Ref<GDNativeLibrary> p_library) { - ERR_FAIL_COND_MSG(library.is_valid(), "Tried to change library of GDNative when it is already set."); - library = p_library; -} - -Ref<GDNativeLibrary> GDNative::get_library() const { - return library; -} - -extern "C" void _gdnative_report_version_mismatch(const godot_object *p_library, const char *p_ext, godot_gdnative_api_version p_want, godot_gdnative_api_version p_have); -extern "C" void _gdnative_report_loading_error(const godot_object *p_library, const char *p_what); - -bool GDNative::initialize() { - if (library.is_null()) { - ERR_PRINT("No library set, can't initialize GDNative object"); - return false; - } - - String lib_path = library->get_current_library_path(); - if (lib_path.is_empty()) { - ERR_PRINT("No library set for this platform"); - return false; - } -#ifdef IPHONE_ENABLED - // On iOS we use static linking by default. - String path = ""; - - // On iOS dylibs is not allowed, but can be replaced with .framework or .xcframework. - // If they are used, we can run dlopen on them. - // They should be located under Frameworks directory, so we need to replace library path. - if (!lib_path.ends_with(".a")) { - path = ProjectSettings::get_singleton()->globalize_path(lib_path); - - if (!FileAccess::exists(path)) { - String lib_name = lib_path.get_basename().get_file(); - String framework_path_format = "Frameworks/$name.framework/$name"; - - Dictionary format_dict; - format_dict["name"] = lib_name; - String framework_path = framework_path_format.format(format_dict, "$_"); - - path = OS::get_singleton()->get_executable_path().get_base_dir().plus_file(framework_path); - } - } -#elif defined(ANDROID_ENABLED) - // On Android dynamic libraries are located separately from resource assets, - // we should pass library name to dlopen(). The library name is flattened - // during export. - String path = lib_path.get_file(); -#elif defined(UWP_ENABLED) - // On UWP we use a relative path from the app - String path = lib_path.replace("res://", ""); -#elif defined(OSX_ENABLED) - // On OSX the exported libraries are located under the Frameworks directory. - // So we need to replace the library path. - String path = ProjectSettings::get_singleton()->globalize_path(lib_path); - DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); - - if (!da->file_exists(path) && !da->dir_exists(path)) { - path = OS::get_singleton()->get_executable_path().get_base_dir().plus_file("../Frameworks").plus_file(lib_path.get_file()); - } - - if (da->dir_exists(path)) { // Target library is a ".framework", add library base name to the path. - path = path.plus_file(path.get_file().get_basename()); - } - - memdelete(da); - -#else - String path = ProjectSettings::get_singleton()->globalize_path(lib_path); -#endif - - if (library->should_load_once()) { - if (GDNativeLibrary::loaded_libraries.has(lib_path)) { - // already loaded. Don't load again. - // copy some of the stuff instead - this->native_handle = GDNativeLibrary::loaded_libraries[lib_path][0]->native_handle; - initialized = true; - return true; - } - } - - Error err = OS::get_singleton()->open_dynamic_library(path, native_handle, true); - if (err != OK) { - return false; - } - - void *library_init; - - // we cheat here a little bit. you saw nothing - initialized = true; - - err = get_symbol(library->get_symbol_prefix() + init_symbol, library_init, false); - - initialized = false; - - if (err || !library_init) { - OS::get_singleton()->close_dynamic_library(native_handle); - native_handle = nullptr; - ERR_PRINT("Failed to obtain " + library->get_symbol_prefix() + "gdnative_init symbol"); - return false; - } - - godot_gdnative_init_fn library_init_fpointer; - library_init_fpointer = (godot_gdnative_init_fn)library_init; - - static uint64_t core_api_hash = 0; - static uint64_t editor_api_hash = 0; - static uint64_t no_api_hash = 0; - - if (!(core_api_hash || editor_api_hash || no_api_hash)) { - core_api_hash = ClassDB::get_api_hash(ClassDB::API_CORE); - editor_api_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR); - no_api_hash = ClassDB::get_api_hash(ClassDB::API_NONE); - } - - godot_gdnative_init_options options; - - options.api_struct = &api_struct; - options.in_editor = Engine::get_singleton()->is_editor_hint(); - options.core_api_hash = core_api_hash; - options.editor_api_hash = editor_api_hash; - options.no_api_hash = no_api_hash; - options.report_version_mismatch = &_gdnative_report_version_mismatch; - options.report_loading_error = &_gdnative_report_loading_error; - options.gd_native_library = (godot_object *)(get_library().ptr()); - options.active_library_path = (godot_string *)&path; - - library_init_fpointer(&options); - - initialized = true; - - if (library->should_load_once() && !GDNativeLibrary::loaded_libraries.has(lib_path)) { - Vector<Ref<GDNative>> gdnatives; - gdnatives.resize(1); - gdnatives.write[0] = Ref<GDNative>(this); - GDNativeLibrary::loaded_libraries.insert(lib_path, gdnatives); - } - - return true; -} - -bool GDNative::terminate() { - if (!initialized) { - ERR_PRINT("No valid library handle, can't terminate GDNative object"); - return false; - } - - if (library->should_load_once()) { - Vector<Ref<GDNative>> *gdnatives = &GDNativeLibrary::loaded_libraries[library->get_current_library_path()]; - if (gdnatives->size() > 1) { - // there are other GDNative's still using this library, so we actually don't terminate - gdnatives->erase(Ref<GDNative>(this)); - initialized = false; - return true; - } else if (gdnatives->size() == 1) { - // we're the last one, terminate! - gdnatives->clear(); - // whew this looks scary, but all it does is remove the entry completely - GDNativeLibrary::loaded_libraries.erase(GDNativeLibrary::loaded_libraries.find(library->get_current_library_path())); - } - } - - void *library_terminate; - Error error = get_symbol(library->get_symbol_prefix() + terminate_symbol, library_terminate); - if (error || !library_terminate) { - OS::get_singleton()->close_dynamic_library(native_handle); - native_handle = nullptr; - initialized = false; - return true; - } - - godot_gdnative_terminate_fn library_terminate_pointer; - library_terminate_pointer = (godot_gdnative_terminate_fn)library_terminate; - - godot_gdnative_terminate_options options; - options.in_editor = Engine::get_singleton()->is_editor_hint(); - - library_terminate_pointer(&options); - - initialized = false; - - // GDNativeScriptLanguage::get_singleton()->initialized_libraries.erase(p_native_lib->path); - - OS::get_singleton()->close_dynamic_library(native_handle); - native_handle = nullptr; - - return true; -} - -bool GDNative::is_initialized() const { - return initialized; -} - -void GDNativeCallRegistry::register_native_call_type(StringName p_call_type, native_call_cb p_callback) { - native_calls.insert(p_call_type, p_callback); -} - -Vector<StringName> GDNativeCallRegistry::get_native_call_types() { - Vector<StringName> call_types; - call_types.resize(native_calls.size()); - - size_t idx = 0; - for (Map<StringName, native_call_cb>::Element *E = native_calls.front(); E; E = E->next(), idx++) { - call_types.write[idx] = E->key(); - } - - return call_types; -} - -Variant GDNative::call_native(StringName p_native_call_type, StringName p_procedure_name, Array p_arguments) { - Map<StringName, native_call_cb>::Element *E = GDNativeCallRegistry::singleton->native_calls.find(p_native_call_type); - if (!E) { - ERR_PRINT((String("No handler for native call type \"" + p_native_call_type) + "\" found").utf8().get_data()); - return Variant(); - } - - void *procedure_handle; - - Error err = OS::get_singleton()->get_dynamic_library_symbol_handle( - native_handle, - p_procedure_name, - procedure_handle); - - if (err != OK || procedure_handle == nullptr) { - return Variant(); - } - - godot_variant result = E->get()(procedure_handle, (godot_array *)&p_arguments); - - Variant res = *(Variant *)&result; - godot_variant_destroy(&result); - return res; -} - -Error GDNative::get_symbol(StringName p_procedure_name, void *&r_handle, bool p_optional) const { - if (!initialized) { - ERR_PRINT("No valid library handle, can't get symbol from GDNative object"); - return ERR_CANT_OPEN; - } - - Error result = OS::get_singleton()->get_dynamic_library_symbol_handle( - native_handle, - p_procedure_name, - r_handle, - p_optional); - - return result; -} - -RES GDNativeLibraryResourceLoader::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) { - Ref<GDNativeLibrary> lib; - lib.instantiate(); - - Ref<ConfigFile> config = lib->get_config_file(); - - Error err = config->load(p_path); - - if (r_error) { - *r_error = err; - } - - lib->set_config_file(config); - - return lib; -} - -void GDNativeLibraryResourceLoader::get_recognized_extensions(List<String> *p_extensions) const { - p_extensions->push_back("gdnlib"); -} - -bool GDNativeLibraryResourceLoader::handles_type(const String &p_type) const { - return p_type == "GDNativeLibrary"; -} - -String GDNativeLibraryResourceLoader::get_resource_type(const String &p_path) const { - String el = p_path.get_extension().to_lower(); - if (el == "gdnlib") { - return "GDNativeLibrary"; - } - return ""; -} - -Error GDNativeLibraryResourceSaver::save(const String &p_path, const RES &p_resource, uint32_t p_flags) { - Ref<GDNativeLibrary> lib = p_resource; - - if (lib.is_null()) { - return ERR_INVALID_DATA; - } - - Ref<ConfigFile> config = lib->get_config_file(); - - config->set_value("general", "singleton", lib->is_singleton()); - config->set_value("general", "load_once", lib->should_load_once()); - config->set_value("general", "symbol_prefix", lib->get_symbol_prefix()); - config->set_value("general", "reloadable", lib->is_reloadable()); - - return config->save(p_path); -} - -bool GDNativeLibraryResourceSaver::recognize(const RES &p_resource) const { - return Object::cast_to<GDNativeLibrary>(*p_resource) != nullptr; -} - -void GDNativeLibraryResourceSaver::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const { - if (Object::cast_to<GDNativeLibrary>(*p_resource) != nullptr) { - p_extensions->push_back("gdnlib"); - } -} diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h deleted file mode 100644 index 8facd43743..0000000000 --- a/modules/gdnative/gdnative.h +++ /dev/null @@ -1,184 +0,0 @@ -/*************************************************************************/ -/* gdnative.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GDNATIVE_H -#define GDNATIVE_H - -#include "core/io/resource.h" -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/os/thread_safe.h" - -#include "gdnative/gdnative.h" -#include "gdnative_api_struct.gen.h" - -#include "core/io/config_file.h" - -class GDNativeLibraryResourceLoader; -class GDNative; - -class GDNativeLibrary : public Resource { - GDCLASS(GDNativeLibrary, Resource); - - static Map<String, Vector<Ref<GDNative>>> loaded_libraries; - - friend class GDNativeLibraryResourceLoader; - friend class GDNative; - - Ref<ConfigFile> config_file; - - String current_library_path; - Vector<String> current_dependencies; - - bool singleton; - bool load_once; - String symbol_prefix; - bool reloadable; - -public: - virtual void reset_state() override; - - GDNativeLibrary(); - ~GDNativeLibrary(); - - virtual bool _set(const StringName &p_name, const Variant &p_property); - virtual bool _get(const StringName &p_name, Variant &r_property) const; - virtual void _get_property_list(List<PropertyInfo> *p_list) const; - - _FORCE_INLINE_ Ref<ConfigFile> get_config_file() { return config_file; } - - void set_config_file(Ref<ConfigFile> p_config_file); - - // things that change per-platform - // so there are no setters for this - _FORCE_INLINE_ String get_current_library_path() const { - return current_library_path; - } - _FORCE_INLINE_ Vector<String> get_current_dependencies() const { - return current_dependencies; - } - - // things that are a property of the library itself, not platform specific - _FORCE_INLINE_ bool should_load_once() const { - return load_once; - } - _FORCE_INLINE_ bool is_singleton() const { - return singleton; - } - _FORCE_INLINE_ String get_symbol_prefix() const { - return symbol_prefix; - } - - _FORCE_INLINE_ bool is_reloadable() const { - return reloadable; - } - - _FORCE_INLINE_ void set_load_once(bool p_load_once) { - config_file->set_value("general", "load_once", p_load_once); - load_once = p_load_once; - } - _FORCE_INLINE_ void set_singleton(bool p_singleton) { - config_file->set_value("general", "singleton", p_singleton); - singleton = p_singleton; - } - _FORCE_INLINE_ void set_symbol_prefix(String p_symbol_prefix) { - config_file->set_value("general", "symbol_prefix", p_symbol_prefix); - symbol_prefix = p_symbol_prefix; - } - - _FORCE_INLINE_ void set_reloadable(bool p_reloadable) { - config_file->set_value("general", "reloadable", p_reloadable); - reloadable = p_reloadable; - } - - static void _bind_methods(); -}; - -struct GDNativeCallRegistry { - static GDNativeCallRegistry *singleton; - - inline static GDNativeCallRegistry *get_singleton() { - return singleton; - } - - inline GDNativeCallRegistry() : - native_calls() {} - - Map<StringName, native_call_cb> native_calls; - - void register_native_call_type(StringName p_call_type, native_call_cb p_callback); - - Vector<StringName> get_native_call_types(); -}; - -class GDNative : public RefCounted { - GDCLASS(GDNative, RefCounted); - - Ref<GDNativeLibrary> library; - - void *native_handle; - - bool initialized; - -public: - GDNative(); - ~GDNative(); - - static void _bind_methods(); - - void set_library(Ref<GDNativeLibrary> p_library); - Ref<GDNativeLibrary> get_library() const; - - bool is_initialized() const; - - bool initialize(); - bool terminate(); - - Variant call_native(StringName p_native_call_type, StringName p_procedure_name, Array p_arguments = Array()); - - Error get_symbol(StringName p_procedure_name, void *&r_handle, bool p_optional = true) const; -}; - -class GDNativeLibraryResourceLoader : public ResourceFormatLoader { -public: - virtual RES load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE); - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String &p_type) const; - virtual String get_resource_type(const String &p_path) const; -}; - -class GDNativeLibraryResourceSaver : public ResourceFormatSaver { -public: - virtual Error save(const String &p_path, const RES &p_resource, uint32_t p_flags); - virtual bool recognize(const RES &p_resource) const; - virtual void get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const; -}; - -#endif // GDNATIVE_H diff --git a/modules/gdnative/gdnative/aabb.cpp b/modules/gdnative/gdnative/aabb.cpp deleted file mode 100644 index b8909433cc..0000000000 --- a/modules/gdnative/gdnative/aabb.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************/ -/* aabb.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/aabb.h" - -#include "core/math/aabb.h" -#include "core/os/memory.h" - -static_assert(sizeof(godot_aabb) == sizeof(AABB), "AABB size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_aabb_new(godot_aabb *p_self) { - memnew_placement(p_self, AABB); -} - -void GDAPI godot_aabb_new_copy(godot_aabb *r_dest, const godot_aabb *p_src) { - memnew_placement(r_dest, AABB(*(AABB *)p_src)); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/array.cpp b/modules/gdnative/gdnative/array.cpp deleted file mode 100644 index 31063e43c1..0000000000 --- a/modules/gdnative/gdnative/array.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************/ -/* array.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/array.h" - -#include "core/os/memory.h" -#include "core/variant/array.h" - -static_assert(sizeof(godot_array) == sizeof(Array), "Array size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_array_new(godot_array *p_self) { - memnew_placement(p_self, Array); -} - -void GDAPI godot_array_new_copy(godot_array *r_dest, const godot_array *p_src) { - memnew_placement(r_dest, Array(*(Array *)p_src)); -} - -void GDAPI godot_array_destroy(godot_array *p_self) { - ((Array *)p_self)->~Array(); -} - -godot_variant GDAPI *godot_array_operator_index(godot_array *p_self, godot_int p_index) { - Array *self = (Array *)p_self; - return (godot_variant *)&self->operator[](p_index); -} - -const godot_variant GDAPI *godot_array_operator_index_const(const godot_array *p_self, godot_int p_index) { - const Array *self = (const Array *)p_self; - return (const godot_variant *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/basis.cpp b/modules/gdnative/gdnative/basis.cpp deleted file mode 100644 index af7f9a2399..0000000000 --- a/modules/gdnative/gdnative/basis.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/*************************************************************************/ -/* basis.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/basis.h" - -#include "core/math/basis.h" - -static_assert(sizeof(godot_basis) == sizeof(Basis), "Basis size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_basis_new(godot_basis *p_self) { - memnew_placement(p_self, Basis); -} - -void GDAPI godot_basis_new_copy(godot_basis *r_dest, const godot_basis *p_src) { - memnew_placement(r_dest, Basis(*(Basis *)p_src)); -} - -godot_vector3 GDAPI *godot_basis_operator_index(godot_basis *p_self, godot_int p_index) { - Basis *self = (Basis *)p_self; - return (godot_vector3 *)&self->operator[](p_index); -} - -const godot_vector3 GDAPI *godot_basis_operator_index_const(const godot_basis *p_self, godot_int p_index) { - const Basis *self = (const Basis *)p_self; - return (const godot_vector3 *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/callable.cpp b/modules/gdnative/gdnative/callable.cpp deleted file mode 100644 index 7ae1038a13..0000000000 --- a/modules/gdnative/gdnative/callable.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************/ -/* callable.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/callable.h" - -#include "core/variant/callable.h" -#include "core/variant/variant.h" - -static_assert(sizeof(godot_callable) == sizeof(Callable), "Callable size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_callable_new(godot_callable *p_self) { - memnew_placement(p_self, Callable); -} - -void GDAPI godot_callable_new_copy(godot_callable *r_dest, const godot_callable *p_src) { - memnew_placement(r_dest, Callable(*(Callable *)p_src)); -} - -void GDAPI godot_callable_destroy(godot_callable *p_self) { - Callable *self = (Callable *)p_self; - self->~Callable(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/color.cpp b/modules/gdnative/gdnative/color.cpp deleted file mode 100644 index 8f13610b2c..0000000000 --- a/modules/gdnative/gdnative/color.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/*************************************************************************/ -/* color.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/color.h" - -#include "core/math/color.h" - -static_assert(sizeof(godot_color) == sizeof(Color), "Color size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_color_new(godot_color *p_self) { - memnew_placement(p_self, Color); -} - -void GDAPI godot_color_new_copy(godot_color *r_dest, const godot_color *p_src) { - memnew_placement(r_dest, Color(*(Color *)p_src)); -} - -float GDAPI *godot_color_operator_index(godot_color *p_self, godot_int p_index) { - Color *self = (Color *)p_self; - return (float *)&self->operator[](p_index); -} - -const float GDAPI *godot_color_operator_index_const(const godot_color *p_self, godot_int p_index) { - const Color *self = (const Color *)p_self; - return (const float *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/dictionary.cpp b/modules/gdnative/gdnative/dictionary.cpp deleted file mode 100644 index dea01dad43..0000000000 --- a/modules/gdnative/gdnative/dictionary.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************/ -/* dictionary.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/dictionary.h" - -#include "core/variant/dictionary.h" -#include "core/variant/variant.h" - -static_assert(sizeof(godot_dictionary) == sizeof(Dictionary), "Dictionary size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_dictionary_new(godot_dictionary *p_self) { - memnew_placement(p_self, Dictionary); -} - -void GDAPI godot_dictionary_new_copy(godot_dictionary *r_dest, const godot_dictionary *p_src) { - memnew_placement(r_dest, Dictionary(*(Dictionary *)p_src)); -} - -void GDAPI godot_dictionary_destroy(godot_dictionary *p_self) { - Dictionary *self = (Dictionary *)p_self; - self->~Dictionary(); -} - -godot_variant GDAPI *godot_dictionary_operator_index(godot_dictionary *p_self, const godot_variant *p_key) { - Dictionary *self = (Dictionary *)p_self; - return (godot_variant *)&self->operator[](*((const Variant *)p_key)); -} - -const godot_variant GDAPI *godot_dictionary_operator_index_const(const godot_dictionary *p_self, const godot_variant *p_key) { - const Dictionary *self = (const Dictionary *)p_self; - return (const godot_variant *)&self->operator[](*((const Variant *)p_key)); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/gdnative.cpp b/modules/gdnative/gdnative/gdnative.cpp deleted file mode 100644 index 8ba41b3224..0000000000 --- a/modules/gdnative/gdnative/gdnative.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/*************************************************************************/ -/* gdnative.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/gdnative.h" - -#include "core/config/engine.h" -#include "core/core_constants.h" -#include "core/error/error_macros.h" -#include "core/object/class_db.h" -#include "core/os/os.h" -#include "core/variant/variant.h" - -#include "modules/gdnative/gdnative.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_object_destroy(godot_object *p_o) { - memdelete((Object *)p_o); -} - -// Singleton API - -godot_object GDAPI *godot_global_get_singleton(char *p_name) { - return (godot_object *)Engine::get_singleton()->get_singleton_object(String(p_name)); -} // result shouldn't be freed - -// MethodBind API - -godot_method_bind GDAPI *godot_method_bind_get_method(const char *p_classname, const char *p_methodname) { - MethodBind *mb = ClassDB::get_method(StringName(p_classname), StringName(p_methodname)); - // MethodBind *mb = ClassDB::get_method("Node", "get_name"); - return (godot_method_bind *)mb; -} - -void GDAPI godot_method_bind_ptrcall(godot_method_bind *p_method_bind, godot_object *p_instance, const void **p_args, void *p_ret) { - MethodBind *mb = (MethodBind *)p_method_bind; - Object *o = (Object *)p_instance; - mb->ptrcall(o, p_args, p_ret); -} - -godot_variant GDAPI godot_method_bind_call(godot_method_bind *p_method_bind, godot_object *p_instance, const godot_variant **p_args, const int p_arg_count, godot_variant_call_error *p_call_error) { - MethodBind *mb = (MethodBind *)p_method_bind; - Object *o = (Object *)p_instance; - const Variant **args = (const Variant **)p_args; - - godot_variant ret; - godot_variant_new_nil(&ret); - - Variant *ret_val = (Variant *)&ret; - - Callable::CallError r_error; - *ret_val = mb->call(o, args, p_arg_count, r_error); - - if (p_call_error) { - p_call_error->error = (godot_variant_call_error_error)r_error.error; - p_call_error->argument = r_error.argument; - p_call_error->expected = (godot_variant_type)r_error.expected; - } - - return ret; -} - -godot_class_constructor GDAPI godot_get_class_constructor(const char *p_classname) { - ClassDB::ClassInfo *class_info = ClassDB::classes.getptr(StringName(p_classname)); - if (class_info) { - return (godot_class_constructor)class_info->creation_func; - } - return nullptr; -} - -godot_dictionary GDAPI godot_get_global_constants() { - godot_dictionary constants; - memnew_placement(&constants, Dictionary); - Dictionary *p_constants = (Dictionary *)&constants; - const int constants_count = CoreConstants::get_global_constant_count(); - for (int i = 0; i < constants_count; ++i) { - const char *name = CoreConstants::get_global_constant_name(i); - int value = CoreConstants::get_global_constant_value(i); - (*p_constants)[name] = value; - } - return constants; -} - -// System functions -void GDAPI godot_register_native_call_type(const char *p_call_type, native_call_cb p_callback) { - GDNativeCallRegistry::get_singleton()->register_native_call_type(StringName(p_call_type), p_callback); -} - -void GDAPI *godot_alloc(int p_bytes) { - return memalloc(p_bytes); -} - -void GDAPI *godot_realloc(void *p_ptr, int p_bytes) { - return memrealloc(p_ptr, p_bytes); -} - -void GDAPI godot_free(void *p_ptr) { - memfree(p_ptr); -} - -// Helper print functions. -void GDAPI godot_print_error(const char *p_description, const char *p_function, const char *p_file, int p_line) { - _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_ERROR); -} -void GDAPI godot_print_warning(const char *p_description, const char *p_function, const char *p_file, int p_line) { - _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_WARNING); -} -void GDAPI godot_print_script_error(const char *p_description, const char *p_function, const char *p_file, int p_line) { - _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_SCRIPT); -} - -void _gdnative_report_version_mismatch(const godot_object *p_library, const char *p_ext, godot_gdnative_api_version p_want, godot_gdnative_api_version p_have) { - String message = "Error loading GDNative file "; - GDNativeLibrary *library = (GDNativeLibrary *)p_library; - - message += library->get_current_library_path() + ": Extension \"" + p_ext + "\" can't be loaded.\n"; - - Dictionary versions; - versions["have_major"] = p_have.major; - versions["have_minor"] = p_have.minor; - versions["want_major"] = p_want.major; - versions["want_minor"] = p_want.minor; - - message += String("Got version {have_major}.{have_minor} but needs {want_major}.{want_minor}!").format(versions); - - _err_print_error("gdnative_init", library->get_current_library_path().utf8().ptr(), 0, message.utf8().ptr()); -} - -void _gdnative_report_loading_error(const godot_object *p_library, const char *p_what) { - String message = "Error loading GDNative file "; - GDNativeLibrary *library = (GDNativeLibrary *)p_library; - - message += library->get_current_library_path() + ": " + p_what; - - _err_print_error("gdnative_init", library->get_current_library_path().utf8().ptr(), 0, message.utf8().ptr()); -} - -godot_object GDAPI *godot_instance_from_id(uint64_t p_instance_id) { - return (godot_object *)ObjectDB::get_instance(ObjectID(p_instance_id)); -} - -void *godot_get_class_tag(const godot_string_name *p_class) { - StringName class_name = *(StringName *)p_class; - ClassDB::ClassInfo *class_info = ClassDB::classes.getptr(class_name); - return class_info ? class_info->class_ptr : nullptr; -} - -godot_object *godot_object_cast_to(const godot_object *p_object, void *p_class_tag) { - if (!p_object) { - return nullptr; - } - Object *o = (Object *)p_object; - - return o->is_class_ptr(p_class_tag) ? (godot_object *)o : nullptr; -} - -uint64_t GDAPI godot_object_get_instance_id(const godot_object *p_object) { - const Object *o = (const Object *)p_object; - return (uint64_t)o->get_instance_id(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/node_path.cpp b/modules/gdnative/gdnative/node_path.cpp deleted file mode 100644 index 3db705f550..0000000000 --- a/modules/gdnative/gdnative/node_path.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/*************************************************************************/ -/* node_path.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/node_path.h" - -#include "core/string/node_path.h" - -static_assert(sizeof(godot_node_path) == sizeof(NodePath), "NodePath size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_node_path_new(godot_node_path *p_self) { - memnew_placement(p_self, NodePath); -} - -void GDAPI godot_node_path_new_copy(godot_node_path *r_dest, const godot_node_path *p_src) { - memnew_placement(r_dest, NodePath(*(NodePath *)p_src)); -} - -void GDAPI godot_node_path_destroy(godot_node_path *p_self) { - NodePath *self = (NodePath *)p_self; - self->~NodePath(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/packed_arrays.cpp b/modules/gdnative/gdnative/packed_arrays.cpp deleted file mode 100644 index 0c49694e0b..0000000000 --- a/modules/gdnative/gdnative/packed_arrays.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/*************************************************************************/ -/* packed_arrays.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/packed_arrays.h" - -#include "core/variant/variant.h" - -#include "core/math/vector2i.h" -#include "core/math/vector3i.h" - -static_assert(sizeof(godot_packed_byte_array) == sizeof(PackedByteArray), "PackedByteArray size mismatch"); -static_assert(sizeof(godot_packed_int32_array) == sizeof(PackedInt32Array), "PackedInt32Array size mismatch"); -static_assert(sizeof(godot_packed_int64_array) == sizeof(PackedInt64Array), "PackedInt64Array size mismatch"); -static_assert(sizeof(godot_packed_float32_array) == sizeof(PackedFloat32Array), "PackedFloat32Array size mismatch"); -static_assert(sizeof(godot_packed_float64_array) == sizeof(PackedFloat64Array), "PackedFloat64Array size mismatch"); -static_assert(sizeof(godot_packed_string_array) == sizeof(PackedStringArray), "PackedStringArray size mismatch"); -static_assert(sizeof(godot_packed_vector2_array) == sizeof(PackedVector2Array), "PackedVector2Array size mismatch"); -static_assert(sizeof(godot_packed_vector2i_array) == sizeof(Vector<Vector2i>), "Vector<Vector2i> size mismatch"); -static_assert(sizeof(godot_packed_vector3_array) == sizeof(PackedVector3Array), "PackedVector3Array size mismatch"); -static_assert(sizeof(godot_packed_vector3i_array) == sizeof(Vector<Vector3i>), "Vector<Vector3i> size mismatch"); -static_assert(sizeof(godot_packed_color_array) == sizeof(PackedColorArray), "PackedColorArray size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -// byte - -void GDAPI godot_packed_byte_array_new(godot_packed_byte_array *p_self) { - memnew_placement(p_self, PackedByteArray); -} - -void GDAPI godot_packed_byte_array_new_copy(godot_packed_byte_array *r_dest, const godot_packed_byte_array *p_src) { - memnew_placement(r_dest, PackedByteArray(*(PackedByteArray *)p_src)); -} - -void GDAPI godot_packed_byte_array_destroy(godot_packed_byte_array *p_self) { - ((PackedByteArray *)p_self)->~PackedByteArray(); -} - -uint8_t GDAPI *godot_packed_byte_array_operator_index(godot_packed_byte_array *p_self, godot_int p_index) { - PackedByteArray *self = (PackedByteArray *)p_self; - return (uint8_t *)&self->operator[](p_index); -} - -const uint8_t GDAPI *godot_packed_byte_array_operator_index_const(const godot_packed_byte_array *p_self, godot_int p_index) { - const PackedByteArray *self = (const PackedByteArray *)p_self; - return (const uint8_t *)&self->operator[](p_index); -} - -// int32 - -void GDAPI godot_packed_int32_array_new(godot_packed_int32_array *p_self) { - memnew_placement(p_self, PackedInt32Array); -} - -void GDAPI godot_packed_int32_array_new_copy(godot_packed_int32_array *r_dest, const godot_packed_int32_array *p_src) { - memnew_placement(r_dest, PackedInt32Array(*(PackedInt32Array *)p_src)); -} - -void GDAPI godot_packed_int32_array_destroy(godot_packed_int32_array *p_self) { - ((PackedInt32Array *)p_self)->~PackedInt32Array(); -} - -int32_t GDAPI *godot_packed_int32_array_operator_index(godot_packed_int32_array *p_self, godot_int p_index) { - PackedInt32Array *self = (PackedInt32Array *)p_self; - return (int32_t *)&self->operator[](p_index); -} - -const int32_t GDAPI *godot_packed_int32_array_operator_index_const(const godot_packed_int32_array *p_self, godot_int p_index) { - const PackedInt32Array *self = (const PackedInt32Array *)p_self; - return (const int32_t *)&self->operator[](p_index); -} - -// int64 - -void GDAPI godot_packed_int64_array_new(godot_packed_int64_array *p_self) { - memnew_placement(p_self, PackedInt64Array); -} - -void GDAPI godot_packed_int64_array_new_copy(godot_packed_int64_array *r_dest, const godot_packed_int64_array *p_src) { - memnew_placement(r_dest, PackedInt64Array(*(PackedInt64Array *)p_src)); -} - -void GDAPI godot_packed_int64_array_destroy(godot_packed_int64_array *p_self) { - ((PackedInt64Array *)p_self)->~PackedInt64Array(); -} - -int64_t GDAPI *godot_packed_int64_array_operator_index(godot_packed_int64_array *p_self, godot_int p_index) { - PackedInt64Array *self = (PackedInt64Array *)p_self; - return (int64_t *)&self->operator[](p_index); -} - -const int64_t GDAPI *godot_packed_int64_array_operator_index_const(const godot_packed_int64_array *p_self, godot_int p_index) { - const PackedInt64Array *self = (const PackedInt64Array *)p_self; - return (const int64_t *)&self->operator[](p_index); -} - -// float32 - -void GDAPI godot_packed_float32_array_new(godot_packed_float32_array *p_self) { - memnew_placement(p_self, PackedFloat32Array); -} - -void GDAPI godot_packed_float32_array_new_copy(godot_packed_float32_array *r_dest, const godot_packed_float32_array *p_src) { - memnew_placement(r_dest, PackedFloat32Array(*(PackedFloat32Array *)p_src)); -} - -void GDAPI godot_packed_float32_array_destroy(godot_packed_float32_array *p_self) { - ((PackedFloat32Array *)p_self)->~PackedFloat32Array(); -} - -float GDAPI *godot_packed_float32_array_operator_index(godot_packed_float32_array *p_self, godot_int p_index) { - PackedFloat32Array *self = (PackedFloat32Array *)p_self; - return (float *)&self->operator[](p_index); -} - -const float GDAPI *godot_packed_float32_array_operator_index_const(const godot_packed_float32_array *p_self, godot_int p_index) { - const PackedFloat32Array *self = (const PackedFloat32Array *)p_self; - return (const float *)&self->operator[](p_index); -} - -// float64 - -void GDAPI godot_packed_float64_array_new(godot_packed_float64_array *p_self) { - memnew_placement(p_self, PackedFloat64Array); -} - -void GDAPI godot_packed_float64_array_new_copy(godot_packed_float64_array *r_dest, const godot_packed_float64_array *p_src) { - memnew_placement(r_dest, PackedFloat64Array(*(PackedFloat64Array *)p_src)); -} - -void GDAPI godot_packed_float64_array_destroy(godot_packed_float64_array *p_self) { - ((PackedFloat64Array *)p_self)->~PackedFloat64Array(); -} - -double GDAPI *godot_packed_float64_array_operator_index(godot_packed_float64_array *p_self, godot_int p_index) { - PackedFloat64Array *self = (PackedFloat64Array *)p_self; - return (double *)&self->operator[](p_index); -} - -const double GDAPI *godot_packed_float64_array_operator_index_const(const godot_packed_float64_array *p_self, godot_int p_index) { - const PackedFloat64Array *self = (const PackedFloat64Array *)p_self; - return (const double *)&self->operator[](p_index); -} - -// string - -void GDAPI godot_packed_string_array_new(godot_packed_string_array *p_self) { - memnew_placement(p_self, PackedStringArray); -} - -void GDAPI godot_packed_string_array_new_copy(godot_packed_string_array *r_dest, const godot_packed_string_array *p_src) { - memnew_placement(r_dest, PackedStringArray(*(PackedStringArray *)p_src)); -} - -void GDAPI godot_packed_string_array_destroy(godot_packed_string_array *p_self) { - ((PackedStringArray *)p_self)->~PackedStringArray(); -} - -godot_string GDAPI *godot_packed_string_array_operator_index(godot_packed_string_array *p_self, godot_int p_index) { - PackedStringArray *self = (PackedStringArray *)p_self; - return (godot_string *)&self->operator[](p_index); -} - -const godot_string GDAPI *godot_packed_string_array_operator_index_const(const godot_packed_string_array *p_self, godot_int p_index) { - const PackedStringArray *self = (const PackedStringArray *)p_self; - return (const godot_string *)&self->operator[](p_index); -} - -// vector2 - -void GDAPI godot_packed_vector2_array_new(godot_packed_vector2_array *p_self) { - memnew_placement(p_self, PackedVector2Array); -} - -void GDAPI godot_packed_vector2_array_new_copy(godot_packed_vector2_array *r_dest, const godot_packed_vector2_array *p_src) { - memnew_placement(r_dest, PackedVector2Array(*(PackedVector2Array *)p_src)); -} - -void GDAPI godot_packed_vector2_array_destroy(godot_packed_vector2_array *p_self) { - ((PackedVector2Array *)p_self)->~PackedVector2Array(); -} - -godot_vector2 GDAPI *godot_packed_vector2_array_operator_index(godot_packed_vector2_array *p_self, godot_int p_index) { - PackedVector2Array *self = (PackedVector2Array *)p_self; - return (godot_vector2 *)&self->operator[](p_index); -} - -const godot_vector2 GDAPI *godot_packed_vector2_array_operator_index_const(const godot_packed_vector2_array *p_self, godot_int p_index) { - const PackedVector2Array *self = (const PackedVector2Array *)p_self; - return (const godot_vector2 *)&self->operator[](p_index); -} - -// vector2i - -void GDAPI godot_packed_vector2i_array_new(godot_packed_vector2i_array *p_self) { - memnew_placement(p_self, Vector<Vector2i>); -} - -void GDAPI godot_packed_vector2i_array_new_copy(godot_packed_vector2i_array *r_dest, const godot_packed_vector2i_array *p_src) { - memnew_placement(r_dest, Vector<Vector2i>(*(Vector<Vector2i> *)p_src)); -} - -void GDAPI godot_packed_vector2i_array_destroy(godot_packed_vector2i_array *p_self) { - ((Vector<Vector2i> *)p_self)->~Vector(); -} - -godot_vector2i GDAPI *godot_packed_vector2i_array_operator_index(godot_packed_vector2i_array *p_self, godot_int p_index) { - Vector<Vector2i> *self = (Vector<Vector2i> *)p_self; - return (godot_vector2i *)&self->operator[](p_index); -} - -const godot_vector2i GDAPI *godot_packed_vector2i_array_operator_index_const(const godot_packed_vector2i_array *p_self, godot_int p_index) { - const Vector<Vector2i> *self = (const Vector<Vector2i> *)p_self; - return (const godot_vector2i *)&self->operator[](p_index); -} - -// vector3 - -void GDAPI godot_packed_vector3_array_new(godot_packed_vector3_array *p_self) { - memnew_placement(p_self, PackedVector3Array); -} - -void GDAPI godot_packed_vector3_array_new_copy(godot_packed_vector3_array *r_dest, const godot_packed_vector3_array *p_src) { - memnew_placement(r_dest, PackedVector3Array(*(PackedVector3Array *)p_src)); -} - -void GDAPI godot_packed_vector3_array_destroy(godot_packed_vector3_array *p_self) { - ((PackedVector3Array *)p_self)->~PackedVector3Array(); -} - -godot_vector3 GDAPI *godot_packed_vector3_array_operator_index(godot_packed_vector3_array *p_self, godot_int p_index) { - PackedVector3Array *self = (PackedVector3Array *)p_self; - return (godot_vector3 *)&self->operator[](p_index); -} - -const godot_vector3 GDAPI *godot_packed_vector3_array_operator_index_const(const godot_packed_vector3_array *p_self, godot_int p_index) { - const PackedVector3Array *self = (const PackedVector3Array *)p_self; - return (const godot_vector3 *)&self->operator[](p_index); -} - -// vector3i - -void GDAPI godot_packed_vector3i_array_new(godot_packed_vector3i_array *p_self) { - memnew_placement(p_self, Vector<Vector3i>); -} - -void GDAPI godot_packed_vector3i_array_new_copy(godot_packed_vector3i_array *r_dest, const godot_packed_vector3i_array *p_src) { - memnew_placement(r_dest, Vector<Vector3i>(*(Vector<Vector3i> *)p_src)); -} - -void GDAPI godot_packed_vector3i_array_destroy(godot_packed_vector3i_array *p_self) { - ((Vector<Vector3i> *)p_self)->~Vector(); -} - -godot_vector3i GDAPI *godot_packed_vector3i_array_operator_index(godot_packed_vector3i_array *p_self, godot_int p_index) { - Vector<Vector3i> *self = (Vector<Vector3i> *)p_self; - return (godot_vector3i *)&self->operator[](p_index); -} - -const godot_vector3i GDAPI *godot_packed_vector3i_array_operator_index_const(const godot_packed_vector3i_array *p_self, godot_int p_index) { - const Vector<Vector3i> *self = (const Vector<Vector3i> *)p_self; - return (const godot_vector3i *)&self->operator[](p_index); -} - -// color - -void GDAPI godot_packed_color_array_new(godot_packed_color_array *p_self) { - memnew_placement(p_self, PackedColorArray); -} - -void GDAPI godot_packed_color_array_new_copy(godot_packed_color_array *r_dest, const godot_packed_color_array *p_src) { - memnew_placement(r_dest, PackedColorArray(*(PackedColorArray *)p_src)); -} - -void GDAPI godot_packed_color_array_destroy(godot_packed_color_array *p_self) { - ((PackedColorArray *)p_self)->~PackedColorArray(); -} - -godot_color GDAPI *godot_packed_color_array_operator_index(godot_packed_color_array *p_self, godot_int p_index) { - PackedColorArray *self = (PackedColorArray *)p_self; - return (godot_color *)&self->operator[](p_index); -} - -const godot_color GDAPI *godot_packed_color_array_operator_index_const(const godot_packed_color_array *p_self, godot_int p_index) { - const PackedColorArray *self = (const PackedColorArray *)p_self; - return (const godot_color *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/plane.cpp b/modules/gdnative/gdnative/plane.cpp deleted file mode 100644 index 41fa0da5db..0000000000 --- a/modules/gdnative/gdnative/plane.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************/ -/* plane.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/plane.h" - -#include "core/math/plane.h" -#include "core/os/memory.h" - -static_assert(sizeof(godot_plane) == sizeof(Plane), "Plane size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_plane_new(godot_plane *p_self) { - memnew_placement(p_self, Plane); -} - -void GDAPI godot_plane_new_copy(godot_plane *r_dest, const godot_plane *p_src) { - memnew_placement(r_dest, Plane(*(Plane *)p_src)); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/quaternion.cpp b/modules/gdnative/gdnative/quaternion.cpp deleted file mode 100644 index b91e47e77e..0000000000 --- a/modules/gdnative/gdnative/quaternion.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/*************************************************************************/ -/* quaternion.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/quaternion.h" - -#include "core/math/quaternion.h" - -static_assert(sizeof(godot_quaternion) == sizeof(Quaternion), "Quaternion size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_quaternion_new(godot_quaternion *p_self) { - memnew_placement(p_self, Quaternion); -} - -void GDAPI godot_quaternion_new_copy(godot_quaternion *r_dest, const godot_quaternion *p_src) { - memnew_placement(r_dest, Quaternion(*(Quaternion *)p_src)); -} - -godot_real_t GDAPI *godot_quaternion_operator_index(godot_quaternion *p_self, godot_int p_index) { - Quaternion *self = (Quaternion *)p_self; - return (godot_real_t *)&self->operator[](p_index); -} - -const godot_real_t GDAPI *godot_quaternion_operator_index_const(const godot_quaternion *p_self, godot_int p_index) { - const Quaternion *self = (const Quaternion *)p_self; - return (const godot_real_t *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/rect2.cpp b/modules/gdnative/gdnative/rect2.cpp deleted file mode 100644 index 7e0ce76c26..0000000000 --- a/modules/gdnative/gdnative/rect2.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* rect2.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/rect2.h" - -#include "core/math/rect2.h" -#include "core/math/rect2i.h" -#include "core/os/memory.h" - -static_assert(sizeof(godot_rect2) == sizeof(Rect2), "Rect2 size mismatch"); -static_assert(sizeof(godot_rect2i) == sizeof(Rect2i), "Rect2i size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_rect2_new(godot_rect2 *p_self) { - memnew_placement(p_self, Rect2); -} - -void GDAPI godot_rect2_new_copy(godot_rect2 *r_dest, const godot_rect2 *p_src) { - memnew_placement(r_dest, Rect2(*(Rect2 *)p_src)); -} - -void GDAPI godot_rect2i_new(godot_rect2i *p_self) { - memnew_placement(p_self, Rect2i); -} - -void GDAPI godot_rect2i_new_copy(godot_rect2i *r_dest, const godot_rect2i *p_src) { - memnew_placement(r_dest, Rect2i(*(Rect2i *)p_src)); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/rid.cpp b/modules/gdnative/gdnative/rid.cpp deleted file mode 100644 index b40fa7c2c6..0000000000 --- a/modules/gdnative/gdnative/rid.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************/ -/* rid.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/rid.h" - -#include "core/os/memory.h" -#include "core/templates/rid.h" - -static_assert(sizeof(godot_rid) == sizeof(RID), "RID size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_rid_new(godot_rid *p_self) { - memnew_placement(p_self, RID); -} - -void GDAPI godot_rid_new_copy(godot_rid *r_dest, const godot_rid *p_src) { - memnew_placement(r_dest, RID(*(RID *)p_src)); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/signal.cpp b/modules/gdnative/gdnative/signal.cpp deleted file mode 100644 index 8293aed439..0000000000 --- a/modules/gdnative/gdnative/signal.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************/ -/* signal.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/signal.h" - -#include "core/variant/callable.h" -#include "core/variant/variant.h" - -static_assert(sizeof(godot_signal) == sizeof(Signal), "Signal size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_signal_new(godot_signal *p_self) { - memnew_placement(p_self, Signal); -} - -void GDAPI godot_signal_new_copy(godot_signal *r_dest, const godot_signal *p_src) { - memnew_placement(r_dest, Signal(*(Signal *)p_src)); -} - -void GDAPI godot_signal_destroy(godot_signal *p_self) { - Signal *self = (Signal *)p_self; - self->~Signal(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/string.cpp b/modules/gdnative/gdnative/string.cpp deleted file mode 100644 index 7a5d8c6703..0000000000 --- a/modules/gdnative/gdnative/string.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************************************/ -/* string.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/string.h" - -#include "core/string/ustring.h" - -static_assert(sizeof(godot_string) == sizeof(String), "String size mismatch"); -static_assert(sizeof(godot_char_type) == sizeof(char32_t), "char32_t size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_string_new(godot_string *r_dest) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); -} - -void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src) { - memnew_placement(r_dest, String(*(String *)p_src)); -} - -void GDAPI godot_string_new_with_latin1_chars(godot_string *r_dest, const char *p_contents) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - *dest = String(p_contents); -} - -void GDAPI godot_string_new_with_utf8_chars(godot_string *r_dest, const char *p_contents) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - dest->parse_utf8(p_contents); -} - -void GDAPI godot_string_new_with_utf16_chars(godot_string *r_dest, const char16_t *p_contents) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - dest->parse_utf16(p_contents); -} - -void GDAPI godot_string_new_with_utf32_chars(godot_string *r_dest, const char32_t *p_contents) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - *dest = String((const char32_t *)p_contents); -} - -void GDAPI godot_string_new_with_wide_chars(godot_string *r_dest, const wchar_t *p_contents) { - String *dest = (String *)r_dest; - if (sizeof(wchar_t) == 2) { - // wchar_t is 16 bit, parse. - memnew_placement(dest, String); - dest->parse_utf16((const char16_t *)p_contents); - } else { - // wchar_t is 32 bit, copy. - memnew_placement(dest, String); - *dest = String((const char32_t *)p_contents); - } -} - -void GDAPI godot_string_new_with_latin1_chars_and_len(godot_string *r_dest, const char *p_contents, const int p_size) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - *dest = String(p_contents, p_size); -} - -void GDAPI godot_string_new_with_utf8_chars_and_len(godot_string *r_dest, const char *p_contents, const int p_size) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - dest->parse_utf8(p_contents, p_size); -} - -void GDAPI godot_string_new_with_utf16_chars_and_len(godot_string *r_dest, const char16_t *p_contents, const int p_size) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - dest->parse_utf16(p_contents, p_size); -} - -void GDAPI godot_string_new_with_utf32_chars_and_len(godot_string *r_dest, const char32_t *p_contents, const int p_size) { - String *dest = (String *)r_dest; - memnew_placement(dest, String); - *dest = String((const char32_t *)p_contents, p_size); -} - -void GDAPI godot_string_new_with_wide_chars_and_len(godot_string *r_dest, const wchar_t *p_contents, const int p_size) { - String *dest = (String *)r_dest; - if (sizeof(wchar_t) == 2) { - // wchar_t is 16 bit, parse. - memnew_placement(dest, String); - dest->parse_utf16((const char16_t *)p_contents, p_size); - } else { - // wchar_t is 32 bit, copy. - memnew_placement(dest, String); - *dest = String((const char32_t *)p_contents, p_size); - } -} - -const char GDAPI *godot_string_to_latin1_chars(const godot_string *p_self) { - String *self = (String *)p_self; - return self->ascii(true).get_data(); -} - -const char GDAPI *godot_string_to_utf8_chars(const godot_string *p_self) { - String *self = (String *)p_self; - return self->utf8().get_data(); -} - -const char16_t GDAPI *godot_string_to_utf16_chars(const godot_string *p_self) { - String *self = (String *)p_self; - return self->utf16().get_data(); -} - -const char32_t GDAPI *godot_string_to_utf32_chars(const godot_string *p_self) { - String *self = (String *)p_self; - return self->get_data(); -} - -const wchar_t GDAPI *godot_string_to_wide_chars(const godot_string *p_self) { - String *self = (String *)p_self; - if (sizeof(wchar_t) == 2) { - return (const wchar_t *)self->utf16().get_data(); - } else { - return (const wchar_t *)self->get_data(); - } -} - -char32_t GDAPI *godot_string_operator_index(godot_string *p_self, godot_int p_index) { - String *self = (String *)p_self; - return self->ptrw(); -} - -const char32_t GDAPI *godot_string_operator_index_const(const godot_string *p_self, godot_int p_index) { - const String *self = (const String *)p_self; - return self->ptr(); -} - -void GDAPI godot_string_destroy(godot_string *p_self) { - String *self = (String *)p_self; - self->~String(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/string_name.cpp b/modules/gdnative/gdnative/string_name.cpp deleted file mode 100644 index 0bdacd2e5d..0000000000 --- a/modules/gdnative/gdnative/string_name.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* string_name.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/string_name.h" - -#include "core/string/string_name.h" - -static_assert(sizeof(godot_string_name) == sizeof(StringName), "StringName size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_string_name_new(godot_string_name *r_dest) { - StringName *dest = (StringName *)r_dest; - memnew_placement(dest, StringName); -} - -void GDAPI godot_string_name_new_copy(godot_string_name *r_dest, const godot_string_name *p_src) { - memnew_placement(r_dest, StringName(*(StringName *)p_src)); -} - -void GDAPI godot_string_name_new_with_latin1_chars(godot_string_name *r_dest, const char *p_contents) { - StringName *dest = (StringName *)r_dest; - memnew_placement(dest, StringName(p_contents)); -} - -void GDAPI godot_string_name_destroy(godot_string_name *p_self) { - StringName *self = (StringName *)p_self; - self->~StringName(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/transform2d.cpp b/modules/gdnative/gdnative/transform2d.cpp deleted file mode 100644 index 7dc07024e5..0000000000 --- a/modules/gdnative/gdnative/transform2d.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* transform2d.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/transform2d.h" - -#include "core/math/transform_2d.h" -#include "core/os/memory.h" - -static_assert(sizeof(godot_transform2d) == sizeof(Transform2D), "Transform2D size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_transform2d_new(godot_transform2d *p_self) { - memnew_placement(p_self, Transform2D); -} - -void GDAPI godot_transform2d_new_copy(godot_transform2d *r_dest, const godot_transform2d *p_src) { - memnew_placement(r_dest, Transform2D(*(Transform2D *)p_src)); -} - -godot_vector2 GDAPI *godot_transform2d_operator_index(godot_transform2d *p_self, godot_int p_index) { - Transform2D *self = (Transform2D *)p_self; - return (godot_vector2 *)&self->operator[](p_index); -} - -const godot_vector2 GDAPI *godot_transform2d_operator_index_const(const godot_transform2d *p_self, godot_int p_index) { - const Transform2D *self = (const Transform2D *)p_self; - return (const godot_vector2 *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/transform_3d.cpp b/modules/gdnative/gdnative/transform_3d.cpp deleted file mode 100644 index b47e8e69de..0000000000 --- a/modules/gdnative/gdnative/transform_3d.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************/ -/* transform_3d.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/transform_3d.h" - -#include "core/math/transform_3d.h" - -static_assert(sizeof(godot_transform3d) == sizeof(Transform3D), "Transform3D size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_transform3d_new(godot_transform3d *p_self) { - memnew_placement(p_self, Transform3D); -} - -void GDAPI godot_transform3d_new_copy(godot_transform3d *r_dest, const godot_transform3d *p_src) { - memnew_placement(r_dest, Transform3D(*(Transform3D *)p_src)); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp deleted file mode 100644 index 42fa77a174..0000000000 --- a/modules/gdnative/gdnative/variant.cpp +++ /dev/null @@ -1,1273 +0,0 @@ -/*************************************************************************/ -/* variant.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/variant.h" - -#include "core/object/ref_counted.h" -#include "core/variant/variant.h" - -#ifdef __cplusplus -extern "C" { -#endif - -static_assert(sizeof(godot_variant) == sizeof(Variant), "Variant size mismatch"); - -// Workaround GCC ICE on armv7hl which was affected GCC 6.0 up to 8.0 (GH-16100). -// It was fixed upstream in 8.1, and a fix was backported to 7.4. -// This can be removed once no supported distro ships with versions older than 7.4. -#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__) && \ - (__GNUC__ == 6 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4) || (__GNUC__ == 8 && __GNUC_MINOR__ < 1)) -#pragma GCC push_options -#pragma GCC optimize("-O0") -#endif - -#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__) && \ - (__GNUC__ == 6 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4) || (__GNUC__ == 8 && __GNUC_MINOR__ < 1)) -#pragma GCC pop_options -#endif - -// Memory - -void GDAPI godot_variant_new_copy(godot_variant *p_dest, const godot_variant *p_src) { - Variant *dest = (Variant *)p_dest; - const Variant *src = (const Variant *)p_src; - memnew_placement(dest, Variant(*src)); -} - -void GDAPI godot_variant_new_nil(godot_variant *r_dest) { - Variant *dest = (Variant *)r_dest; - memnew_placement(dest, Variant); -} - -void GDAPI godot_variant_new_bool(godot_variant *r_dest, const godot_bool p_b) { - Variant *dest = (Variant *)r_dest; - memnew_placement(dest, Variant(p_b)); -} - -void GDAPI godot_variant_new_int(godot_variant *r_dest, const godot_int p_i) { - Variant *dest = (Variant *)r_dest; - memnew_placement(dest, Variant(p_i)); -} - -void GDAPI godot_variant_new_float(godot_variant *r_dest, const godot_float p_r) { - Variant *dest = (Variant *)r_dest; - memnew_placement(dest, Variant(p_r)); -} - -void GDAPI godot_variant_new_string(godot_variant *r_dest, const godot_string *p_s) { - Variant *dest = (Variant *)r_dest; - const String *s = (const String *)p_s; - memnew_placement(dest, Variant(*s)); -} - -void GDAPI godot_variant_new_string_name(godot_variant *r_dest, const godot_string_name *p_s) { - Variant *dest = (Variant *)r_dest; - const StringName *s = (const StringName *)p_s; - memnew_placement(dest, Variant(*s)); -} - -void GDAPI godot_variant_new_vector2(godot_variant *r_dest, const godot_vector2 *p_v2) { - Variant *dest = (Variant *)r_dest; - const Vector2 *v2 = (const Vector2 *)p_v2; - memnew_placement(dest, Variant(*v2)); -} - -void GDAPI godot_variant_new_vector2i(godot_variant *r_dest, const godot_vector2i *p_v2) { - Variant *dest = (Variant *)r_dest; - const Vector2i *v2 = (const Vector2i *)p_v2; - memnew_placement(dest, Variant(*v2)); -} - -void GDAPI godot_variant_new_rect2(godot_variant *r_dest, const godot_rect2 *p_rect2) { - Variant *dest = (Variant *)r_dest; - const Rect2 *rect2 = (const Rect2 *)p_rect2; - memnew_placement(dest, Variant(*rect2)); -} - -void GDAPI godot_variant_new_rect2i(godot_variant *r_dest, const godot_rect2i *p_rect2) { - Variant *dest = (Variant *)r_dest; - const Rect2i *rect2 = (const Rect2i *)p_rect2; - memnew_placement(dest, Variant(*rect2)); -} - -void GDAPI godot_variant_new_vector3(godot_variant *r_dest, const godot_vector3 *p_v3) { - Variant *dest = (Variant *)r_dest; - const Vector3 *v3 = (const Vector3 *)p_v3; - memnew_placement(dest, Variant(*v3)); -} - -void GDAPI godot_variant_new_vector3i(godot_variant *r_dest, const godot_vector3i *p_v3) { - Variant *dest = (Variant *)r_dest; - const Vector3i *v3 = (const Vector3i *)p_v3; - memnew_placement(dest, Variant(*v3)); -} - -void GDAPI godot_variant_new_transform2d(godot_variant *r_dest, const godot_transform2d *p_t2d) { - Variant *dest = (Variant *)r_dest; - const Transform2D *t2d = (const Transform2D *)p_t2d; - memnew_placement(dest, Variant(*t2d)); -} - -void GDAPI godot_variant_new_plane(godot_variant *r_dest, const godot_plane *p_plane) { - Variant *dest = (Variant *)r_dest; - const Plane *plane = (const Plane *)p_plane; - memnew_placement(dest, Variant(*plane)); -} - -void GDAPI godot_variant_new_quaternion(godot_variant *r_dest, const godot_quaternion *p_quaternion) { - Variant *dest = (Variant *)r_dest; - const Quaternion *quaternion = (const Quaternion *)p_quaternion; - memnew_placement(dest, Variant(*quaternion)); -} - -void GDAPI godot_variant_new_aabb(godot_variant *r_dest, const godot_aabb *p_aabb) { - Variant *dest = (Variant *)r_dest; - const AABB *aabb = (const AABB *)p_aabb; - memnew_placement(dest, Variant(*aabb)); -} - -void GDAPI godot_variant_new_basis(godot_variant *r_dest, const godot_basis *p_basis) { - Variant *dest = (Variant *)r_dest; - const Basis *basis = (const Basis *)p_basis; - memnew_placement(dest, Variant(*basis)); -} - -void GDAPI godot_variant_new_transform3d(godot_variant *r_dest, const godot_transform3d *p_trans) { - Variant *dest = (Variant *)r_dest; - const Transform3D *trans = (const Transform3D *)p_trans; - memnew_placement(dest, Variant(*trans)); -} - -void GDAPI godot_variant_new_color(godot_variant *r_dest, const godot_color *p_color) { - Variant *dest = (Variant *)r_dest; - const Color *color = (const Color *)p_color; - memnew_placement(dest, Variant(*color)); -} - -void GDAPI godot_variant_new_node_path(godot_variant *r_dest, const godot_node_path *p_np) { - Variant *dest = (Variant *)r_dest; - const NodePath *np = (const NodePath *)p_np; - memnew_placement(dest, Variant(*np)); -} - -void GDAPI godot_variant_new_rid(godot_variant *r_dest, const godot_rid *p_rid) { - Variant *dest = (Variant *)r_dest; - const RID *rid = (const RID *)p_rid; - memnew_placement(dest, Variant(*rid)); -} - -void GDAPI godot_variant_new_callable(godot_variant *r_dest, const godot_callable *p_cb) { - Variant *dest = (Variant *)r_dest; - const Callable *cb = (const Callable *)p_cb; - memnew_placement(dest, Variant(*cb)); -} - -void GDAPI godot_variant_new_signal(godot_variant *r_dest, const godot_signal *p_signal) { - Variant *dest = (Variant *)r_dest; - const Signal *signal = (const Signal *)p_signal; - memnew_placement(dest, Variant(*signal)); -} - -void GDAPI godot_variant_new_object(godot_variant *r_dest, const godot_object *p_obj) { - Variant *dest = (Variant *)r_dest; - const Object *obj = (const Object *)p_obj; - const RefCounted *ref_counted = Object::cast_to<RefCounted>(obj); - REF ref; - if (ref_counted) { - ref = REF(ref_counted); - } - if (!ref.is_null()) { - memnew_placement(dest, Variant(ref)); - } else { -#if defined(DEBUG_METHODS_ENABLED) - if (ref_counted) { - ERR_PRINT("RefCounted object has 0 refcount in godot_variant_new_object - you lost it somewhere."); - } -#endif - memnew_placement(dest, Variant(obj)); - } -} - -void GDAPI godot_variant_new_dictionary(godot_variant *r_dest, const godot_dictionary *p_dict) { - Variant *dest = (Variant *)r_dest; - const Dictionary *dict = (const Dictionary *)p_dict; - memnew_placement(dest, Variant(*dict)); -} - -void GDAPI godot_variant_new_array(godot_variant *r_dest, const godot_array *p_arr) { - Variant *dest = (Variant *)r_dest; - const Array *arr = (const Array *)p_arr; - memnew_placement(dest, Variant(*arr)); -} - -void GDAPI godot_variant_new_packed_byte_array(godot_variant *r_dest, const godot_packed_byte_array *p_pba) { - Variant *dest = (Variant *)r_dest; - const PackedByteArray *pba = (const PackedByteArray *)p_pba; - memnew_placement(dest, Variant(*pba)); -} - -void GDAPI godot_variant_new_packed_int32_array(godot_variant *r_dest, const godot_packed_int32_array *p_pia) { - Variant *dest = (Variant *)r_dest; - const PackedInt32Array *pia = (const PackedInt32Array *)p_pia; - memnew_placement(dest, Variant(*pia)); -} - -void GDAPI godot_variant_new_packed_int64_array(godot_variant *r_dest, const godot_packed_int64_array *p_pia) { - Variant *dest = (Variant *)r_dest; - const PackedInt64Array *pia = (const PackedInt64Array *)p_pia; - memnew_placement(dest, Variant(*pia)); -} - -void GDAPI godot_variant_new_packed_float32_array(godot_variant *r_dest, const godot_packed_float32_array *p_pra) { - Variant *dest = (Variant *)r_dest; - const PackedFloat32Array *pra = (const PackedFloat32Array *)p_pra; - memnew_placement(dest, Variant(*pra)); -} - -void GDAPI godot_variant_new_packed_float64_array(godot_variant *r_dest, const godot_packed_float64_array *p_pra) { - Variant *dest = (Variant *)r_dest; - const PackedFloat64Array *pra = (const PackedFloat64Array *)p_pra; - memnew_placement(dest, Variant(*pra)); -} - -void GDAPI godot_variant_new_packed_string_array(godot_variant *r_dest, const godot_packed_string_array *p_psa) { - Variant *dest = (Variant *)r_dest; - const PackedStringArray *psa = (const PackedStringArray *)p_psa; - memnew_placement(dest, Variant(*psa)); -} - -void GDAPI godot_variant_new_packed_vector2_array(godot_variant *r_dest, const godot_packed_vector2_array *p_pv2a) { - Variant *dest = (Variant *)r_dest; - const PackedVector2Array *pv2a = (const PackedVector2Array *)p_pv2a; - memnew_placement(dest, Variant(*pv2a)); -} - -void GDAPI godot_variant_new_packed_vector3_array(godot_variant *r_dest, const godot_packed_vector3_array *p_pv3a) { - Variant *dest = (Variant *)r_dest; - const PackedVector3Array *pv3a = (const PackedVector3Array *)p_pv3a; - memnew_placement(dest, Variant(*pv3a)); -} - -void GDAPI godot_variant_new_packed_color_array(godot_variant *r_dest, const godot_packed_color_array *p_pca) { - Variant *dest = (Variant *)r_dest; - const PackedColorArray *pca = (const PackedColorArray *)p_pca; - memnew_placement(dest, Variant(*pca)); -} - -godot_bool GDAPI godot_variant_as_bool(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - return self->operator bool(); -} - -godot_int GDAPI godot_variant_as_int(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - return self->operator int64_t(); -} - -godot_float GDAPI godot_variant_as_float(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - return self->operator double(); -} - -godot_string GDAPI godot_variant_as_string(const godot_variant *p_self) { - godot_string raw_dest; - const Variant *self = (const Variant *)p_self; - String *dest = (String *)&raw_dest; - memnew_placement(dest, String(self->operator String())); // operator = is overloaded by String - return raw_dest; -} - -godot_string_name GDAPI godot_variant_as_string_name(const godot_variant *p_self) { - godot_string_name raw_dest; - const Variant *self = (const Variant *)p_self; - StringName *dest = (StringName *)&raw_dest; - memnew_placement(dest, StringName(self->operator StringName())); // operator = is overloaded by StringName - return raw_dest; -} - -godot_vector2 GDAPI godot_variant_as_vector2(const godot_variant *p_self) { - godot_vector2 raw_dest; - const Variant *self = (const Variant *)p_self; - Vector2 *dest = (Vector2 *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_vector2i GDAPI godot_variant_as_vector2i(const godot_variant *p_self) { - godot_vector2i raw_dest; - const Variant *self = (const Variant *)p_self; - Vector2i *dest = (Vector2i *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_rect2 GDAPI godot_variant_as_rect2(const godot_variant *p_self) { - godot_rect2 raw_dest; - const Variant *self = (const Variant *)p_self; - Rect2 *dest = (Rect2 *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_rect2i GDAPI godot_variant_as_rect2i(const godot_variant *p_self) { - godot_rect2i raw_dest; - const Variant *self = (const Variant *)p_self; - Rect2i *dest = (Rect2i *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_vector3 GDAPI godot_variant_as_vector3(const godot_variant *p_self) { - godot_vector3 raw_dest; - const Variant *self = (const Variant *)p_self; - Vector3 *dest = (Vector3 *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_vector3i GDAPI godot_variant_as_vector3i(const godot_variant *p_self) { - godot_vector3i raw_dest; - const Variant *self = (const Variant *)p_self; - Vector3i *dest = (Vector3i *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_transform2d GDAPI godot_variant_as_transform2d(const godot_variant *p_self) { - godot_transform2d raw_dest; - const Variant *self = (const Variant *)p_self; - Transform2D *dest = (Transform2D *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_plane GDAPI godot_variant_as_plane(const godot_variant *p_self) { - godot_plane raw_dest; - const Variant *self = (const Variant *)p_self; - Plane *dest = (Plane *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_quaternion GDAPI godot_variant_as_quaternion(const godot_variant *p_self) { - godot_quaternion raw_dest; - const Variant *self = (const Variant *)p_self; - Quaternion *dest = (Quaternion *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_aabb GDAPI godot_variant_as_aabb(const godot_variant *p_self) { - godot_aabb raw_dest; - const Variant *self = (const Variant *)p_self; - AABB *dest = (AABB *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_self) { - godot_basis raw_dest; - const Variant *self = (const Variant *)p_self; - Basis *dest = (Basis *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_transform3d GDAPI godot_variant_as_transform3d(const godot_variant *p_self) { - godot_transform3d raw_dest; - const Variant *self = (const Variant *)p_self; - Transform3D *dest = (Transform3D *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_color GDAPI godot_variant_as_color(const godot_variant *p_self) { - godot_color raw_dest; - const Variant *self = (const Variant *)p_self; - Color *dest = (Color *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_node_path GDAPI godot_variant_as_node_path(const godot_variant *p_self) { - godot_node_path raw_dest; - const Variant *self = (const Variant *)p_self; - NodePath *dest = (NodePath *)&raw_dest; - memnew_placement(dest, NodePath(self->operator NodePath())); // operator = is overloaded by NodePath - return raw_dest; -} - -godot_rid GDAPI godot_variant_as_rid(const godot_variant *p_self) { - godot_rid raw_dest; - const Variant *self = (const Variant *)p_self; - RID *dest = (RID *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_callable GDAPI godot_variant_as_callable(const godot_variant *p_self) { - godot_callable raw_dest; - const Variant *self = (const Variant *)p_self; - Callable *dest = (Callable *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_signal GDAPI godot_variant_as_signal(const godot_variant *p_self) { - godot_signal raw_dest; - const Variant *self = (const Variant *)p_self; - Signal *dest = (Signal *)&raw_dest; - *dest = *self; - return raw_dest; -} - -godot_object GDAPI *godot_variant_as_object(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - Object *dest; - dest = *self; - return (godot_object *)dest; -} - -godot_dictionary GDAPI godot_variant_as_dictionary(const godot_variant *p_self) { - godot_dictionary raw_dest; - const Variant *self = (const Variant *)p_self; - Dictionary *dest = (Dictionary *)&raw_dest; - memnew_placement(dest, Dictionary(self->operator Dictionary())); // operator = is overloaded by Dictionary - return raw_dest; -} - -godot_array GDAPI godot_variant_as_array(const godot_variant *p_self) { - godot_array raw_dest; - const Variant *self = (const Variant *)p_self; - Array *dest = (Array *)&raw_dest; - memnew_placement(dest, Array(self->operator Array())); // operator = is overloaded by Array - return raw_dest; -} - -godot_packed_byte_array GDAPI godot_variant_as_packed_byte_array(const godot_variant *p_self) { - godot_packed_byte_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedByteArray *dest = (PackedByteArray *)&raw_dest; - memnew_placement(dest, PackedByteArray(self->operator PackedByteArray())); // operator = is overloaded by PackedByteArray - *dest = *self; - return raw_dest; -} - -godot_packed_int32_array GDAPI godot_variant_as_packed_int32_array(const godot_variant *p_self) { - godot_packed_int32_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedInt32Array *dest = (PackedInt32Array *)&raw_dest; - memnew_placement(dest, PackedInt32Array(self->operator PackedInt32Array())); // operator = is overloaded by PackedInt32Array - *dest = *self; - return raw_dest; -} - -godot_packed_int64_array GDAPI godot_variant_as_packed_int64_array(const godot_variant *p_self) { - godot_packed_int64_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedInt64Array *dest = (PackedInt64Array *)&raw_dest; - memnew_placement(dest, PackedInt64Array(self->operator PackedInt64Array())); // operator = is overloaded by PackedInt64Array - *dest = *self; - return raw_dest; -} - -godot_packed_float32_array GDAPI godot_variant_as_packed_float32_array(const godot_variant *p_self) { - godot_packed_float32_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedFloat32Array *dest = (PackedFloat32Array *)&raw_dest; - memnew_placement(dest, PackedFloat32Array(self->operator PackedFloat32Array())); // operator = is overloaded by PackedFloat32Array - *dest = *self; - return raw_dest; -} - -godot_packed_float64_array GDAPI godot_variant_as_packed_float64_array(const godot_variant *p_self) { - godot_packed_float64_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedFloat64Array *dest = (PackedFloat64Array *)&raw_dest; - memnew_placement(dest, PackedFloat64Array(self->operator PackedFloat64Array())); // operator = is overloaded by PackedFloat64Array - *dest = *self; - return raw_dest; -} - -godot_packed_string_array GDAPI godot_variant_as_packed_string_array(const godot_variant *p_self) { - godot_packed_string_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedStringArray *dest = (PackedStringArray *)&raw_dest; - memnew_placement(dest, PackedStringArray(self->operator PackedStringArray())); // operator = is overloaded by PackedStringArray - *dest = *self; - return raw_dest; -} - -godot_packed_vector2_array GDAPI godot_variant_as_packed_vector2_array(const godot_variant *p_self) { - godot_packed_vector2_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedVector2Array *dest = (PackedVector2Array *)&raw_dest; - memnew_placement(dest, PackedVector2Array(self->operator PackedVector2Array())); // operator = is overloaded by PackedVector2Array - *dest = *self; - return raw_dest; -} - -godot_packed_vector3_array GDAPI godot_variant_as_packed_vector3_array(const godot_variant *p_self) { - godot_packed_vector3_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedVector3Array *dest = (PackedVector3Array *)&raw_dest; - memnew_placement(dest, PackedVector3Array(self->operator PackedVector3Array())); // operator = is overloaded by PackedVector3Array - *dest = *self; - return raw_dest; -} - -godot_packed_color_array GDAPI godot_variant_as_packed_color_array(const godot_variant *p_self) { - godot_packed_color_array raw_dest; - const Variant *self = (const Variant *)p_self; - PackedColorArray *dest = (PackedColorArray *)&raw_dest; - memnew_placement(dest, PackedColorArray(self->operator PackedColorArray())); // operator = is overloaded by PackedColorArray - *dest = *self; - return raw_dest; -} - -void GDAPI godot_variant_destroy(godot_variant *p_self) { - Variant *self = (Variant *)p_self; - self->~Variant(); -} - -// Dynamic interaction. - -void GDAPI godot_variant_call(godot_variant *p_self, const godot_string_name *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant *r_return, godot_variant_call_error *r_error) { - Variant *self = (Variant *)p_self; - const StringName *method = (const StringName *)p_method; - const Variant **args = (const Variant **)p_args; - Variant ret; - Callable::CallError error; - self->call(*method, args, p_argcount, ret, error); - memnew_placement(r_return, Variant(ret)); - - if (r_error) { - r_error->error = (godot_variant_call_error_error)error.error; - r_error->argument = error.argument; - r_error->expected = (godot_variant_type)error.expected; - } -} - -void GDAPI godot_variant_call_with_cstring(godot_variant *p_self, const char *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant *r_return, godot_variant_call_error *r_error) { - Variant *self = (Variant *)p_self; - const StringName method(p_method); - const Variant **args = (const Variant **)p_args; - Variant ret; - Callable::CallError error; - self->call(method, args, p_argcount, ret, error); - memnew_placement(r_return, Variant(ret)); - - if (r_error) { - r_error->error = (godot_variant_call_error_error)error.error; - r_error->argument = error.argument; - r_error->expected = (godot_variant_type)error.expected; - } -} - -void GDAPI godot_variant_call_static(godot_variant_type p_type, const godot_string_name *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant *r_return, godot_variant_call_error *r_error) { - Variant::Type type = (Variant::Type)p_type; - const StringName *method = (const StringName *)p_method; - const Variant **args = (const Variant **)p_args; - Variant ret; - Callable::CallError error; - Variant::call_static(type, *method, args, p_argcount, ret, error); - memnew_placement(r_return, Variant(ret)); - - if (r_error) { - r_error->error = (godot_variant_call_error_error)error.error; - r_error->argument = error.argument; - r_error->expected = (godot_variant_type)error.expected; - } -} - -void GDAPI godot_variant_call_static_with_cstring(godot_variant_type p_type, const char *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant *r_return, godot_variant_call_error *r_error) { - Variant::Type type = (Variant::Type)p_type; - const StringName method(p_method); - const Variant **args = (const Variant **)p_args; - Variant ret; - Callable::CallError error; - Variant::call_static(type, method, args, p_argcount, ret, error); - memnew_placement(r_return, Variant(ret)); - - if (r_error) { - r_error->error = (godot_variant_call_error_error)error.error; - r_error->argument = error.argument; - r_error->expected = (godot_variant_type)error.expected; - } -} - -void GDAPI godot_variant_evaluate(godot_variant_operator p_op, const godot_variant *p_a, const godot_variant *p_b, godot_variant *r_return, bool *r_valid) { - Variant::Operator op = (Variant::Operator)p_op; - const Variant *a = (const Variant *)p_a; - const Variant *b = (const Variant *)p_b; - Variant *ret = (Variant *)r_return; - Variant::evaluate(op, *a, *b, *ret, *r_valid); -} - -void GDAPI godot_variant_set(godot_variant *p_self, const godot_variant *p_key, const godot_variant *p_value, bool *r_valid) { - Variant *self = (Variant *)p_self; - const Variant *key = (const Variant *)p_key; - const Variant *value = (const Variant *)p_value; - - self->set(*key, *value, r_valid); -} - -void GDAPI godot_variant_set_named(godot_variant *p_self, const godot_string_name *p_key, const godot_variant *p_value, bool *r_valid) { - Variant *self = (Variant *)p_self; - const StringName *key = (const StringName *)p_key; - const Variant *value = (const Variant *)p_value; - - self->set_named(*key, *value, *r_valid); -} - -void GDAPI godot_variant_set_named_with_cstring(godot_variant *p_self, const char *p_key, const godot_variant *p_value, bool *r_valid) { - Variant *self = (Variant *)p_self; - const StringName key(p_key); - const Variant *value = (const Variant *)p_value; - - self->set_named(key, *value, *r_valid); -} - -void GDAPI godot_variant_set_keyed(godot_variant *p_self, const godot_variant *p_key, const godot_variant *p_value, bool *r_valid) { - Variant *self = (Variant *)p_self; - const Variant *key = (const Variant *)p_key; - const Variant *value = (const Variant *)p_value; - - self->set_keyed(*key, *value, *r_valid); -} - -void GDAPI godot_variant_set_indexed(godot_variant *p_self, godot_int p_index, const godot_variant *p_value, bool *r_valid, bool *r_oob) { - Variant *self = (Variant *)p_self; - const Variant *value = (const Variant *)p_value; - - self->set_indexed(p_index, value, *r_valid, *r_oob); -} - -godot_variant GDAPI godot_variant_get(const godot_variant *p_self, const godot_variant *p_key, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - const Variant *key = (const Variant *)p_key; - Variant ret; - - ret = self->get(*key, r_valid); - godot_variant result; - memnew_placement(&result, Variant(ret)); - return result; -} - -godot_variant GDAPI godot_variant_get_named(const godot_variant *p_self, const godot_string_name *p_key, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - const StringName *key = (const StringName *)p_key; - Variant ret; - - ret = self->get_named(*key, *r_valid); - godot_variant result; - memnew_placement(&result, Variant(ret)); - return result; -} - -godot_variant GDAPI godot_variant_get_named_with_cstring(const godot_variant *p_self, const char *p_key, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - const StringName *key = (const StringName *)p_key; - Variant ret; - - ret = self->get_named(*key, *r_valid); - godot_variant result; - memnew_placement(&result, Variant(ret)); - return result; -} - -godot_variant GDAPI godot_variant_get_keyed(const godot_variant *p_self, const godot_variant *p_key, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - const Variant *key = (const Variant *)p_key; - Variant ret; - - ret = self->get_keyed(*key, *r_valid); - godot_variant result; - memnew_placement(&result, Variant(ret)); - return result; -} - -godot_variant GDAPI godot_variant_get_indexed(const godot_variant *p_self, godot_int p_index, bool *r_valid, bool *r_oob) { - const Variant *self = (const Variant *)p_self; - Variant ret; - - ret = self->get_indexed(p_index, *r_valid, *r_oob); - godot_variant result; - memnew_placement(&result, Variant(ret)); - return result; -} - -/// Iteration. -bool GDAPI godot_variant_iter_init(const godot_variant *p_self, godot_variant *r_iter, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - Variant *iter = (Variant *)r_iter; - - return self->iter_init(*iter, *r_valid); -} - -bool GDAPI godot_variant_iter_next(const godot_variant *p_self, godot_variant *r_iter, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - Variant *iter = (Variant *)r_iter; - - return self->iter_next(*iter, *r_valid); -} - -godot_variant GDAPI godot_variant_iter_get(const godot_variant *p_self, godot_variant *r_iter, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - Variant *iter = (Variant *)r_iter; - - Variant result = self->iter_next(*iter, *r_valid); - godot_variant ret; - memnew_placement(&ret, Variant(result)); - return ret; -} - -/// Variant functions. -godot_bool GDAPI godot_variant_hash_compare(const godot_variant *p_self, const godot_variant *p_other) { - const Variant *self = (const Variant *)p_self; - const Variant *other = (const Variant *)p_other; - return self->hash_compare(*other); -} - -godot_bool GDAPI godot_variant_booleanize(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - return self->booleanize(); -} - -void GDAPI godot_variant_blend(const godot_variant *p_a, const godot_variant *p_b, float p_c, godot_variant *r_dst) { - const Variant *a = (const Variant *)p_a; - const Variant *b = (const Variant *)p_b; - Variant *dst = (Variant *)r_dst; - Variant::blend(*a, *b, p_c, *dst); -} - -void GDAPI godot_variant_interpolate(const godot_variant *p_a, const godot_variant *p_b, float p_c, godot_variant *r_dst) { - const Variant *a = (const Variant *)p_a; - const Variant *b = (const Variant *)p_b; - Variant *dst = (Variant *)r_dst; - Variant::interpolate(*a, *b, p_c, *dst); -} - -godot_variant GDAPI godot_variant_duplicate(const godot_variant *p_self, godot_bool p_deep) { - const Variant *self = (const Variant *)p_self; - Variant result = self->duplicate(p_deep); - godot_variant ret; - memnew_placement(&ret, Variant(result)); - return ret; -} - -godot_string GDAPI godot_variant_stringify(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - String result = *self; - godot_string ret; - memnew_placement(&ret, String(result)); - return ret; -} - -// Discovery API - -/// Operators -godot_validated_operator_evaluator GDAPI godot_variant_get_validated_operator_evaluator(godot_variant_operator p_operator, godot_variant_type p_type_a, godot_variant_type p_type_b) { - return (godot_validated_operator_evaluator)Variant::get_validated_operator_evaluator((Variant::Operator)p_operator, (Variant::Type)p_type_a, (Variant::Type)p_type_b); -} - -godot_ptr_operator_evaluator GDAPI godot_variant_get_ptr_operator_evaluator(godot_variant_operator p_operator, godot_variant_type p_type_a, godot_variant_type p_type_b) { - return (godot_ptr_operator_evaluator)Variant::get_ptr_operator_evaluator((Variant::Operator)p_operator, (Variant::Type)p_type_a, (Variant::Type)p_type_b); -} - -godot_variant_type GDAPI godot_variant_get_operator_return_type(godot_variant_operator p_operator, godot_variant_type p_type_a, godot_variant_type p_type_b) { - return (godot_variant_type)Variant::get_operator_return_type((Variant::Operator)p_operator, (Variant::Type)p_type_a, (Variant::Type)p_type_b); -} - -godot_string GDAPI godot_variant_get_operator_name(godot_variant_operator p_operator) { - String op_name = Variant::get_operator_name((Variant::Operator)p_operator); - godot_string ret; - memnew_placement(&ret, String(op_name)); - return ret; -} - -/// Built-in Methods - -bool GDAPI godot_variant_has_builtin_method(godot_variant_type p_type, const godot_string_name *p_method) { - return Variant::has_builtin_method((Variant::Type)p_type, *((const StringName *)p_method)); -} - -bool GDAPI godot_variant_has_builtin_method_with_cstring(godot_variant_type p_type, const char *p_method) { - return Variant::has_builtin_method((Variant::Type)p_type, StringName(p_method)); -} - -godot_validated_builtin_method GDAPI godot_variant_get_validated_builtin_method(godot_variant_type p_type, const godot_string_name *p_method) { - return (godot_validated_builtin_method)Variant::get_validated_builtin_method((Variant::Type)p_type, *((const StringName *)p_method)); -} - -godot_validated_builtin_method GDAPI godot_variant_get_validated_builtin_method_with_cstring(godot_variant_type p_type, const char *p_method) { - return (godot_validated_builtin_method)Variant::get_validated_builtin_method((Variant::Type)p_type, StringName(p_method)); -} - -godot_ptr_builtin_method GDAPI godot_variant_get_ptr_builtin_method(godot_variant_type p_type, const godot_string_name *p_method) { - return (godot_ptr_builtin_method)Variant::get_ptr_builtin_method((Variant::Type)p_type, *((const StringName *)p_method)); -} - -godot_ptr_builtin_method GDAPI godot_variant_get_ptr_builtin_method_with_cstring(godot_variant_type p_type, const char *p_method) { - return (godot_ptr_builtin_method)Variant::get_ptr_builtin_method((Variant::Type)p_type, StringName(p_method)); -} - -int GDAPI godot_variant_get_builtin_method_argument_count(godot_variant_type p_type, const godot_string_name *p_method) { - return Variant::get_builtin_method_argument_count((Variant::Type)p_type, *((const StringName *)p_method)); -} - -int GDAPI godot_variant_get_builtin_method_argument_count_with_cstring(godot_variant_type p_type, const char *p_method) { - return Variant::get_builtin_method_argument_count((Variant::Type)p_type, StringName(p_method)); -} - -godot_variant_type GDAPI godot_variant_get_builtin_method_argument_type(godot_variant_type p_type, const godot_string_name *p_method, int p_argument) { - return (godot_variant_type)Variant::get_builtin_method_argument_type((Variant::Type)p_type, *((const StringName *)p_method), p_argument); -} - -godot_variant_type GDAPI godot_variant_get_builtin_method_argument_type_with_cstring(godot_variant_type p_type, const char *p_method, int p_argument) { - return (godot_variant_type)Variant::get_builtin_method_argument_type((Variant::Type)p_type, StringName(p_method), p_argument); -} - -godot_string GDAPI godot_variant_get_builtin_method_argument_name(godot_variant_type p_type, const godot_string_name *p_method, int p_argument) { - String name = Variant::get_builtin_method_argument_name((Variant::Type)p_type, *((const StringName *)p_method), p_argument); - return *(godot_string *)&name; -} - -godot_string GDAPI godot_variant_get_builtin_method_argument_name_with_cstring(godot_variant_type p_type, const char *p_method, int p_argument) { - String name = Variant::get_builtin_method_argument_name((Variant::Type)p_type, StringName(p_method), p_argument); - return *(godot_string *)&name; -} - -bool GDAPI godot_variant_has_builtin_method_return_value(godot_variant_type p_type, const godot_string_name *p_method) { - return Variant::has_builtin_method_return_value((Variant::Type)p_type, *((const StringName *)p_method)); -} - -bool GDAPI godot_variant_has_builtin_method_return_value_with_cstring(godot_variant_type p_type, const char *p_method) { - return Variant::has_builtin_method_return_value((Variant::Type)p_type, StringName(p_method)); -} - -godot_variant_type GDAPI godot_variant_get_builtin_method_return_type(godot_variant_type p_type, const godot_string_name *p_method) { - return (godot_variant_type)Variant::get_builtin_method_return_type((Variant::Type)p_type, *((const StringName *)p_method)); -} - -godot_variant_type GDAPI godot_variant_get_builtin_method_return_type_with_cstring(godot_variant_type p_type, const char *p_method) { - return (godot_variant_type)Variant::get_builtin_method_return_type((Variant::Type)p_type, StringName(p_method)); -} - -bool GDAPI godot_variant_is_builtin_method_const(godot_variant_type p_type, const godot_string_name *p_method) { - return Variant::is_builtin_method_const((Variant::Type)p_type, *((const StringName *)p_method)); -} - -bool GDAPI godot_variant_is_builtin_method_const_with_cstring(godot_variant_type p_type, const char *p_method) { - return Variant::is_builtin_method_const((Variant::Type)p_type, StringName(p_method)); -} - -bool GDAPI godot_variant_is_builtin_method_static(godot_variant_type p_type, const godot_string_name *p_method) { - return Variant::is_builtin_method_static((Variant::Type)p_type, *((const StringName *)p_method)); -} - -bool GDAPI godot_variant_is_builtin_method_static_with_cstring(godot_variant_type p_type, const char *p_method) { - return Variant::is_builtin_method_static((Variant::Type)p_type, StringName(p_method)); -} - -bool GDAPI godot_variant_is_builtin_method_vararg(godot_variant_type p_type, const godot_string_name *p_method) { - return Variant::is_builtin_method_vararg((Variant::Type)p_type, *((const StringName *)p_method)); -} - -bool GDAPI godot_variant_is_builtin_method_vararg_with_cstring(godot_variant_type p_type, const char *p_method) { - return Variant::is_builtin_method_vararg((Variant::Type)p_type, StringName(p_method)); -} - -int GDAPI godot_variant_get_builtin_method_count(godot_variant_type p_type) { - return Variant::get_builtin_method_count((Variant::Type)p_type); -} - -void GDAPI godot_variant_get_builtin_method_list(godot_variant_type p_type, godot_string_name *r_list) { - List<StringName> list; - Variant::get_builtin_method_list((Variant::Type)p_type, &list); - int i = 0; - for (const StringName &E : list) { - memnew_placement(&r_list[i], StringName(E)); - } -} - -/// Constructors - -int GDAPI godot_variant_get_constructor_count(godot_variant_type p_type) { - return Variant::get_constructor_count((Variant::Type)p_type); -} - -godot_validated_constructor GDAPI godot_variant_get_validated_constructor(godot_variant_type p_type, int p_constructor) { - return (godot_validated_constructor)Variant::get_validated_constructor((Variant::Type)p_type, p_constructor); -} - -godot_ptr_constructor GDAPI godot_variant_get_ptr_constructor(godot_variant_type p_type, int p_constructor) { - return (godot_ptr_constructor)Variant::get_ptr_constructor((Variant::Type)p_type, p_constructor); -} - -int GDAPI godot_variant_get_constructor_argument_count(godot_variant_type p_type, int p_constructor) { - return Variant::get_constructor_argument_count((Variant::Type)p_type, p_constructor); -} - -godot_variant_type GDAPI godot_variant_get_constructor_argument_type(godot_variant_type p_type, int p_constructor, int p_argument) { - return (godot_variant_type)Variant::get_constructor_argument_type((Variant::Type)p_type, p_constructor, p_argument); -} - -godot_string GDAPI godot_variant_get_constructor_argument_name(godot_variant_type p_type, int p_constructor, int p_argument) { - String name = Variant::get_constructor_argument_name((Variant::Type)p_type, p_constructor, p_argument); - godot_string ret; - memnew_placement(&ret, String(name)); - return ret; -} - -void GDAPI godot_variant_construct(godot_variant_type p_type, godot_variant *p_base, const godot_variant **p_args, int p_argcount, godot_variant_call_error *r_error) { - Variant::construct((Variant::Type)p_type, *((Variant *)p_base), (const Variant **)p_args, p_argcount, *((Callable::CallError *)r_error)); -} - -/// Properties. -godot_variant_type GDAPI godot_variant_get_member_type(godot_variant_type p_type, const godot_string_name *p_member) { - return (godot_variant_type)Variant::get_member_type((Variant::Type)p_type, *((const StringName *)p_member)); -} - -godot_variant_type GDAPI godot_variant_get_member_type_with_cstring(godot_variant_type p_type, const char *p_member) { - return (godot_variant_type)Variant::get_member_type((Variant::Type)p_type, StringName(p_member)); -} - -int GDAPI godot_variant_get_member_count(godot_variant_type p_type) { - return Variant::get_member_count((Variant::Type)p_type); -} - -void GDAPI godot_variant_get_member_list(godot_variant_type p_type, godot_string_name *r_list) { - List<StringName> members; - Variant::get_member_list((Variant::Type)p_type, &members); - int i = 0; - for (const StringName &E : members) { - memnew_placement(&r_list[i++], StringName(E)); - } -} - -godot_validated_setter GDAPI godot_variant_get_validated_setter(godot_variant_type p_type, const godot_string_name *p_member) { - return (godot_validated_setter)Variant::get_member_validated_setter((Variant::Type)p_type, *((const StringName *)p_member)); -} - -godot_validated_setter GDAPI godot_variant_get_validated_setter_with_cstring(godot_variant_type p_type, const char *p_member) { - return (godot_validated_setter)Variant::get_member_validated_setter((Variant::Type)p_type, StringName(p_member)); -} - -godot_validated_getter GDAPI godot_variant_get_validated_getter(godot_variant_type p_type, const godot_string_name *p_member) { - return (godot_validated_getter)Variant::get_member_validated_getter((Variant::Type)p_type, *((const StringName *)p_member)); -} - -godot_validated_getter GDAPI godot_variant_get_validated_getter_with_cstring(godot_variant_type p_type, const char *p_member) { - return (godot_validated_getter)Variant::get_member_validated_getter((Variant::Type)p_type, StringName(p_member)); -} - -godot_ptr_setter GDAPI godot_variant_get_ptr_setter(godot_variant_type p_type, const godot_string_name *p_member) { - return (godot_ptr_setter)Variant::get_member_ptr_setter((Variant::Type)p_type, *((const StringName *)p_member)); -} - -godot_ptr_setter GDAPI godot_variant_get_ptr_setter_with_cstring(godot_variant_type p_type, const char *p_member) { - return (godot_ptr_setter)Variant::get_member_ptr_setter((Variant::Type)p_type, StringName(p_member)); -} - -godot_ptr_getter GDAPI godot_variant_get_ptr_getter(godot_variant_type p_type, const godot_string_name *p_member) { - return (godot_ptr_getter)Variant::get_member_ptr_getter((Variant::Type)p_type, *((const StringName *)p_member)); -} - -godot_ptr_getter GDAPI godot_variant_get_ptr_getter_with_cstring(godot_variant_type p_type, const char *p_member) { - return (godot_ptr_getter)Variant::get_member_ptr_getter((Variant::Type)p_type, StringName(p_member)); -} - -/// Indexing. -bool GDAPI godot_variant_has_indexing(godot_variant_type p_type) { - return Variant::has_indexing((Variant::Type)p_type); -} - -godot_variant_type GDAPI godot_variant_get_indexed_element_type(godot_variant_type p_type) { - return (godot_variant_type)Variant::get_indexed_element_type((Variant::Type)p_type); -} - -godot_validated_indexed_setter GDAPI godot_variant_get_validated_indexed_setter(godot_variant_type p_type) { - return (godot_validated_indexed_setter)Variant::get_member_validated_indexed_setter((Variant::Type)p_type); -} - -godot_validated_indexed_getter GDAPI godot_variant_get_validated_indexed_getter(godot_variant_type p_type) { - return (godot_validated_indexed_getter)Variant::get_member_validated_indexed_getter((Variant::Type)p_type); -} - -godot_ptr_indexed_setter GDAPI godot_variant_get_ptr_indexed_setter(godot_variant_type p_type) { - return (godot_ptr_indexed_setter)Variant::get_member_ptr_indexed_setter((Variant::Type)p_type); -} - -godot_ptr_indexed_getter GDAPI godot_variant_get_ptr_indexed_getter(godot_variant_type p_type) { - return (godot_ptr_indexed_getter)Variant::get_member_ptr_indexed_getter((Variant::Type)p_type); -} - -uint64_t GDAPI godot_variant_get_indexed_size(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - return self->get_indexed_size(); -} - -/// Keying. -bool GDAPI godot_variant_is_keyed(godot_variant_type p_type) { - return Variant::is_keyed((Variant::Type)p_type); -} - -godot_validated_keyed_setter GDAPI godot_variant_get_validated_keyed_setter(godot_variant_type p_type) { - return (godot_validated_keyed_setter)Variant::get_member_validated_keyed_setter((Variant::Type)p_type); -} - -godot_validated_keyed_getter GDAPI godot_variant_get_validated_keyed_getter(godot_variant_type p_type) { - return (godot_validated_keyed_getter)Variant::get_member_validated_keyed_getter((Variant::Type)p_type); -} - -godot_validated_keyed_checker GDAPI godot_variant_get_validated_keyed_checker(godot_variant_type p_type) { - return (godot_validated_keyed_checker)Variant::get_member_validated_keyed_checker((Variant::Type)p_type); -} - -godot_ptr_keyed_setter GDAPI godot_variant_get_ptr_keyed_setter(godot_variant_type p_type) { - return (godot_ptr_keyed_setter)Variant::get_member_ptr_keyed_setter((Variant::Type)p_type); -} - -godot_ptr_keyed_getter GDAPI godot_variant_get_ptr_keyed_getter(godot_variant_type p_type) { - return (godot_ptr_keyed_getter)Variant::get_member_ptr_keyed_getter((Variant::Type)p_type); -} - -godot_ptr_keyed_checker GDAPI godot_variant_get_ptr_keyed_checker(godot_variant_type p_type) { - return (godot_ptr_keyed_checker)Variant::get_member_ptr_keyed_checker((Variant::Type)p_type); -} - -/// Constants. -int GDAPI godot_variant_get_constants_count(godot_variant_type p_type) { - return Variant::get_constants_count_for_type((Variant::Type)p_type); -} - -void GDAPI godot_variant_get_constants_list(godot_variant_type p_type, godot_string_name *r_list) { - List<StringName> constants; - int i = 0; - Variant::get_constants_for_type((Variant::Type)p_type, &constants); - for (const StringName &E : constants) { - memnew_placement(&r_list[i++], StringName(E)); - } -} - -bool GDAPI godot_variant_has_constant(godot_variant_type p_type, const godot_string_name *p_constant) { - return Variant::has_constant((Variant::Type)p_type, *((const StringName *)p_constant)); -} - -bool GDAPI godot_variant_has_constant_with_cstring(godot_variant_type p_type, const char *p_constant) { - return Variant::has_constant((Variant::Type)p_type, StringName(p_constant)); -} - -godot_variant GDAPI godot_variant_get_constant_value(godot_variant_type p_type, const godot_string_name *p_constant) { - Variant constant = Variant::get_constant_value((Variant::Type)p_type, *((const StringName *)p_constant)); - godot_variant ret; - memnew_placement(&ret, Variant(constant)); - return ret; -} - -godot_variant GDAPI godot_variant_get_constant_value_with_cstring(godot_variant_type p_type, const char *p_constant) { - Variant constant = Variant::get_constant_value((Variant::Type)p_type, StringName(p_constant)); - godot_variant ret; - memnew_placement(&ret, Variant(constant)); - return ret; -} - -/// Utilities. -bool GDAPI godot_variant_has_utility_function(const godot_string_name *p_function) { - return Variant::has_utility_function(*((const StringName *)p_function)); -} - -bool GDAPI godot_variant_has_utility_function_with_cstring(const char *p_function) { - return Variant::has_utility_function(StringName(p_function)); -} - -void GDAPI godot_variant_call_utility_function(const godot_string_name *p_function, godot_variant *r_ret, const godot_variant **p_args, int p_argument_count, godot_variant_call_error *r_error) { - const StringName *function = (const StringName *)p_function; - Variant *ret = (Variant *)r_ret; - const Variant **args = (const Variant **)p_args; - Callable::CallError error; - - Variant::call_utility_function(*function, ret, args, p_argument_count, error); - - if (r_error) { - r_error->error = (godot_variant_call_error_error)error.error; - r_error->argument = error.argument; - r_error->expected = (godot_variant_type)error.expected; - } -} - -void GDAPI godot_variant_call_utility_function_with_cstring(const char *p_function, godot_variant *r_ret, const godot_variant **p_args, int p_argument_count, godot_variant_call_error *r_error) { - Variant *ret = (Variant *)r_ret; - const Variant **args = (const Variant **)p_args; - Callable::CallError error; - - Variant::call_utility_function(StringName(p_function), ret, args, p_argument_count, error); - - if (r_error) { - r_error->error = (godot_variant_call_error_error)error.error; - r_error->argument = error.argument; - r_error->expected = (godot_variant_type)error.expected; - } -} - -godot_ptr_utility_function GDAPI godot_variant_get_ptr_utility_function(const godot_string_name *p_function) { - return (godot_ptr_utility_function)Variant::get_ptr_utility_function(*((const StringName *)p_function)); -} - -godot_ptr_utility_function GDAPI godot_variant_get_ptr_utility_function_with_cstring(const char *p_function) { - return (godot_ptr_utility_function)Variant::get_ptr_utility_function(StringName(p_function)); -} - -godot_validated_utility_function GDAPI godot_variant_get_validated_utility_function(const godot_string_name *p_function) { - return (godot_validated_utility_function)Variant::get_validated_utility_function(*((const StringName *)p_function)); -} - -godot_validated_utility_function GDAPI godot_variant_get_validated_utility_function_with_cstring(const char *p_function) { - return (godot_validated_utility_function)Variant::get_validated_utility_function(StringName(p_function)); -} - -godot_variant_utility_function_type GDAPI godot_variant_get_utility_function_type(const godot_string_name *p_function) { - return (godot_variant_utility_function_type)Variant::get_utility_function_type(*((const StringName *)p_function)); -} - -godot_variant_utility_function_type GDAPI godot_variant_get_utility_function_type_with_cstring(const char *p_function) { - return (godot_variant_utility_function_type)Variant::get_utility_function_type(StringName(p_function)); -} - -int GDAPI godot_variant_get_utility_function_argument_count(const godot_string_name *p_function) { - return Variant::get_utility_function_argument_count(*((const StringName *)p_function)); -} - -int GDAPI godot_variant_get_utility_function_argument_count_with_cstring(const char *p_function) { - return Variant::get_utility_function_argument_count(StringName(p_function)); -} - -godot_variant_type GDAPI godot_variant_get_utility_function_argument_type(const godot_string_name *p_function, int p_argument) { - return (godot_variant_type)Variant::get_utility_function_argument_type(*((const StringName *)p_function), p_argument); -} - -godot_variant_type GDAPI godot_variant_get_utility_function_argument_type_with_cstring(const char *p_function, int p_argument) { - return (godot_variant_type)Variant::get_utility_function_argument_type(StringName(p_function), p_argument); -} - -godot_string GDAPI godot_variant_get_utility_function_argument_name(const godot_string_name *p_function, int p_argument) { - String argument_name = Variant::get_utility_function_argument_name(*((const StringName *)p_function), p_argument); - godot_string ret; - memnew_placement(&ret, String(argument_name)); - return ret; -} - -godot_string GDAPI godot_variant_get_utility_function_argument_name_with_cstring(const char *p_function, int p_argument) { - String argument_name = Variant::get_utility_function_argument_name(StringName(p_function), p_argument); - godot_string ret; - memnew_placement(&ret, String(argument_name)); - return ret; -} - -bool GDAPI godot_variant_has_utility_function_return_value(const godot_string_name *p_function) { - return Variant::has_utility_function_return_value(*((const StringName *)p_function)); -} - -bool GDAPI godot_variant_has_utility_function_return_value_with_cstring(const char *p_function) { - return Variant::has_utility_function_return_value(StringName(p_function)); -} - -godot_variant_type GDAPI godot_variant_get_utility_function_return_type(const godot_string_name *p_function) { - return (godot_variant_type)Variant::get_utility_function_return_type(*((const StringName *)p_function)); -} - -godot_variant_type GDAPI godot_variant_get_utility_function_return_type_with_cstring(const char *p_function) { - return (godot_variant_type)Variant::get_utility_function_return_type(StringName(p_function)); -} - -bool GDAPI godot_variant_is_utility_function_vararg(const godot_string_name *p_function) { - return Variant::is_utility_function_vararg(*((const StringName *)p_function)); -} - -bool GDAPI godot_variant_is_utility_function_vararg_with_cstring(const char *p_function) { - return Variant::is_utility_function_vararg(StringName(p_function)); -} - -int GDAPI godot_variant_get_utility_function_count() { - return Variant::get_utility_function_count(); -} - -void GDAPI godot_variant_get_utility_function_list(godot_string_name *r_functions) { - List<StringName> functions; - godot_string_name *func = r_functions; - Variant::get_utility_function_list(&functions); - - for (const StringName &E : functions) { - memnew_placement(func++, StringName(E)); - } -} - -// Introspection. - -godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_self) { - const Variant *self = (const Variant *)p_self; - return (godot_variant_type)self->get_type(); -} - -bool GDAPI godot_variant_has_method(const godot_variant *p_self, const godot_string_name *p_method) { - const Variant *self = (const Variant *)p_self; - const StringName *method = (const StringName *)p_method; - return self->has_method(*method); -} - -bool GDAPI godot_variant_has_member(godot_variant_type p_type, const godot_string_name *p_member) { - return Variant::has_member((Variant::Type)p_type, *((const StringName *)p_member)); -} - -bool GDAPI godot_variant_has_key(const godot_variant *p_self, const godot_variant *p_key, bool *r_valid) { - const Variant *self = (const Variant *)p_self; - const Variant *key = (const Variant *)p_key; - return self->has_key(*key, *r_valid); -} - -godot_string GDAPI godot_variant_get_type_name(godot_variant_type p_type) { - String name = Variant::get_type_name((Variant::Type)p_type); - godot_string ret; - memnew_placement(&ret, String(name)); - return ret; -} - -bool GDAPI godot_variant_can_convert(godot_variant_type p_from, godot_variant_type p_to) { - return Variant::can_convert((Variant::Type)p_from, (Variant::Type)p_to); -} - -bool GDAPI godot_variant_can_convert_strict(godot_variant_type p_from, godot_variant_type p_to) { - return Variant::can_convert_strict((Variant::Type)p_from, (Variant::Type)p_to); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/vector2.cpp b/modules/gdnative/gdnative/vector2.cpp deleted file mode 100644 index a8d4281d25..0000000000 --- a/modules/gdnative/gdnative/vector2.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/*************************************************************************/ -/* vector2.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/vector2.h" - -#include "core/math/vector2.h" -#include "core/math/vector2i.h" -#include "core/os/memory.h" - -static_assert(sizeof(godot_vector2) == sizeof(Vector2), "Vector2 size mismatch"); -static_assert(sizeof(godot_vector2i) == sizeof(Vector2i), "Vector2i size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_vector2_new(godot_vector2 *p_self) { - memnew_placement(p_self, Vector2); -} - -void GDAPI godot_vector2_new_copy(godot_vector2 *r_dest, const godot_vector2 *p_src) { - memnew_placement(r_dest, Vector2(*(Vector2 *)p_src)); -} - -void GDAPI godot_vector2i_new(godot_vector2i *p_self) { - memnew_placement(p_self, Vector2i); -} - -void GDAPI godot_vector2i_new_copy(godot_vector2i *r_dest, const godot_vector2i *p_src) { - memnew_placement(r_dest, Vector2i(*(Vector2i *)p_src)); -} - -godot_real_t GDAPI *godot_vector2_operator_index(godot_vector2 *p_self, godot_int p_index) { - Vector2 *self = (Vector2 *)p_self; - return (godot_real_t *)&self->operator[](p_index); -} - -const godot_real_t GDAPI *godot_vector2_operator_index_const(const godot_vector2 *p_self, godot_int p_index) { - const Vector2 *self = (const Vector2 *)p_self; - return (const godot_real_t *)&self->operator[](p_index); -} - -int32_t GDAPI *godot_vector2i_operator_index(godot_vector2i *p_self, godot_int p_index) { - Vector2i *self = (Vector2i *)p_self; - return (int32_t *)&self->operator[](p_index); -} - -const int32_t GDAPI *godot_vector2i_operator_index_const(const godot_vector2i *p_self, godot_int p_index) { - const Vector2i *self = (const Vector2i *)p_self; - return (const int32_t *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative/vector3.cpp b/modules/gdnative/gdnative/vector3.cpp deleted file mode 100644 index 37c88c3cca..0000000000 --- a/modules/gdnative/gdnative/vector3.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/*************************************************************************/ -/* vector3.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "gdnative/vector3.h" - -#include "core/math/vector3.h" -#include "core/math/vector3i.h" -#include "core/os/memory.h" - -static_assert(sizeof(godot_vector3) == sizeof(Vector3), "Vector3 size mismatch"); -static_assert(sizeof(godot_vector3i) == sizeof(Vector3i), "Vector3i size mismatch"); - -#ifdef __cplusplus -extern "C" { -#endif - -void GDAPI godot_vector3_new(godot_vector3 *p_self) { - memnew_placement(p_self, Vector3); -} - -void GDAPI godot_vector3_new_copy(godot_vector3 *r_dest, const godot_vector3 *p_src) { - memnew_placement(r_dest, Vector3(*(Vector3 *)p_src)); -} - -void GDAPI godot_vector3i_new(godot_vector3i *p_self) { - memnew_placement(p_self, Vector3i); -} - -void GDAPI godot_vector3i_new_copy(godot_vector3i *r_dest, const godot_vector3i *p_src) { - memnew_placement(r_dest, Vector3i(*(Vector3i *)p_src)); -} - -godot_real_t GDAPI *godot_vector3_operator_index(godot_vector3 *p_self, godot_int p_index) { - Vector3 *self = (Vector3 *)p_self; - return (godot_real_t *)&self->operator[](p_index); -} - -const godot_real_t GDAPI *godot_vector3_operator_index_const(const godot_vector3 *p_self, godot_int p_index) { - const Vector3 *self = (const Vector3 *)p_self; - return (const godot_real_t *)&self->operator[](p_index); -} - -int32_t GDAPI *godot_vector3i_operator_index(godot_vector3i *p_self, godot_int p_index) { - Vector3i *self = (Vector3i *)p_self; - return (int32_t *)&self->operator[](p_index); -} - -const int32_t GDAPI *godot_vector3i_operator_index_const(const godot_vector3i *p_self, godot_int p_index) { - const Vector3i *self = (const Vector3i *)p_self; - return (const int32_t *)&self->operator[](p_index); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json deleted file mode 100644 index cf1c7dc01f..0000000000 --- a/modules/gdnative/gdnative_api.json +++ /dev/null @@ -1,5108 +0,0 @@ -{ - "core": { - "type": "CORE", - "version": { - "major": 4, - "minor": 0 - }, - "next": null, - "api": [ - { - "name": "godot_object_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_object *", - "p_o" - ] - ] - }, - { - "name": "godot_global_get_singleton", - "return_type": "godot_object *", - "arguments": [ - [ - "char *", - "p_name" - ] - ] - }, - { - "name": "godot_method_bind_get_method", - "return_type": "godot_method_bind *", - "arguments": [ - [ - "const char *", - "p_classname" - ], - [ - "const char *", - "p_methodname" - ] - ] - }, - { - "name": "godot_method_bind_ptrcall", - "return_type": "void", - "arguments": [ - [ - "godot_method_bind *", - "p_method_bind" - ], - [ - "godot_object *", - "p_instance" - ], - [ - "const void **", - "p_args" - ], - [ - "void *", - "p_ret" - ] - ] - }, - { - "name": "godot_method_bind_call", - "return_type": "godot_variant", - "arguments": [ - [ - "godot_method_bind *", - "p_method_bind" - ], - [ - "godot_object *", - "p_instance" - ], - [ - "const godot_variant **", - "p_args" - ], - [ - "const int", - "p_arg_count" - ], - [ - "godot_variant_call_error *", - "p_call_error" - ] - ] - }, - { - "name": "godot_get_class_constructor", - "return_type": "godot_class_constructor", - "arguments": [ - [ - "const char *", - "p_classname" - ] - ] - }, - { - "name": "godot_get_global_constants", - "return_type": "godot_dictionary", - "arguments": [] - }, - { - "name": "godot_register_native_call_type", - "return_type": "void", - "arguments": [ - [ - "const char *", - "call_type" - ], - [ - "native_call_cb", - "p_callback" - ] - ] - }, - { - "name": "godot_alloc", - "return_type": "void *", - "arguments": [ - [ - "int", - "p_bytes" - ] - ] - }, - { - "name": "godot_realloc", - "return_type": "void *", - "arguments": [ - [ - "void *", - "p_ptr" - ], - [ - "int", - "p_bytes" - ] - ] - }, - { - "name": "godot_free", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_ptr" - ] - ] - }, - { - "name": "godot_print_error", - "return_type": "void", - "arguments": [ - [ - "const char *", - "p_description" - ], - [ - "const char *", - "p_function" - ], - [ - "const char *", - "p_file" - ], - [ - "int", - "p_line" - ] - ] - }, - { - "name": "godot_print_warning", - "return_type": "void", - "arguments": [ - [ - "const char *", - "p_description" - ], - [ - "const char *", - "p_function" - ], - [ - "const char *", - "p_file" - ], - [ - "int", - "p_line" - ] - ] - }, - { - "name": "godot_print_script_error", - "return_type": "void", - "arguments": [ - [ - "const char *", - "p_description" - ], - [ - "const char *", - "p_function" - ], - [ - "const char *", - "p_file" - ], - [ - "int", - "p_line" - ] - ] - }, - { - "name": "godot_get_class_tag", - "return_type": "void *", - "arguments": [ - [ - "const godot_string_name *", - "p_class" - ] - ] - }, - { - "name": "godot_object_cast_to", - "return_type": "godot_object *", - "arguments": [ - [ - "const godot_object *", - "p_object" - ], - [ - "void *", - "p_class_tag" - ] - ] - }, - { - "name": "godot_instance_from_id", - "return_type": "godot_object *", - "arguments": [ - [ - "uint64_t", - "p_instance_id" - ] - ] - }, - { - "name": "godot_object_get_instance_id", - "return_type": "uint64_t", - "arguments": [ - [ - "const godot_object *", - "p_object" - ] - ] - }, - { - "name": "godot_variant_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_variant *", - "p_src" - ] - ] - }, - { - "name": "godot_variant_new_nil", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ] - ] - }, - { - "name": "godot_variant_new_bool", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_bool", - "p_b" - ] - ] - }, - { - "name": "godot_variant_new_int", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const int64_t", - "p_i" - ] - ] - }, - { - "name": "godot_variant_new_float", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const double", - "p_f" - ] - ] - }, - { - "name": "godot_variant_new_string", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_string *", - "p_s" - ] - ] - }, - { - "name": "godot_variant_new_string_name", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_string_name *", - "p_s" - ] - ] - }, - { - "name": "godot_variant_new_vector2", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_vector2 *", - "p_v2" - ] - ] - }, - { - "name": "godot_variant_new_vector2i", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_vector2i *", - "p_v2" - ] - ] - }, - { - "name": "godot_variant_new_rect2", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_rect2 *", - "p_rect2" - ] - ] - }, - { - "name": "godot_variant_new_rect2i", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_rect2i *", - "p_rect2" - ] - ] - }, - { - "name": "godot_variant_new_vector3", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_vector3 *", - "p_v3" - ] - ] - }, - { - "name": "godot_variant_new_vector3i", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_vector3i *", - "p_v3" - ] - ] - }, - { - "name": "godot_variant_new_transform2d", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_transform2d *", - "p_t2d" - ] - ] - }, - { - "name": "godot_variant_new_plane", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_plane *", - "p_plane" - ] - ] - }, - { - "name": "godot_variant_new_quaternion", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_quaternion *", - "p_quaternion" - ] - ] - }, - { - "name": "godot_variant_new_aabb", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_aabb *", - "p_aabb" - ] - ] - }, - { - "name": "godot_variant_new_basis", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_basis *", - "p_basis" - ] - ] - }, - { - "name": "godot_variant_new_transform3d", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_transform3d *", - "p_trans" - ] - ] - }, - { - "name": "godot_variant_new_color", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_color *", - "p_color" - ] - ] - }, - { - "name": "godot_variant_new_node_path", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_node_path *", - "p_np" - ] - ] - }, - { - "name": "godot_variant_new_rid", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_rid *", - "p_rid" - ] - ] - }, - { - "name": "godot_variant_new_object", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_object *", - "p_obj" - ] - ] - }, - { - "name": "godot_variant_new_callable", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_callable *", - "p_cb" - ] - ] - }, - { - "name": "godot_variant_new_signal", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_signal *", - "p_signal" - ] - ] - }, - { - "name": "godot_variant_new_dictionary", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_dictionary *", - "p_dict" - ] - ] - }, - { - "name": "godot_variant_new_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_array *", - "p_arr" - ] - ] - }, - { - "name": "godot_variant_new_packed_byte_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_byte_array *", - "p_pba" - ] - ] - }, - { - "name": "godot_variant_new_packed_int32_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_int32_array *", - "p_pia" - ] - ] - }, - { - "name": "godot_variant_new_packed_int64_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_int64_array *", - "p_pia" - ] - ] - }, - { - "name": "godot_variant_new_packed_float32_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_float32_array *", - "p_pra" - ] - ] - }, - { - "name": "godot_variant_new_packed_float64_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_float64_array *", - "p_pra" - ] - ] - }, - { - "name": "godot_variant_new_packed_string_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_string_array *", - "p_psa" - ] - ] - }, - { - "name": "godot_variant_new_packed_vector2_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_vector2_array *", - "p_pv2a" - ] - ] - }, - { - "name": "godot_variant_new_packed_vector3_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_vector3_array *", - "p_pv3a" - ] - ] - }, - { - "name": "godot_variant_new_packed_color_array", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "r_dest" - ], - [ - "const godot_packed_color_array *", - "p_pca" - ] - ] - }, - { - "name": "godot_variant_as_bool", - "return_type": "godot_bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_int", - "return_type": "int64_t", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_float", - "return_type": "double", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_string", - "return_type": "godot_string", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_string_name", - "return_type": "godot_string_name", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_vector2", - "return_type": "godot_vector2", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_vector2i", - "return_type": "godot_vector2i", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_rect2", - "return_type": "godot_rect2", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_rect2i", - "return_type": "godot_rect2i", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_vector3", - "return_type": "godot_vector3", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_vector3i", - "return_type": "godot_vector3i", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_transform2d", - "return_type": "godot_transform2d", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_plane", - "return_type": "godot_plane", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_quaternion", - "return_type": "godot_quaternion", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_aabb", - "return_type": "godot_aabb", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_basis", - "return_type": "godot_basis", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_transform3d", - "return_type": "godot_transform3d", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_color", - "return_type": "godot_color", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_node_path", - "return_type": "godot_node_path", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_rid", - "return_type": "godot_rid", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_object", - "return_type": "godot_object *", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_callable", - "return_type": "godot_callable", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_signal", - "return_type": "godot_signal", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_dictionary", - "return_type": "godot_dictionary", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_array", - "return_type": "godot_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_byte_array", - "return_type": "godot_packed_byte_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_int32_array", - "return_type": "godot_packed_int32_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_int64_array", - "return_type": "godot_packed_int64_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_float32_array", - "return_type": "godot_packed_float32_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_float64_array", - "return_type": "godot_packed_float64_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_string_array", - "return_type": "godot_packed_string_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_vector2_array", - "return_type": "godot_packed_vector2_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_vector3_array", - "return_type": "godot_packed_vector3_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_as_packed_color_array", - "return_type": "godot_packed_color_array", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_call", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "const godot_string_name *", - "p_method" - ], - [ - "const godot_variant **", - "p_args" - ], - [ - "const godot_int", - "p_argument_count" - ], - [ - "godot_variant *", - "r_return" - ], - [ - "godot_variant_call_error *", - "r_error" - ] - ] - }, - { - "name": "godot_variant_call_with_cstring", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "const char *", - "p_method" - ], - [ - "const godot_variant **", - "p_args" - ], - [ - "const godot_int", - "p_argument_count" - ], - [ - "godot_variant *", - "r_return" - ], - [ - "godot_variant_call_error *", - "r_error" - ] - ] - }, - { - "name": "godot_variant_evaluate", - "return_type": "void", - "arguments": [ - [ - "godot_variant_operator", - "p_op" - ], - [ - "const godot_variant *", - "p_a" - ], - [ - "const godot_variant *", - "p_b" - ], - [ - "godot_variant *", - "r_return" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_set", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ], - [ - "const godot_variant *", - "p_value" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_set_named", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "const godot_string_name *", - "p_key" - ], - [ - "const godot_variant *", - "p_value" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_set_named_with_cstring", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "const char *", - "p_key" - ], - [ - "const godot_variant *", - "p_value" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_set_keyed", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ], - [ - "const godot_variant *", - "p_value" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_set_indexed", - "return_type": "void", - "arguments": [ - [ - "godot_variant *", - "p_self" - ], - [ - "godot_int", - "p_index" - ], - [ - "const godot_variant *", - "p_value" - ], - [ - "bool *", - "r_valid" - ], - [ - "bool *", - "r_oob" - ] - ] - }, - { - "name": "godot_variant_get", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_get_named", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const godot_string_name *", - "p_key" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_get_named_with_cstring", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const char *", - "p_key" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_get_keyed", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_get_indexed", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "godot_int", - "p_index" - ], - [ - "bool *", - "r_valid" - ], - [ - "bool *", - "r_oob" - ] - ] - }, - { - "name": "godot_variant_iter_init", - "return_type": "bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "godot_variant *", - "r_iter" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_iter_next", - "return_type": "bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "godot_variant *", - "r_iter" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_iter_get", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "godot_variant *", - "r_iter" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_hash_compare", - "return_type": "godot_bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const godot_variant *", - "p_other" - ] - ] - }, - { - "name": "godot_variant_booleanize", - "return_type": "godot_bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_blend", - "return_type": "void", - "arguments": [ - [ - "const godot_variant *", - "p_a" - ], - [ - "const godot_variant *", - "p_b" - ], - [ - "float", - "p_c" - ], - [ - "godot_variant *", - "r_dst" - ] - ] - }, - { - "name": "godot_variant_interpolate", - "return_type": "void", - "arguments": [ - [ - "const godot_variant *", - "p_a" - ], - [ - "const godot_variant *", - "p_b" - ], - [ - "float", - "p_c" - ], - [ - "godot_variant *", - "r_dst" - ] - ] - }, - { - "name": "godot_variant_duplicate", - "return_type": "godot_variant", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "godot_bool", - "p_deep" - ] - ] - }, - { - "name": "godot_variant_stringify", - "return_type": "godot_string", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_get_validated_operator_evaluator", - "return_type": "godot_validated_operator_evaluator", - "arguments": [ - [ - "godot_variant_operator", - "p_operator" - ], - [ - "godot_variant_type", - "p_type_a" - ], - [ - "godot_variant_type", - "p_type_b" - ] - ] - }, - { - "name": "godot_variant_get_ptr_operator_evaluator", - "return_type": "godot_ptr_operator_evaluator", - "arguments": [ - [ - "godot_variant_operator", - "p_operator" - ], - [ - "godot_variant_type", - "p_type_a" - ], - [ - "godot_variant_type", - "p_type_b" - ] - ] - }, - { - "name": "godot_variant_get_operator_return_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_operator", - "p_operator" - ], - [ - "godot_variant_type", - "p_type_a" - ], - [ - "godot_variant_type", - "p_type_b" - ] - ] - }, - { - "name": "godot_variant_get_operator_name", - "return_type": "godot_string", - "arguments": [ - [ - "godot_variant_operator", - "p_operator" - ] - ] - }, - { - "name": "godot_variant_has_builtin_method", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_has_builtin_method_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_validated_builtin_method", - "return_type": "godot_validated_builtin_method", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_validated_builtin_method_with_cstring", - "return_type": "godot_validated_builtin_method", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_ptr_builtin_method", - "return_type": "godot_ptr_builtin_method", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_ptr_builtin_method_with_cstring", - "return_type": "godot_ptr_builtin_method", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_argument_count", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_argument_count_with_cstring", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_argument_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_argument_type_with_cstring", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_argument_name", - "return_type": "godot_string", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_argument_name_with_cstring", - "return_type": "godot_string", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_has_builtin_method_return_value", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_has_builtin_method_return_value_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_return_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_return_type_with_cstring", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_is_builtin_method_const", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_is_builtin_method_const_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_is_builtin_method_static", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_is_builtin_method_static_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_is_builtin_method_vararg", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_is_builtin_method_vararg_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_count", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_builtin_method_list", - "return_type": "void", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "godot_string_name *", - "r_list" - ] - ] - }, - { - "name": "godot_variant_get_constructor_count", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_validated_constructor", - "return_type": "godot_validated_constructor", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "int", - "p_constructor" - ] - ] - }, - { - "name": "godot_variant_get_ptr_constructor", - "return_type": "godot_ptr_constructor", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "int", - "p_constructor" - ] - ] - }, - { - "name": "godot_variant_get_constructor_argument_count", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "int", - "p_constructor" - ] - ] - }, - { - "name": "godot_variant_get_constructor_argument_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "int", - "p_constructor" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_constructor_argument_name", - "return_type": "godot_string", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "int", - "p_constructor" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_construct", - "return_type": "void", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "godot_variant *", - "p_base" - ], - [ - "const godot_variant **", - "p_args" - ], - [ - "int", - "p_argument_count" - ], - [ - "godot_variant_call_error *", - "r_error" - ] - ] - }, - { - "name": "godot_variant_get_member_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_member_type_with_cstring", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_member_count", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_member_list", - "return_type": "void", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "godot_string_name *", - "r_list" - ] - ] - }, - { - "name": "godot_variant_get_validated_setter", - "return_type": "godot_validated_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_validated_setter_with_cstring", - "return_type": "godot_validated_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_validated_getter", - "return_type": "godot_validated_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_validated_getter_with_cstring", - "return_type": "godot_validated_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_ptr_setter", - "return_type": "godot_ptr_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_ptr_setter_with_cstring", - "return_type": "godot_ptr_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_ptr_getter", - "return_type": "godot_ptr_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_get_ptr_getter_with_cstring", - "return_type": "godot_ptr_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_has_indexing", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_indexed_element_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_validated_indexed_setter", - "return_type": "godot_validated_indexed_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_validated_indexed_getter", - "return_type": "godot_validated_indexed_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_ptr_indexed_setter", - "return_type": "godot_ptr_indexed_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_ptr_indexed_getter", - "return_type": "godot_ptr_indexed_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_indexed_size", - "return_type": "uint64_t", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_is_keyed", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_validated_keyed_setter", - "return_type": "godot_validated_keyed_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_validated_keyed_getter", - "return_type": "godot_validated_keyed_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_validated_keyed_checker", - "return_type": "godot_validated_keyed_checker", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_ptr_keyed_setter", - "return_type": "godot_ptr_keyed_setter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_ptr_keyed_getter", - "return_type": "godot_ptr_keyed_getter", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_ptr_keyed_checker", - "return_type": "godot_ptr_keyed_checker", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_constants_count", - "return_type": "int", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_get_constants_list", - "return_type": "void", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "godot_string_name *", - "r_list" - ] - ] - }, - { - "name": "godot_variant_has_constant", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_constant" - ] - ] - }, - { - "name": "godot_variant_has_constant_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_constant" - ] - ] - }, - { - "name": "godot_variant_get_constant_value", - "return_type": "godot_variant", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_constant" - ] - ] - }, - { - "name": "godot_variant_get_constant_value_with_cstring", - "return_type": "godot_variant", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const char *", - "p_constant" - ] - ] - }, - { - "name": "godot_variant_has_utility_function", - "return_type": "bool", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_has_utility_function_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_call_utility_function", - "return_type": "void", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ], - [ - "godot_variant *", - "r_ret" - ], - [ - "const godot_variant **", - "p_args" - ], - [ - "int", - "p_argument_count" - ], - [ - "godot_variant_call_error *", - "r_error" - ] - ] - }, - { - "name": "godot_variant_call_utility_function_with_cstring", - "return_type": "void", - "arguments": [ - [ - "const char *", - "p_function" - ], - [ - "godot_variant *", - "r_ret" - ], - [ - "const godot_variant **", - "p_args" - ], - [ - "int", - "p_argument_count" - ], - [ - "godot_variant_call_error *", - "r_error" - ] - ] - }, - { - "name": "godot_variant_get_ptr_utility_function", - "return_type": "godot_ptr_utility_function", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_ptr_utility_function_with_cstring", - "return_type": "godot_ptr_utility_function", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_validated_utility_function", - "return_type": "godot_validated_utility_function", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_validated_utility_function_with_cstring", - "return_type": "godot_validated_utility_function", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_type", - "return_type": "godot_variant_utility_function_type", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_type_with_cstring", - "return_type": "godot_variant_utility_function_type", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_argument_count", - "return_type": "int", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_argument_count_with_cstring", - "return_type": "int", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_argument_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_argument_type_with_cstring", - "return_type": "godot_variant_type", - "arguments": [ - [ - "const char *", - "p_function" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_argument_name", - "return_type": "godot_string", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_argument_name_with_cstring", - "return_type": "godot_string", - "arguments": [ - [ - "const char *", - "p_function" - ], - [ - "int", - "p_argument" - ] - ] - }, - { - "name": "godot_variant_has_utility_function_return_value", - "return_type": "bool", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_has_utility_function_return_value_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_return_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_return_type_with_cstring", - "return_type": "godot_variant_type", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_is_utility_function_vararg", - "return_type": "bool", - "arguments": [ - [ - "const godot_string_name *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_is_utility_function_vararg_with_cstring", - "return_type": "bool", - "arguments": [ - [ - "const char *", - "p_function" - ] - ] - }, - { - "name": "godot_variant_get_utility_function_count", - "return_type": "int", - "arguments": [] - }, - { - "name": "godot_variant_get_utility_function_list", - "return_type": "void", - "arguments": [ - [ - "godot_string_name *", - "r_functions" - ] - ] - }, - { - "name": "godot_variant_get_type", - "return_type": "godot_variant_type", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ] - ] - }, - { - "name": "godot_variant_has_method", - "return_type": "bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const godot_string_name *", - "p_method" - ] - ] - }, - { - "name": "godot_variant_has_member", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ], - [ - "const godot_string_name *", - "p_member" - ] - ] - }, - { - "name": "godot_variant_has_key", - "return_type": "bool", - "arguments": [ - [ - "const godot_variant *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ], - [ - "bool *", - "r_valid" - ] - ] - }, - { - "name": "godot_variant_get_type_name", - "return_type": "godot_string", - "arguments": [ - [ - "godot_variant_type", - "p_type" - ] - ] - }, - { - "name": "godot_variant_can_convert", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_from" - ], - [ - "godot_variant_type", - "p_to" - ] - ] - }, - { - "name": "godot_variant_can_convert_strict", - "return_type": "bool", - "arguments": [ - [ - "godot_variant_type", - "p_from" - ], - [ - "godot_variant_type", - "p_to" - ] - ] - }, - { - "name": "godot_aabb_new", - "return_type": "void", - "arguments": [ - [ - "godot_aabb *", - "p_self" - ] - ] - }, - { - "name": "godot_aabb_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_aabb *", - "r_dest" - ], - [ - "const godot_aabb *", - "p_src" - ] - ] - }, - { - "name": "godot_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_array *", - "p_self" - ] - ] - }, - { - "name": "godot_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_array *", - "r_dest" - ], - [ - "const godot_array *", - "p_src" - ] - ] - }, - { - "name": "godot_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_array *", - "p_self" - ] - ] - }, - { - "name": "godot_array_operator_index", - "return_type": "godot_variant *", - "arguments": [ - [ - "godot_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_array_operator_index_const", - "return_type": "const godot_variant *", - "arguments": [ - [ - "const godot_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_basis_new", - "return_type": "void", - "arguments": [ - [ - "godot_basis *", - "p_self" - ] - ] - }, - { - "name": "godot_basis_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_basis *", - "r_dest" - ], - [ - "const godot_basis *", - "p_src" - ] - ] - }, - { - "name": "godot_basis_operator_index", - "return_type": "godot_vector3 *", - "arguments": [ - [ - "godot_basis *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_basis_operator_index_const", - "return_type": "const godot_vector3 *", - "arguments": [ - [ - "const godot_basis *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_callable_new", - "return_type": "void", - "arguments": [ - [ - "godot_callable *", - "p_self" - ] - ] - }, - { - "name": "godot_callable_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_callable *", - "r_dest" - ], - [ - "const godot_callable *", - "p_src" - ] - ] - }, - { - "name": "godot_callable_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_callable *", - "p_self" - ] - ] - }, - { - "name": "godot_color_new", - "return_type": "void", - "arguments": [ - [ - "godot_color *", - "p_self" - ] - ] - }, - { - "name": "godot_color_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_color *", - "r_dest" - ], - [ - "const godot_color *", - "p_src" - ] - ] - }, - { - "name": "godot_color_operator_index", - "return_type": "float *", - "arguments": [ - [ - "godot_color *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_color_operator_index_const", - "return_type": "const float *", - "arguments": [ - [ - "const godot_color *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_dictionary_new", - "return_type": "void", - "arguments": [ - [ - "godot_dictionary *", - "p_self" - ] - ] - }, - { - "name": "godot_dictionary_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_dictionary *", - "r_dest" - ], - [ - "const godot_dictionary *", - "p_src" - ] - ] - }, - { - "name": "godot_dictionary_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_dictionary *", - "p_self" - ] - ] - }, - { - "name": "godot_dictionary_operator_index", - "return_type": "godot_variant *", - "arguments": [ - [ - "godot_dictionary *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ] - ] - }, - { - "name": "godot_dictionary_operator_index_const", - "return_type": "const godot_variant *", - "arguments": [ - [ - "const godot_dictionary *", - "p_self" - ], - [ - "const godot_variant *", - "p_key" - ] - ] - }, - { - "name": "godot_node_path_new", - "return_type": "void", - "arguments": [ - [ - "godot_node_path *", - "p_self" - ] - ] - }, - { - "name": "godot_node_path_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_node_path *", - "r_dest" - ], - [ - "const godot_node_path *", - "p_src" - ] - ] - }, - { - "name": "godot_node_path_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_node_path *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_byte_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_byte_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_byte_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_byte_array *", - "r_dest" - ], - [ - "const godot_packed_byte_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_byte_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_byte_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_byte_array_operator_index", - "return_type": "uint8_t *", - "arguments": [ - [ - "godot_packed_byte_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_byte_array_operator_index_const", - "return_type": "const uint8_t *", - "arguments": [ - [ - "const godot_packed_byte_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_int32_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_int32_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_int32_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_int32_array *", - "r_dest" - ], - [ - "const godot_packed_int32_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_int32_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_int32_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_int32_array_operator_index", - "return_type": "int32_t *", - "arguments": [ - [ - "godot_packed_int32_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_int32_array_operator_index_const", - "return_type": "const int32_t *", - "arguments": [ - [ - "const godot_packed_int32_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_int64_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_int64_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_int64_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_int64_array *", - "r_dest" - ], - [ - "const godot_packed_int64_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_int64_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_int64_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_int64_array_operator_index", - "return_type": "int64_t *", - "arguments": [ - [ - "godot_packed_int64_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_int64_array_operator_index_const", - "return_type": "const int64_t *", - "arguments": [ - [ - "const godot_packed_int64_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_float32_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_float32_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_float32_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_float32_array *", - "r_dest" - ], - [ - "const godot_packed_float32_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_float32_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_float32_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_float32_array_operator_index", - "return_type": "float *", - "arguments": [ - [ - "godot_packed_float32_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_float32_array_operator_index_const", - "return_type": "const float *", - "arguments": [ - [ - "const godot_packed_float32_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_float64_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_float64_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_float64_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_float64_array *", - "r_dest" - ], - [ - "const godot_packed_float64_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_float64_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_float64_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_float64_array_operator_index", - "return_type": "double *", - "arguments": [ - [ - "godot_packed_float64_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_float64_array_operator_index_const", - "return_type": "const double *", - "arguments": [ - [ - "const godot_packed_float64_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_string_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_string_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_string_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_string_array *", - "r_dest" - ], - [ - "const godot_packed_string_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_string_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_string_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_string_array_operator_index", - "return_type": "godot_string *", - "arguments": [ - [ - "godot_packed_string_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_string_array_operator_index_const", - "return_type": "const godot_string *", - "arguments": [ - [ - "const godot_packed_string_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector2_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector2_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector2_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector2_array *", - "r_dest" - ], - [ - "const godot_packed_vector2_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_vector2_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector2_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector2_array_operator_index", - "return_type": "godot_vector2 *", - "arguments": [ - [ - "godot_packed_vector2_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector2_array_operator_index_const", - "return_type": "const godot_vector2 *", - "arguments": [ - [ - "const godot_packed_vector2_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector2i_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector2i_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector2i_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector2i_array *", - "r_dest" - ], - [ - "const godot_packed_vector2i_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_vector2i_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector2i_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector2i_array_operator_index", - "return_type": "godot_vector2i *", - "arguments": [ - [ - "godot_packed_vector2i_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector2i_array_operator_index_const", - "return_type": "const godot_vector2i *", - "arguments": [ - [ - "const godot_packed_vector2i_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector3_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector3_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector3_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector3_array *", - "r_dest" - ], - [ - "const godot_packed_vector3_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_vector3_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector3_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector3_array_operator_index", - "return_type": "godot_vector3 *", - "arguments": [ - [ - "godot_packed_vector3_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector3_array_operator_index_const", - "return_type": "const godot_vector3 *", - "arguments": [ - [ - "const godot_packed_vector3_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector3i_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector3i_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector3i_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector3i_array *", - "r_dest" - ], - [ - "const godot_packed_vector3i_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_vector3i_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_vector3i_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_vector3i_array_operator_index", - "return_type": "godot_vector3i *", - "arguments": [ - [ - "godot_packed_vector3i_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_vector3i_array_operator_index_const", - "return_type": "const godot_vector3i *", - "arguments": [ - [ - "const godot_packed_vector3i_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_color_array_new", - "return_type": "void", - "arguments": [ - [ - "godot_packed_color_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_color_array_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_color_array *", - "r_dest" - ], - [ - "const godot_packed_color_array *", - "p_src" - ] - ] - }, - { - "name": "godot_packed_color_array_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_packed_color_array *", - "p_self" - ] - ] - }, - { - "name": "godot_packed_color_array_operator_index", - "return_type": "godot_color *", - "arguments": [ - [ - "godot_packed_color_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_packed_color_array_operator_index_const", - "return_type": "const godot_color *", - "arguments": [ - [ - "const godot_packed_color_array *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_plane_new", - "return_type": "void", - "arguments": [ - [ - "godot_plane *", - "p_self" - ] - ] - }, - { - "name": "godot_plane_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_plane *", - "r_dest" - ], - [ - "const godot_plane *", - "p_src" - ] - ] - }, - { - "name": "godot_quaternion_new", - "return_type": "void", - "arguments": [ - [ - "godot_quaternion *", - "p_self" - ] - ] - }, - { - "name": "godot_quaternion_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_quaternion *", - "r_dest" - ], - [ - "const godot_quaternion *", - "p_src" - ] - ] - }, - { - "name": "godot_quaternion_operator_index", - "return_type": "godot_real_t *", - "arguments": [ - [ - "godot_quaternion *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_quaternion_operator_index_const", - "return_type": "const godot_real_t *", - "arguments": [ - [ - "const godot_quaternion *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_rect2_new", - "return_type": "void", - "arguments": [ - [ - "godot_rect2 *", - "p_self" - ] - ] - }, - { - "name": "godot_rect2_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_rect2 *", - "r_dest" - ], - [ - "const godot_rect2 *", - "p_src" - ] - ] - }, - { - "name": "godot_rect2i_new", - "return_type": "void", - "arguments": [ - [ - "godot_rect2i *", - "p_self" - ] - ] - }, - { - "name": "godot_rect2i_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_rect2i *", - "r_dest" - ], - [ - "const godot_rect2i *", - "p_src" - ] - ] - }, - { - "name": "godot_rid_new", - "return_type": "void", - "arguments": [ - [ - "godot_rid *", - "p_self" - ] - ] - }, - { - "name": "godot_rid_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_rid *", - "r_dest" - ], - [ - "const godot_rid *", - "p_src" - ] - ] - }, - { - "name": "godot_signal_new", - "return_type": "void", - "arguments": [ - [ - "godot_signal *", - "p_self" - ] - ] - }, - { - "name": "godot_signal_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_signal *", - "r_dest" - ], - [ - "const godot_signal *", - "p_src" - ] - ] - }, - { - "name": "godot_signal_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_signal *", - "p_self" - ] - ] - }, - { - "name": "godot_string_new", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ] - ] - }, - { - "name": "godot_string_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const godot_string *", - "p_src" - ] - ] - }, - { - "name": "godot_string_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "p_self" - ] - ] - }, - { - "name": "godot_string_new_with_latin1_chars", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char *", - "p_contents" - ] - ] - }, - { - "name": "godot_string_new_with_utf8_chars", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char *", - "p_contents" - ] - ] - }, - { - "name": "godot_string_new_with_utf16_chars", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char16_t *", - "p_contents" - ] - ] - }, - { - "name": "godot_string_new_with_utf32_chars", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char32_t *", - "p_contents" - ] - ] - }, - { - "name": "godot_string_new_with_wide_chars", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const wchar_t *", - "p_contents" - ] - ] - }, - { - "name": "godot_string_new_with_latin1_chars_and_len", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char *", - "p_contents" - ], - [ - "const int", - "p_size" - ] - ] - }, - { - "name": "godot_string_new_with_utf8_chars_and_len", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char *", - "p_contents" - ], - [ - "const int", - "p_size" - ] - ] - }, - { - "name": "godot_string_new_with_utf16_chars_and_len", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char16_t *", - "p_contents" - ], - [ - "const int", - "p_size" - ] - ] - }, - { - "name": "godot_string_new_with_utf32_chars_and_len", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const char32_t *", - "p_contents" - ], - [ - "const int", - "p_size" - ] - ] - }, - { - "name": "godot_string_new_with_wide_chars_and_len", - "return_type": "void", - "arguments": [ - [ - "godot_string *", - "r_dest" - ], - [ - "const wchar_t *", - "p_contents" - ], - [ - "const int", - "p_size" - ] - ] - }, - { - "name": "godot_string_to_latin1_chars", - "return_type": "const char *", - "arguments": [ - [ - "const godot_string *", - "p_self" - ] - ] - }, - { - "name": "godot_string_to_utf8_chars", - "return_type": "const char *", - "arguments": [ - [ - "const godot_string *", - "p_self" - ] - ] - }, - { - "name": "godot_string_to_utf16_chars", - "return_type": "const char16_t *", - "arguments": [ - [ - "const godot_string *", - "p_self" - ] - ] - }, - { - "name": "godot_string_to_utf32_chars", - "return_type": "const char32_t *", - "arguments": [ - [ - "const godot_string *", - "p_self" - ] - ] - }, - { - "name": "godot_string_to_wide_chars", - "return_type": "const wchar_t *", - "arguments": [ - [ - "const godot_string *", - "p_self" - ] - ] - }, - { - "name": "godot_string_operator_index", - "return_type": "char32_t *", - "arguments": [ - [ - "godot_string *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_string_operator_index_const", - "return_type": "const char32_t *", - "arguments": [ - [ - "const godot_string *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_string_name_new", - "return_type": "void", - "arguments": [ - [ - "godot_string_name *", - "r_dest" - ] - ] - }, - { - "name": "godot_string_name_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_string_name *", - "r_dest" - ], - [ - "const godot_string_name *", - "p_src" - ] - ] - }, - { - "name": "godot_string_name_destroy", - "return_type": "void", - "arguments": [ - [ - "godot_string_name *", - "p_self" - ] - ] - }, - { - "name": "godot_string_name_new_with_latin1_chars", - "return_type": "void", - "arguments": [ - [ - "godot_string_name *", - "r_dest" - ], - [ - "const char *", - "p_contents" - ] - ] - }, - { - "name": "godot_transform3d_new", - "return_type": "void", - "arguments": [ - [ - "godot_transform3d *", - "r_dest" - ] - ] - }, - { - "name": "godot_transform3d_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_transform3d *", - "r_dest" - ], - [ - "const godot_transform3d *", - "p_src" - ] - ] - }, - { - "name": "godot_transform2d_new", - "return_type": "void", - "arguments": [ - [ - "godot_transform2d *", - "r_dest" - ] - ] - }, - { - "name": "godot_transform2d_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_transform2d *", - "r_dest" - ], - [ - "const godot_transform2d *", - "p_src" - ] - ] - }, - { - "name": "godot_transform2d_operator_index", - "return_type": "godot_vector2 *", - "arguments": [ - [ - "godot_transform2d *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_transform2d_operator_index_const", - "return_type": "const godot_vector2 *", - "arguments": [ - [ - "const godot_transform2d *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector2_new", - "return_type": "void", - "arguments": [ - [ - "godot_vector2 *", - "r_dest" - ] - ] - }, - { - "name": "godot_vector2_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_vector2 *", - "r_dest" - ], - [ - "const godot_vector2 *", - "p_src" - ] - ] - }, - { - "name": "godot_vector2_operator_index", - "return_type": "godot_real_t *", - "arguments": [ - [ - "godot_vector2 *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector2_operator_index_const", - "return_type": "const godot_real_t *", - "arguments": [ - [ - "const godot_vector2 *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector2i_new", - "return_type": "void", - "arguments": [ - [ - "godot_vector2i *", - "r_dest" - ] - ] - }, - { - "name": "godot_vector2i_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_vector2i *", - "r_dest" - ], - [ - "const godot_vector2i *", - "p_src" - ] - ] - }, - { - "name": "godot_vector2i_operator_index", - "return_type": "int32_t *", - "arguments": [ - [ - "godot_vector2i *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector2i_operator_index_const", - "return_type": "const int32_t *", - "arguments": [ - [ - "const godot_vector2i *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector3_new", - "return_type": "void", - "arguments": [ - [ - "godot_vector3 *", - "r_dest" - ] - ] - }, - { - "name": "godot_vector3_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_vector3 *", - "r_dest" - ], - [ - "const godot_vector3 *", - "p_src" - ] - ] - }, - { - "name": "godot_vector3_operator_index", - "return_type": "godot_real_t *", - "arguments": [ - [ - "godot_vector3 *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector3_operator_index_const", - "return_type": "const godot_real_t *", - "arguments": [ - [ - "const godot_vector3 *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector3i_new", - "return_type": "void", - "arguments": [ - [ - "godot_vector3i *", - "r_dest" - ] - ] - }, - { - "name": "godot_vector3i_new_copy", - "return_type": "void", - "arguments": [ - [ - "godot_vector3i *", - "r_dest" - ], - [ - "const godot_vector3i *", - "p_src" - ] - ] - }, - { - "name": "godot_vector3i_operator_index", - "return_type": "int32_t *", - "arguments": [ - [ - "godot_vector3i *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - }, - { - "name": "godot_vector3i_operator_index_const", - "return_type": "const int32_t *", - "arguments": [ - [ - "const godot_vector3i *", - "p_self" - ], - [ - "godot_int", - "p_index" - ] - ] - } - ] - }, - "extensions": [ - { - "name": "nativescript", - "type": "NATIVESCRIPT", - "version": { - "major": 4, - "minor": 0 - }, - "next": null, - "api": [ - { - "name": "godot_nativescript_register_class", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_base" - ], - [ - "godot_nativescript_instance_create_func", - "p_create_func" - ], - [ - "godot_nativescript_instance_destroy_func", - "p_destroy_func" - ] - ] - }, - { - "name": "godot_nativescript_register_tool_class", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_base" - ], - [ - "godot_nativescript_instance_create_func", - "p_create_func" - ], - [ - "godot_nativescript_instance_destroy_func", - "p_destroy_func" - ] - ] - }, - { - "name": "godot_nativescript_register_method", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_function_name" - ], - [ - "godot_nativescript_method_attributes", - "p_attr" - ], - [ - "godot_nativescript_instance_method", - "p_method" - ] - ] - }, - { - "name": "godot_nativescript_set_method_argument_information", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_function_name" - ], - [ - "int", - "p_num_args" - ], - [ - "const godot_nativescript_method_argument *", - "p_args" - ] - ] - }, - { - "name": "godot_nativescript_register_property", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_path" - ], - [ - "godot_nativescript_property_attributes *", - "p_attr" - ], - [ - "godot_nativescript_property_set_func", - "p_set_func" - ], - [ - "godot_nativescript_property_get_func", - "p_get_func" - ] - ] - }, - { - "name": "godot_nativescript_register_signal", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const godot_nativescript_signal *", - "p_signal" - ] - ] - }, - { - "name": "godot_nativescript_get_userdata", - "return_type": "void *", - "arguments": [ - [ - "godot_object *", - "p_instance" - ] - ] - }, - { - "name": "godot_nativescript_set_class_documentation", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "godot_string", - "p_documentation" - ] - ] - }, - { - "name": "godot_nativescript_set_method_documentation", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_function_name" - ], - [ - "godot_string", - "p_documentation" - ] - ] - }, - { - "name": "godot_nativescript_set_property_documentation", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_path" - ], - [ - "godot_string", - "p_documentation" - ] - ] - }, - { - "name": "godot_nativescript_set_signal_documentation", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const char *", - "p_signal_name" - ], - [ - "godot_string", - "p_documentation" - ] - ] - }, - { - "name": "godot_nativescript_set_global_type_tag", - "return_type": "void", - "arguments": [ - [ - "int", - "p_idx" - ], - [ - "const char *", - "p_name" - ], - [ - "const void *", - "p_type_tag" - ] - ] - }, - { - "name": "godot_nativescript_get_global_type_tag", - "return_type": "const void *", - "arguments": [ - [ - "int", - "p_idx" - ], - [ - "const char *", - "p_name" - ] - ] - }, - { - "name": "godot_nativescript_set_type_tag", - "return_type": "void", - "arguments": [ - [ - "void *", - "p_gdnative_handle" - ], - [ - "const char *", - "p_name" - ], - [ - "const void *", - "p_type_tag" - ] - ] - }, - { - "name": "godot_nativescript_get_type_tag", - "return_type": "const void *", - "arguments": [ - [ - "const godot_object *", - "p_object" - ] - ] - }, - { - "name": "godot_nativescript_register_instance_binding_data_functions", - "return_type": "int", - "arguments": [ - [ - "godot_nativescript_instance_binding_functions", - "p_binding_functions" - ] - ] - }, - { - "name": "godot_nativescript_unregister_instance_binding_data_functions", - "return_type": "void", - "arguments": [ - [ - "int", - "p_idx" - ] - ] - }, - { - "name": "godot_nativescript_get_instance_binding_data", - "return_type": "void *", - "arguments": [ - [ - "int", - "p_idx" - ], - [ - "godot_object *", - "p_object" - ] - ] - }, - { - "name": "godot_nativescript_profiling_add_data", - "return_type": "void", - "arguments": [ - [ - "const char *", - "p_signature" - ], - [ - "uint64_t", - "p_line" - ] - ] - } - ] - }, - { - "name": "pluginscript", - "type": "PLUGINSCRIPT", - "version": { - "major": 1, - "minor": 0 - }, - "next": null, - "api": [ - { - "name": "godot_pluginscript_register_language", - "return_type": "void", - "arguments": [ - [ - "const godot_pluginscript_language_desc *", - "language_desc" - ] - ] - } - ] - }, - { - "name": "android", - "type": "ANDROID", - "version": { - "major": 1, - "minor": 1 - }, - "next": null, - "api": [ - { - "name": "godot_android_get_env", - "return_type": "JNIEnv*", - "arguments": [] - }, - { - "name": "godot_android_get_activity", - "return_type": "jobject", - "arguments": [] - }, - { - "name": "godot_android_get_surface", - "return_type": "jobject", - "arguments": [] - }, - { - "name": "godot_android_is_activity_resumed", - "return_type": "bool", - "arguments": [] - } - ] - }, - { - "name": "videodecoder", - "type": "VIDEODECODER", - "version": { - "major": 0, - "minor": 1 - }, - "next": null, - "api": [ - { - "name": "godot_videodecoder_file_read", - "return_type": "godot_int", - "arguments": [ - [ - "void *", - "file_ptr" - ], - [ - "uint8_t *", - "buf" - ], - [ - "int", - "buf_size" - ] - ] - }, - { - "name": "godot_videodecoder_file_seek", - "return_type": "int64_t", - "arguments": [ - [ - "void *", - "file_ptr" - ], - [ - "int64_t", - "pos" - ], - [ - "int", - "whence" - ] - ] - }, - { - "name": "godot_videodecoder_register_decoder", - "return_type": "void", - "arguments": [ - [ - "const godot_videodecoder_interface_gdnative *", - "p_interface" - ] - ] - } - ] - } - ] -} diff --git a/modules/gdnative/gdnative_builders.py b/modules/gdnative/gdnative_builders.py deleted file mode 100644 index 6c96e23426..0000000000 --- a/modules/gdnative/gdnative_builders.py +++ /dev/null @@ -1,263 +0,0 @@ -"""Functions used to generate source files during build time - -All such functions are invoked in a subprocess on Windows to prevent build flakiness. - -""" -import json -from platform_methods import subprocess_main - - -def _spaced(e): - return e if e[-1] == "*" else e + " " - - -def _build_gdnative_api_struct_header(api): - out = [ - "/* THIS FILE IS GENERATED DO NOT EDIT */", - "#ifndef GODOT_GDNATIVE_API_STRUCT_H", - "#define GODOT_GDNATIVE_API_STRUCT_H", - "", - "#include <gdnative/gdnative.h>", - "#include <android/godot_android.h>", - "#include <nativescript/godot_nativescript.h>", - "#include <pluginscript/godot_pluginscript.h>", - "#include <videodecoder/godot_videodecoder.h>", - "", - "#ifdef __cplusplus", - 'extern "C" {', - "#endif", - "", - "enum GDNATIVE_API_TYPES {", - "\tGDNATIVE_" + api["core"]["type"] + ",", - ] - - for ext in api["extensions"]: - out += ["\tGDNATIVE_EXT_" + ext["type"] + ","] - - out += ["};", ""] - - def generate_extension_struct(name, ext, include_version=True): - ret_val = [] - if ext["next"]: - ret_val += generate_extension_struct(name, ext["next"]) - - ret_val += [ - "typedef struct godot_gdnative_ext_" - + name - + ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"]))) - + "_api_struct {", - "\tunsigned int type;", - "\tgodot_gdnative_api_version version;", - "\tconst godot_gdnative_api_struct *next;", - ] - - for funcdef in ext["api"]: - args = ", ".join(["%s%s" % (_spaced(t), n) for t, n in funcdef["arguments"]]) - ret_val.append("\t%s(*%s)(%s);" % (_spaced(funcdef["return_type"]), funcdef["name"], args)) - - ret_val += [ - "} godot_gdnative_ext_" - + name - + ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"]))) - + "_api_struct;", - "", - ] - - return ret_val - - def generate_core_extension_struct(core): - ret_val = [] - if core["next"]: - ret_val += generate_core_extension_struct(core["next"]) - - ret_val += [ - "typedef struct godot_gdnative_core_" - + "{0}_{1}".format(core["version"]["major"], core["version"]["minor"]) - + "_api_struct {", - "\tunsigned int type;", - "\tgodot_gdnative_api_version version;", - "\tconst godot_gdnative_api_struct *next;", - ] - - for funcdef in core["api"]: - args = ", ".join(["%s%s" % (_spaced(t), n) for t, n in funcdef["arguments"]]) - ret_val.append("\t%s(*%s)(%s);" % (_spaced(funcdef["return_type"]), funcdef["name"], args)) - - ret_val += [ - "} godot_gdnative_core_" - + "{0}_{1}".format(core["version"]["major"], core["version"]["minor"]) - + "_api_struct;", - "", - ] - - return ret_val - - for ext in api["extensions"]: - name = ext["name"] - out += generate_extension_struct(name, ext, False) - - if api["core"]["next"]: - out += generate_core_extension_struct(api["core"]["next"]) - - out += [ - "typedef struct godot_gdnative_core_api_struct {", - "\tunsigned int type;", - "\tgodot_gdnative_api_version version;", - "\tconst godot_gdnative_api_struct *next;", - "\tunsigned int num_extensions;", - "\tconst godot_gdnative_api_struct **extensions;", - ] - - for funcdef in api["core"]["api"]: - args = ", ".join(["%s%s" % (_spaced(t), n) for t, n in funcdef["arguments"]]) - out.append("\t%s(*%s)(%s);" % (_spaced(funcdef["return_type"]), funcdef["name"], args)) - - out += [ - "} godot_gdnative_core_api_struct;", - "", - "#ifdef __cplusplus", - "}", - "#endif", - "", - "#endif // GODOT_GDNATIVE_API_STRUCT_H", - "", - ] - return "\n".join(out) - - -def _build_gdnative_api_struct_source(api): - out = ["/* THIS FILE IS GENERATED DO NOT EDIT */", "", "#include <gdnative_api_struct.gen.h>", ""] - - def get_extension_struct_name(name, ext, include_version=True): - return ( - "godot_gdnative_ext_" - + name - + ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"]))) - + "_api_struct" - ) - - def get_extension_struct_instance_name(name, ext, include_version=True): - return ( - "api_extension_" - + name - + ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"]))) - + "_struct" - ) - - def get_extension_struct_definition(name, ext, include_version=True): - - ret_val = [] - - if ext["next"]: - ret_val += get_extension_struct_definition(name, ext["next"]) - - ret_val += [ - "extern const " - + get_extension_struct_name(name, ext, include_version) - + " " - + get_extension_struct_instance_name(name, ext, include_version) - + " = {", - "\tGDNATIVE_EXT_" + ext["type"] + ",", - "\t{" + str(ext["version"]["major"]) + ", " + str(ext["version"]["minor"]) + "},", - "\t" - + ( - "nullptr" - if not ext["next"] - else ("(const godot_gdnative_api_struct *)&" + get_extension_struct_instance_name(name, ext["next"])) - ) - + ",", - ] - - for funcdef in ext["api"]: - ret_val.append("\t%s," % funcdef["name"]) - - ret_val += ["};\n"] - - return ret_val - - def get_core_struct_definition(core): - ret_val = [] - - if core["next"]: - ret_val += get_core_struct_definition(core["next"]) - - ret_val += [ - "extern const godot_gdnative_core_" - + "{0}_{1}_api_struct api_{0}_{1}".format(core["version"]["major"], core["version"]["minor"]) - + " = {", - "\tGDNATIVE_" + core["type"] + ",", - "\t{" + str(core["version"]["major"]) + ", " + str(core["version"]["minor"]) + "},", - "\t" - + ( - "nullptr" - if not core["next"] - else ( - "(const godot_gdnative_api_struct *)& api_{0}_{1}".format( - core["next"]["version"]["major"], core["next"]["version"]["minor"] - ) - ) - ) - + ",", - ] - - for funcdef in core["api"]: - ret_val.append("\t%s," % funcdef["name"]) - - ret_val += ["};\n"] - - return ret_val - - for ext in api["extensions"]: - name = ext["name"] - out += get_extension_struct_definition(name, ext, False) - - out += ["", "const godot_gdnative_api_struct *gdnative_extensions_pointers[] = {"] - - for ext in api["extensions"]: - name = ext["name"] - out += ["\t(godot_gdnative_api_struct *)&api_extension_" + name + "_struct,"] - - out += ["};\n"] - - if api["core"]["next"]: - out += get_core_struct_definition(api["core"]["next"]) - - out += [ - "extern const godot_gdnative_core_api_struct api_struct = {", - "\tGDNATIVE_" + api["core"]["type"] + ",", - "\t{" + str(api["core"]["version"]["major"]) + ", " + str(api["core"]["version"]["minor"]) + "},", - "\t" - + ( - "nullptr, " - if not api["core"]["next"] - else ( - "(const godot_gdnative_api_struct *)& api_{0}_{1},".format( - api["core"]["next"]["version"]["major"], api["core"]["next"]["version"]["minor"] - ) - ) - ), - "\t" + str(len(api["extensions"])) + ",", - "\tgdnative_extensions_pointers,", - ] - - for funcdef in api["core"]["api"]: - out.append("\t%s," % funcdef["name"]) - out.append("};\n") - - return "\n".join(out) - - -def build_gdnative_api_struct(target, source, env): - - with open(source[0], "r") as fd: - api = json.load(fd) - - header, source = target - with open(header, "w") as fd: - fd.write(_build_gdnative_api_struct_header(api)) - with open(source, "w") as fd: - fd.write(_build_gdnative_api_struct_source(api)) - - -if __name__ == "__main__": - subprocess_main(globals()) diff --git a/modules/gdnative/gdnative_library_editor_plugin.cpp b/modules/gdnative/gdnative_library_editor_plugin.cpp deleted file mode 100644 index 66c8ab7b37..0000000000 --- a/modules/gdnative/gdnative_library_editor_plugin.cpp +++ /dev/null @@ -1,420 +0,0 @@ -/*************************************************************************/ -/* gdnative_library_editor_plugin.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifdef TOOLS_ENABLED - -#include "gdnative_library_editor_plugin.h" - -#include "editor/editor_file_dialog.h" -#include "editor/editor_node.h" -#include "editor/editor_scale.h" -#include "gdnative.h" - -void GDNativeLibraryEditor::edit(Ref<GDNativeLibrary> p_library) { - library = p_library; - Ref<ConfigFile> config = p_library->get_config_file(); - - for (KeyValue<String, NativePlatformConfig> &E : platforms) { - for (List<String>::Element *it = E.value.entries.front(); it; it = it->next()) { - String target = E.key + "." + it->get(); - TargetConfig ecfg; - ecfg.library = config->get_value("entry", target, ""); - ecfg.dependencies = config->get_value("dependencies", target, Array()); - entry_configs[target] = ecfg; - } - } - - _update_tree(); -} - -void GDNativeLibraryEditor::_bind_methods() { -} - -void GDNativeLibraryEditor::_update_tree() { - tree->clear(); - TreeItem *root = tree->create_item(); - - PopupMenu *filter_list = filter->get_popup(); - String text = ""; - for (int i = 0; i < filter_list->get_item_count(); i++) { - if (!filter_list->is_item_checked(i)) { - continue; - } - Map<String, NativePlatformConfig>::Element *E = platforms.find(filter_list->get_item_metadata(i)); - if (!text.is_empty()) { - text += ", "; - } - text += E->get().name; - - TreeItem *platform = tree->create_item(root); - platform->set_text(0, E->get().name); - platform->set_metadata(0, E->get().library_extension); - - platform->set_custom_bg_color(0, get_theme_color(SNAME("prop_category"), SNAME("Editor"))); - platform->set_custom_bg_color(1, get_theme_color(SNAME("prop_category"), SNAME("Editor"))); - platform->set_custom_bg_color(2, get_theme_color(SNAME("prop_category"), SNAME("Editor"))); - platform->set_selectable(0, false); - platform->set_expand_right(0, true); - - for (List<String>::Element *it = E->value().entries.front(); it; it = it->next()) { - String target = E->key() + "." + it->get(); - TreeItem *bit = tree->create_item(platform); - - bit->set_text(0, it->get()); - bit->set_metadata(0, target); - bit->set_selectable(0, false); - bit->set_custom_bg_color(0, get_theme_color(SNAME("prop_subsection"), SNAME("Editor"))); - - bit->add_button(1, get_theme_icon(SNAME("Folder"), SNAME("EditorIcons")), BUTTON_SELECT_LIBRARY, false, TTR("Select the dynamic library for this entry")); - String file = entry_configs[target].library; - if (!file.is_empty()) { - bit->add_button(1, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), BUTTON_CLEAR_LIBRARY, false, TTR("Clear")); - } - bit->set_text(1, file); - - bit->add_button(2, get_theme_icon(SNAME("Folder"), SNAME("EditorIcons")), BUTTON_SELECT_DEPENDENCES, false, TTR("Select dependencies of the library for this entry")); - Array files = entry_configs[target].dependencies; - if (files.size()) { - bit->add_button(2, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), BUTTON_CLEAR_DEPENDENCES, false, TTR("Clear")); - } - bit->set_text(2, Variant(files)); - - bit->add_button(3, get_theme_icon(SNAME("MoveUp"), SNAME("EditorIcons")), BUTTON_MOVE_UP, false, TTR("Move Up")); - bit->add_button(3, get_theme_icon(SNAME("MoveDown"), SNAME("EditorIcons")), BUTTON_MOVE_DOWN, false, TTR("Move Down")); - bit->add_button(3, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), BUTTON_ERASE_ENTRY, false, TTR("Remove current entry")); - } - - TreeItem *new_arch = tree->create_item(platform); - new_arch->set_text(0, TTR("Double click to create a new entry")); - new_arch->set_text_alignment(0, HORIZONTAL_ALIGNMENT_CENTER); - new_arch->set_custom_color(0, get_theme_color(SNAME("accent_color"), SNAME("Editor"))); - new_arch->set_expand_right(0, true); - new_arch->set_metadata(1, E->key()); - - platform->set_collapsed(collapsed_items.find(E->get().name) != nullptr); - } - filter->set_text(text); -} - -void GDNativeLibraryEditor::_on_item_button(Object *item, int column, int id) { - String target = Object::cast_to<TreeItem>(item)->get_metadata(0); - String platform = target.substr(0, target.find(".")); - String entry = target.substr(platform.length() + 1, target.length()); - String section = (id == BUTTON_SELECT_DEPENDENCES || id == BUTTON_CLEAR_DEPENDENCES) ? "dependencies" : "entry"; - - if (id == BUTTON_SELECT_LIBRARY || id == BUTTON_SELECT_DEPENDENCES) { - TreeItem *treeItem = Object::cast_to<TreeItem>(item)->get_parent(); - EditorFileDialog::FileMode mode = EditorFileDialog::FILE_MODE_OPEN_FILE; - if (id == BUTTON_SELECT_DEPENDENCES) { - mode = EditorFileDialog::FILE_MODE_OPEN_FILES; - } else if (treeItem->get_text(0) == "iOS" || treeItem->get_text(0) == "macOS") { - mode = EditorFileDialog::FILE_MODE_OPEN_ANY; - } - - file_dialog->set_meta("target", target); - file_dialog->set_meta("section", section); - file_dialog->clear_filters(); - - String filter_string = treeItem->get_metadata(0); - Vector<String> filters = filter_string.split(",", false, 0); - for (int i = 0; i < filters.size(); i++) { - file_dialog->add_filter(filters[i]); - } - - file_dialog->set_file_mode(mode); - file_dialog->popup_file_dialog(); - - } else if (id == BUTTON_CLEAR_LIBRARY) { - _set_target_value(section, target, ""); - } else if (id == BUTTON_CLEAR_DEPENDENCES) { - _set_target_value(section, target, Array()); - } else if (id == BUTTON_ERASE_ENTRY) { - _erase_entry(platform, entry); - } else if (id == BUTTON_MOVE_UP || id == BUTTON_MOVE_DOWN) { - _move_entry(platform, entry, id); - } -} - -void GDNativeLibraryEditor::_on_library_selected(const String &file) { - _set_target_value(file_dialog->get_meta("section"), file_dialog->get_meta("target"), file); -} - -void GDNativeLibraryEditor::_on_dependencies_selected(const PackedStringArray &files) { - _set_target_value(file_dialog->get_meta("section"), file_dialog->get_meta("target"), files); -} - -void GDNativeLibraryEditor::_on_filter_selected(int index) { - PopupMenu *filter_list = filter->get_popup(); - filter_list->set_item_checked(index, !filter_list->is_item_checked(index)); - _update_tree(); -} - -void GDNativeLibraryEditor::_on_item_collapsed(Object *p_item) { - TreeItem *item = Object::cast_to<TreeItem>(p_item); - String name = item->get_text(0); - - if (item->is_collapsed()) { - collapsed_items.insert(name); - } else if (Set<String>::Element *e = collapsed_items.find(name)) { - collapsed_items.erase(e); - } -} - -void GDNativeLibraryEditor::_on_item_activated() { - TreeItem *item = tree->get_selected(); - if (item && tree->get_selected_column() == 0 && item->get_metadata(0).get_type() == Variant::NIL) { - new_architecture_dialog->set_meta("platform", item->get_metadata(1)); - new_architecture_dialog->popup_centered(); - } -} - -void GDNativeLibraryEditor::_on_create_new_entry() { - String platform = new_architecture_dialog->get_meta("platform"); - String entry = new_architecture_input->get_text().strip_edges(); - if (!entry.is_empty()) { - platforms[platform].entries.push_back(entry); - _update_tree(); - } -} - -void GDNativeLibraryEditor::_set_target_value(const String §ion, const String &target, Variant file) { - if (section == "entry") { - entry_configs[target].library = file; - } else if (section == "dependencies") { - entry_configs[target].dependencies = file; - } - _translate_to_config_file(); - _update_tree(); -} - -void GDNativeLibraryEditor::_erase_entry(const String &platform, const String &entry) { - if (platforms.has(platform)) { - if (List<String>::Element *E = platforms[platform].entries.find(entry)) { - String target = platform + "." + entry; - - platforms[platform].entries.erase(E); - _set_target_value("entry", target, ""); - _set_target_value("dependencies", target, Array()); - _translate_to_config_file(); - _update_tree(); - } - } -} - -void GDNativeLibraryEditor::_move_entry(const String &platform, const String &entry, int dir) { - if (List<String>::Element *E = platforms[platform].entries.find(entry)) { - if (E->prev() && dir == BUTTON_MOVE_UP) { - platforms[platform].entries.insert_before(E->prev(), E->get()); - platforms[platform].entries.erase(E); - } else if (E->next() && dir == BUTTON_MOVE_DOWN) { - platforms[platform].entries.insert_after(E->next(), E->get()); - platforms[platform].entries.erase(E); - } - _translate_to_config_file(); - _update_tree(); - } -} - -void GDNativeLibraryEditor::_translate_to_config_file() { - if (!library.is_null()) { - Ref<ConfigFile> config = library->get_config_file(); - config->erase_section("entry"); - config->erase_section("dependencies"); - - for (KeyValue<String, NativePlatformConfig> &E : platforms) { - for (List<String>::Element *it = E.value.entries.front(); it; it = it->next()) { - String target = E.key + "." + it->get(); - if (entry_configs[target].library.is_empty() && entry_configs[target].dependencies.is_empty()) { - continue; - } - - config->set_value("entry", target, entry_configs[target].library); - config->set_value("dependencies", target, entry_configs[target].dependencies); - } - } - - library->notify_property_list_changed(); - } -} - -GDNativeLibraryEditor::GDNativeLibraryEditor() { - { // Define platforms - NativePlatformConfig platform_windows; - platform_windows.name = "Windows"; - platform_windows.entries.push_back("64"); - platform_windows.entries.push_back("32"); - platform_windows.library_extension = "*.dll"; - platforms["Windows"] = platform_windows; - - NativePlatformConfig platform_linux; - platform_linux.name = "Linux/X11"; - platform_linux.entries.push_back("64"); - platform_linux.entries.push_back("32"); - platform_linux.library_extension = "*.so"; - platforms["X11"] = platform_linux; - - NativePlatformConfig platform_osx; - platform_osx.name = "macOS"; - platform_osx.entries.push_back("64"); - platform_osx.library_extension = "*.framework; Framework, *.dylib; Dynamic Library"; - platforms["macOS"] = platform_osx; - - NativePlatformConfig platform_haiku; - platform_haiku.name = "Haiku"; - platform_haiku.entries.push_back("64"); - platform_haiku.entries.push_back("32"); - platform_haiku.library_extension = "*.so"; - platforms["Haiku"] = platform_haiku; - - NativePlatformConfig platform_uwp; - platform_uwp.name = "UWP"; - platform_uwp.entries.push_back("arm"); - platform_uwp.entries.push_back("32"); - platform_uwp.entries.push_back("64"); - platform_uwp.library_extension = "*.dll"; - platforms["UWP"] = platform_uwp; - - NativePlatformConfig platform_android; - platform_android.name = "Android"; - platform_android.entries.push_back("armeabi-v7a"); - platform_android.entries.push_back("arm64-v8a"); - platform_android.entries.push_back("x86"); - platform_android.entries.push_back("x86_64"); - platform_android.library_extension = "*.so"; - platforms["Android"] = platform_android; - - NativePlatformConfig platform_html5; - platform_html5.name = "HTML5"; - platform_html5.entries.push_back("wasm32"); - platform_html5.library_extension = "*.wasm"; - platforms["HTML5"] = platform_html5; - - NativePlatformConfig platform_ios; - platform_ios.name = "iOS"; - platform_ios.entries.push_back("arm64"); - platform_ios.entries.push_back("x86_64"); - // iOS can use both Static and Dynamic libraries. - // Frameworks is actually a folder with files. - platform_ios.library_extension = "*.framework; Framework, *.xcframework; Binary Framework, *.a; Static Library, *.dylib; Dynamic Library"; - platforms["iOS"] = platform_ios; - } - - VBoxContainer *container = memnew(VBoxContainer); - add_child(container); - container->set_anchors_and_offsets_preset(PRESET_WIDE); - - HBoxContainer *hbox = memnew(HBoxContainer); - container->add_child(hbox); - Label *label = memnew(Label); - label->set_text(TTR("Platform:")); - hbox->add_child(label); - filter = memnew(MenuButton); - filter->set_h_size_flags(SIZE_EXPAND_FILL); - filter->set_text_alignment(HORIZONTAL_ALIGNMENT_LEFT); - hbox->add_child(filter); - PopupMenu *filter_list = filter->get_popup(); - filter_list->set_hide_on_checkable_item_selection(false); - - int idx = 0; - for (const KeyValue<String, NativePlatformConfig> &E : platforms) { - filter_list->add_check_item(E.value.name, idx); - filter_list->set_item_metadata(idx, E.key); - filter_list->set_item_checked(idx, true); - idx += 1; - } - filter_list->connect("index_pressed", callable_mp(this, &GDNativeLibraryEditor::_on_filter_selected)); - - tree = memnew(Tree); - container->add_child(tree); - tree->set_v_size_flags(SIZE_EXPAND_FILL); - tree->set_hide_root(true); - tree->set_column_titles_visible(true); - tree->set_columns(4); - tree->set_column_expand(0, false); - tree->set_column_custom_minimum_width(0, int(200 * EDSCALE)); - tree->set_column_title(0, TTR("Platform")); - tree->set_column_title(1, TTR("Dynamic Library")); - tree->set_column_title(2, TTR("Dependencies")); - tree->set_column_expand(3, false); - tree->set_column_custom_minimum_width(3, int(110 * EDSCALE)); - tree->connect("button_pressed", callable_mp(this, &GDNativeLibraryEditor::_on_item_button)); - tree->connect("item_collapsed", callable_mp(this, &GDNativeLibraryEditor::_on_item_collapsed)); - tree->connect("item_activated", callable_mp(this, &GDNativeLibraryEditor::_on_item_activated)); - - file_dialog = memnew(EditorFileDialog); - file_dialog->set_access(EditorFileDialog::ACCESS_RESOURCES); - //file_dialog->set_resizable(true); - add_child(file_dialog); - file_dialog->connect("file_selected", callable_mp(this, &GDNativeLibraryEditor::_on_library_selected)); - file_dialog->connect("dir_selected", callable_mp(this, &GDNativeLibraryEditor::_on_library_selected)); - file_dialog->connect("files_selected", callable_mp(this, &GDNativeLibraryEditor::_on_dependencies_selected)); - - new_architecture_dialog = memnew(ConfirmationDialog); - add_child(new_architecture_dialog); - new_architecture_dialog->set_title(TTR("Add an architecture entry")); - new_architecture_input = memnew(LineEdit); - new_architecture_dialog->add_child(new_architecture_input); - // new_architecture_dialog->set_custom_minimum_size(Vector2(300, 80) * EDSCALE); - new_architecture_input->set_anchors_and_offsets_preset(PRESET_HCENTER_WIDE, PRESET_MODE_MINSIZE, 5 * EDSCALE); - new_architecture_dialog->get_ok_button()->connect("pressed", callable_mp(this, &GDNativeLibraryEditor::_on_create_new_entry)); -} - -void GDNativeLibraryEditorPlugin::edit(Object *p_node) { - Ref<GDNativeLibrary> new_library = Object::cast_to<GDNativeLibrary>(p_node); - if (new_library.is_valid()) { - library_editor->edit(new_library); - } -} - -bool GDNativeLibraryEditorPlugin::handles(Object *p_node) const { - return p_node->is_class("GDNativeLibrary"); -} - -void GDNativeLibraryEditorPlugin::make_visible(bool p_visible) { - if (p_visible) { - button->show(); - EditorNode::get_singleton()->make_bottom_panel_item_visible(library_editor); - - } else { - if (library_editor->is_visible_in_tree()) { - EditorNode::get_singleton()->hide_bottom_panel(); - } - button->hide(); - } -} - -GDNativeLibraryEditorPlugin::GDNativeLibraryEditorPlugin() { - library_editor = memnew(GDNativeLibraryEditor); - library_editor->set_custom_minimum_size(Size2(0, 250 * EDSCALE)); - button = EditorNode::get_singleton()->add_bottom_panel_item(TTR("GDNativeLibrary"), library_editor); - button->hide(); -} - -#endif diff --git a/modules/gdnative/gdnative_library_editor_plugin.h b/modules/gdnative/gdnative_library_editor_plugin.h deleted file mode 100644 index 797695366c..0000000000 --- a/modules/gdnative/gdnative_library_editor_plugin.h +++ /dev/null @@ -1,119 +0,0 @@ -/*************************************************************************/ -/* gdnative_library_editor_plugin.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GDNATIVE_LIBRARY_EDITOR_PLUGIN_H -#define GDNATIVE_LIBRARY_EDITOR_PLUGIN_H - -#ifdef TOOLS_ENABLED - -#include "editor/editor_plugin.h" -#include "gdnative.h" -#include "scene/gui/control.h" -#include "scene/gui/menu_button.h" -#include "scene/gui/tree.h" - -class EditorFileDialog; - -class GDNativeLibraryEditor : public Control { - GDCLASS(GDNativeLibraryEditor, Control); - - struct NativePlatformConfig { - String name; - String library_extension; - List<String> entries; - }; - - struct TargetConfig { - String library; - Array dependencies; - }; - - enum ItemButton { - BUTTON_SELECT_LIBRARY, - BUTTON_CLEAR_LIBRARY, - BUTTON_SELECT_DEPENDENCES, - BUTTON_CLEAR_DEPENDENCES, - BUTTON_ERASE_ENTRY, - BUTTON_MOVE_UP, - BUTTON_MOVE_DOWN, - }; - - Tree *tree; - MenuButton *filter; - EditorFileDialog *file_dialog; - ConfirmationDialog *new_architecture_dialog; - LineEdit *new_architecture_input; - Set<String> collapsed_items; - - String showing_platform; - Ref<GDNativeLibrary> library; - Map<String, NativePlatformConfig> platforms; - Map<String, TargetConfig> entry_configs; - -protected: - static void _bind_methods(); - void _update_tree(); - void _on_item_button(Object *item, int column, int id); - void _on_library_selected(const String &file); - void _on_dependencies_selected(const PackedStringArray &files); - void _on_filter_selected(int id); - void _on_item_collapsed(Object *p_item); - void _on_item_activated(); - void _on_create_new_entry(); - void _set_target_value(const String §ion, const String &target, Variant file); - void _erase_entry(const String &platform, const String &entry); - void _move_entry(const String &platform, const String &entry, int dir); - void _translate_to_config_file(); - -public: - void edit(Ref<GDNativeLibrary> p_library); - - GDNativeLibraryEditor(); -}; - -class GDNativeLibraryEditorPlugin : public EditorPlugin { - GDCLASS(GDNativeLibraryEditorPlugin, EditorPlugin); - - GDNativeLibraryEditor *library_editor = nullptr; - Button *button = nullptr; - -public: - virtual String get_name() const override { return "GDNativeLibrary"; } - bool has_main_screen() const override { return false; } - virtual void edit(Object *p_node) override; - virtual bool handles(Object *p_node) const override; - virtual void make_visible(bool p_visible) override; - - GDNativeLibraryEditorPlugin(); -}; - -#endif // TOOLS_ENABLED - -#endif // GDNATIVE_LIBRARY_EDITOR_PLUGIN_H diff --git a/modules/gdnative/gdnative_library_singleton_editor.cpp b/modules/gdnative/gdnative_library_singleton_editor.cpp deleted file mode 100644 index ce1f41bdf1..0000000000 --- a/modules/gdnative/gdnative_library_singleton_editor.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/*************************************************************************/ -/* gdnative_library_singleton_editor.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifdef TOOLS_ENABLED -#include "gdnative_library_singleton_editor.h" -#include "gdnative.h" - -#include "core/config/project_settings.h" -#include "editor/editor_node.h" - -Set<String> GDNativeLibrarySingletonEditor::_find_singletons_recursive(EditorFileSystemDirectory *p_dir) { - Set<String> file_paths; - - // check children - - for (int i = 0; i < p_dir->get_file_count(); i++) { - String file_name = p_dir->get_file(i); - String file_type = p_dir->get_file_type(i); - - if (file_type != "GDNativeLibrary") { - continue; - } - - Ref<GDNativeLibrary> lib = ResourceLoader::load(p_dir->get_file_path(i)); - if (lib.is_valid() && lib->is_singleton()) { - file_paths.insert(p_dir->get_file_path(i)); - } - } - - // check subdirectories - for (int i = 0; i < p_dir->get_subdir_count(); i++) { - Set<String> paths = _find_singletons_recursive(p_dir->get_subdir(i)); - - for (Set<String>::Element *E = paths.front(); E; E = E->next()) { - file_paths.insert(E->get()); - } - } - - return file_paths; -} - -void GDNativeLibrarySingletonEditor::_discover_singletons() { - EditorFileSystemDirectory *dir = EditorFileSystem::get_singleton()->get_filesystem(); - - Set<String> file_paths = _find_singletons_recursive(dir); - - bool changed = false; - Array current_files; - if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons")) { - current_files = ProjectSettings::get_singleton()->get("gdnative/singletons"); - } - Array files; - for (Set<String>::Element *E = file_paths.front(); E; E = E->next()) { - if (!current_files.has(E->get())) { - changed = true; - } - files.append(E->get()); - } - - // Check for removed files - if (!changed) { - // Removed singleton - for (int j = 0; j < current_files.size(); j++) { - if (!files.has(current_files[j])) { - changed = true; - break; - } - } - } - - if (changed) { - ProjectSettings::get_singleton()->set("gdnative/singletons", files); - _update_libraries(); // So singleton options (i.e. disabled) updates too - ProjectSettings::get_singleton()->save(); - } -} - -void GDNativeLibrarySingletonEditor::_update_libraries() { - updating = true; - libraries->clear(); - libraries->create_item(); // root item - - Array singletons; - if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons")) { - singletons = ProjectSettings::get_singleton()->get("gdnative/singletons"); - } - Array singletons_disabled; - if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons_disabled")) { - singletons_disabled = ProjectSettings::get_singleton()->get("gdnative/singletons_disabled"); - } - - Array updated_disabled; - for (int i = 0; i < singletons.size(); i++) { - bool enabled = true; - String path = singletons[i]; - if (singletons_disabled.has(path)) { - enabled = false; - updated_disabled.push_back(path); - } - TreeItem *ti = libraries->create_item(libraries->get_root()); - ti->set_text(0, path.get_file()); - ti->set_tooltip(0, path); - ti->set_metadata(0, path); - ti->set_cell_mode(1, TreeItem::CELL_MODE_RANGE); - ti->set_text(1, "Disabled,Enabled"); - ti->set_range(1, enabled ? 1 : 0); - ti->set_custom_color(1, enabled ? Color(0, 1, 0) : Color(1, 0, 0)); - ti->set_editable(1, true); - } - - // The singletons list changed, we must update the settings - if (updated_disabled.size() != singletons_disabled.size()) { - ProjectSettings::get_singleton()->set("gdnative/singletons_disabled", updated_disabled); - } - - updating = false; -} - -void GDNativeLibrarySingletonEditor::_item_edited() { - if (updating) { - return; - } - - TreeItem *item = libraries->get_edited(); - if (!item) { - return; - } - - bool enabled = item->get_range(1); - String path = item->get_metadata(0); - - Array disabled_paths; - Array undo_paths; - if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons_disabled")) { - disabled_paths = ProjectSettings::get_singleton()->get("gdnative/singletons_disabled"); - // Duplicate so redo works (not a reference) - disabled_paths = disabled_paths.duplicate(); - // For undo, so we can reset the property. - undo_paths = disabled_paths.duplicate(); - } - - if (enabled) { - disabled_paths.erase(path); - } else { - if (disabled_paths.find(path) == -1) { - disabled_paths.push_back(path); - } - } - - undo_redo->create_action(enabled ? TTR("Enabled GDNative Singleton") : TTR("Disabled GDNative Singleton")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "gdnative/singletons_disabled", disabled_paths); - undo_redo->add_do_method(this, "_update_libraries"); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "gdnative/singletons_disabled", undo_paths); - undo_redo->add_undo_method(this, "_update_libraries"); - undo_redo->commit_action(); -} - -void GDNativeLibrarySingletonEditor::_notification(int p_what) { - switch (p_what) { - case NOTIFICATION_VISIBILITY_CHANGED: { - if (is_visible_in_tree()) { - _update_libraries(); - } - } break; - } -} - -void GDNativeLibrarySingletonEditor::_bind_methods() { - ClassDB::bind_method(D_METHOD("_update_libraries"), &GDNativeLibrarySingletonEditor::_update_libraries); -} - -GDNativeLibrarySingletonEditor::GDNativeLibrarySingletonEditor() { - undo_redo = EditorNode::get_singleton()->get_undo_redo(); - libraries = memnew(Tree); - libraries->set_columns(2); - libraries->set_column_titles_visible(true); - libraries->set_column_title(0, TTR("Library")); - libraries->set_column_title(1, TTR("Status")); - libraries->set_hide_root(true); - add_margin_child(TTR("Libraries: "), libraries, true); - updating = false; - libraries->connect("item_edited", callable_mp(this, &GDNativeLibrarySingletonEditor::_item_edited)); - EditorFileSystem::get_singleton()->connect("filesystem_changed", callable_mp(this, &GDNativeLibrarySingletonEditor::_discover_singletons)); -} - -#endif // TOOLS_ENABLED diff --git a/modules/gdnative/gdnative_library_singleton_editor.h b/modules/gdnative/gdnative_library_singleton_editor.h deleted file mode 100644 index 16155723bc..0000000000 --- a/modules/gdnative/gdnative_library_singleton_editor.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* gdnative_library_singleton_editor.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GD_NATIVE_LIBRARY_EDITOR_H -#define GD_NATIVE_LIBRARY_EDITOR_H - -#ifdef TOOLS_ENABLED -#include "editor/editor_file_system.h" -#include "editor/project_settings_editor.h" - -class GDNativeLibrarySingletonEditor : public VBoxContainer { - GDCLASS(GDNativeLibrarySingletonEditor, VBoxContainer); - -private: - Tree *libraries; - UndoRedo *undo_redo; - - bool updating; - - static Set<String> _find_singletons_recursive(EditorFileSystemDirectory *p_dir); - -protected: - void _notification(int p_what); - static void _bind_methods(); - - void _discover_singletons(); - void _item_edited(); - void _update_libraries(); - -public: - GDNativeLibrarySingletonEditor(); -}; - -#endif -#endif // GD_NATIVE_LIBRARY_EDITOR_H diff --git a/modules/gdnative/icons/GDNativeLibrary.svg b/modules/gdnative/icons/GDNativeLibrary.svg deleted file mode 100644 index 0ddfd4e6f2..0000000000 --- a/modules/gdnative/icons/GDNativeLibrary.svg +++ /dev/null @@ -1 +0,0 @@ -<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m7 1-.56445 2.2578a5 5 0 0 0 -.68945.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -.28516.68555l-2.2539.5625v2l2.2578.56445a5 5 0 0 0 .2793.6875l-1.1934 1.9902 1.4141 1.4141 1.9941-1.1953a5 5 0 0 0 .68555.28516l.5625 2.2539v-5.2695a2 2 0 0 1 -1-1.7305 2 2 0 0 1 1-1.7285v-.27148h1 4.5762a5 5 0 0 0 -.11328-.25195l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -.68555-.28516l-.5625-2.2539h-2zm2 7v1 5 1h5c.55228 0 1-.4477 1-1v-5c0-.5523-.44772-1-1-1v4l-1-1-1 1v-4z" fill="#e0e0e0"/></svg> diff --git a/modules/gdnative/icons/NativeScript.svg b/modules/gdnative/icons/NativeScript.svg deleted file mode 100644 index 2224b36b29..0000000000 --- a/modules/gdnative/icons/NativeScript.svg +++ /dev/null @@ -1 +0,0 @@ -<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m7 1-.56445 2.2578a5 5 0 0 0 -.68945.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -.28516.68555l-2.2539.5625h3v1 1h2v-.95117a2 2 0 0 1 0-.048828 2 2 0 0 1 2-2 2 2 0 0 1 2 2v1h5v-2l-2.2578-.56445a5 5 0 0 0 -.2793-.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -.68555-.28516l-.5625-2.2539h-2zm-6 7v4 4h2a3 3 0 0 0 3-3 3 3 0 0 0 -3-3v-2zm6 0v2h2v-2zm3 2v6h2v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3-3zm-7 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1zm4 0v4h2v-4z" fill="#e0e0e0"/></svg> diff --git a/modules/gdnative/include/android/godot_android.h b/modules/gdnative/include/android/godot_android.h deleted file mode 100644 index 859a85ae1e..0000000000 --- a/modules/gdnative/include/android/godot_android.h +++ /dev/null @@ -1,56 +0,0 @@ -/*************************************************************************/ -/* godot_android.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_ANDROID_GDN_H -#define GODOT_ANDROID_GDN_H - -#include <gdnative/gdnative.h> - -#ifdef __ANDROID__ -#include <jni.h> -#else -#define JNIEnv void -#define jobject void * -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -JNIEnv *GDAPI godot_android_get_env(); -jobject GDAPI godot_android_get_activity(); -jobject GDAPI godot_android_get_surface(); -bool GDAPI godot_android_is_activity_resumed(); - -#ifdef __cplusplus -} -#endif - -#endif /* !GODOT_ANDROID_GDN_H */ diff --git a/modules/gdnative/include/gdnative/aabb.h b/modules/gdnative/include/gdnative/aabb.h deleted file mode 100644 index 67818f61c8..0000000000 --- a/modules/gdnative/include/gdnative/aabb.h +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************/ -/* aabb.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_AABB_H -#define GODOT_AABB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_AABB_SIZE (sizeof(godot_real_t) * 6) - -#ifndef GODOT_CORE_API_GODOT_AABB_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_AABB_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_AABB_SIZE]; -} godot_aabb; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_aabb_new(godot_aabb *p_self); -void GDAPI godot_aabb_new_copy(godot_aabb *r_dest, const godot_aabb *p_src); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_AABB_H diff --git a/modules/gdnative/include/gdnative/array.h b/modules/gdnative/include/gdnative/array.h deleted file mode 100644 index cee641a7c5..0000000000 --- a/modules/gdnative/include/gdnative/array.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* array.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_ARRAY_H -#define GODOT_ARRAY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -#define GODOT_ARRAY_SIZE sizeof(void *) - -#ifndef GODOT_CORE_API_GODOT_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_ARRAY_SIZE]; -} godot_array; -#endif - -#include <gdnative/gdnative.h> -#include <gdnative/variant_struct.h> - -void GDAPI godot_array_new(godot_array *p_self); -void GDAPI godot_array_new_copy(godot_array *r_dest, const godot_array *p_src); -void GDAPI godot_array_destroy(godot_array *p_self); -godot_variant GDAPI *godot_array_operator_index(godot_array *p_self, godot_int p_index); -const godot_variant GDAPI *godot_array_operator_index_const(const godot_array *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_ARRAY_H diff --git a/modules/gdnative/include/gdnative/basis.h b/modules/gdnative/include/gdnative/basis.h deleted file mode 100644 index 50c9aa6408..0000000000 --- a/modules/gdnative/include/gdnative/basis.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************/ -/* basis.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_BASIS_H -#define GODOT_BASIS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_BASIS_SIZE (sizeof(godot_real_t) * 9) - -#ifndef GODOT_CORE_API_GODOT_BASIS_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_BASIS_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_BASIS_SIZE]; -} godot_basis; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_basis_new(godot_basis *p_self); -void GDAPI godot_basis_new_copy(godot_basis *r_dest, const godot_basis *p_src); -godot_vector3 GDAPI *godot_basis_operator_index(godot_basis *p_self, godot_int p_index); -const godot_vector3 GDAPI *godot_basis_operator_index_const(const godot_basis *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_BASIS_H diff --git a/modules/gdnative/include/gdnative/callable.h b/modules/gdnative/include/gdnative/callable.h deleted file mode 100644 index db068d2ac7..0000000000 --- a/modules/gdnative/include/gdnative/callable.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************/ -/* callable.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_CALLABLE_H -#define GODOT_CALLABLE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -// Alignment hardcoded in `core/variant/callable.h`. -#define GODOT_CALLABLE_SIZE (16) - -#ifndef GODOT_CORE_API_GODOT_CALLABLE_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_CALLABLE_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_CALLABLE_SIZE]; -} godot_callable; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_callable_new(godot_callable *p_self); -void GDAPI godot_callable_new_copy(godot_callable *r_dest, const godot_callable *p_src); -void GDAPI godot_callable_destroy(godot_callable *p_self); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/modules/gdnative/include/gdnative/color.h b/modules/gdnative/include/gdnative/color.h deleted file mode 100644 index 2d64a323f9..0000000000 --- a/modules/gdnative/include/gdnative/color.h +++ /dev/null @@ -1,61 +0,0 @@ -/*************************************************************************/ -/* color.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_COLOR_H -#define GODOT_COLOR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -// Colors should always use 32-bit floats, so don't use real_t here. -#define GODOT_COLOR_SIZE (sizeof(float) * 4) - -#ifndef GODOT_CORE_API_GODOT_COLOR_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_COLOR_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_COLOR_SIZE]; -} godot_color; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_color_new(godot_color *p_self); -void GDAPI godot_color_new_copy(godot_color *r_dest, const godot_color *p_src); -float GDAPI *godot_color_operator_index(godot_color *p_self, godot_int p_index); -const float GDAPI *godot_color_operator_index_const(const godot_color *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_COLOR_H diff --git a/modules/gdnative/include/gdnative/dictionary.h b/modules/gdnative/include/gdnative/dictionary.h deleted file mode 100644 index 4219753f71..0000000000 --- a/modules/gdnative/include/gdnative/dictionary.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* dictionary.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_DICTIONARY_H -#define GODOT_DICTIONARY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -#define GODOT_DICTIONARY_SIZE sizeof(void *) - -#ifndef GODOT_CORE_API_GODOT_DICTIONARY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_DICTIONARY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_DICTIONARY_SIZE]; -} godot_dictionary; -#endif - -#include <gdnative/gdnative.h> -#include <gdnative/variant_struct.h> - -void GDAPI godot_dictionary_new(godot_dictionary *p_self); -void GDAPI godot_dictionary_new_copy(godot_dictionary *r_dest, const godot_dictionary *p_src); -void GDAPI godot_dictionary_destroy(godot_dictionary *p_self); -godot_variant GDAPI *godot_dictionary_operator_index(godot_dictionary *p_self, const godot_variant *p_key); -const godot_variant GDAPI *godot_dictionary_operator_index_const(const godot_dictionary *p_self, const godot_variant *p_key); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_DICTIONARY_H diff --git a/modules/gdnative/include/gdnative/gdnative.h b/modules/gdnative/include/gdnative/gdnative.h deleted file mode 100644 index b46a00c185..0000000000 --- a/modules/gdnative/include/gdnative/gdnative.h +++ /dev/null @@ -1,287 +0,0 @@ -/*************************************************************************/ -/* gdnative.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_GDNATIVE_H -#define GODOT_GDNATIVE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) || defined(__ANDROID__) -#define GDCALLINGCONV -#define GDAPI GDCALLINGCONV -#elif defined(__APPLE__) -#include "TargetConditionals.h" -#if TARGET_OS_IPHONE -#define GDCALLINGCONV __attribute__((visibility("default"))) -#define GDAPI GDCALLINGCONV -#elif TARGET_OS_MAC -#define GDCALLINGCONV __attribute__((sysv_abi)) -#define GDAPI GDCALLINGCONV -#endif -#else // !_WIN32 && !__APPLE__ -#define GDCALLINGCONV __attribute__((sysv_abi)) -#define GDAPI GDCALLINGCONV -#endif - -// This is for libraries *using* the header, NOT GODOT EXPOSING STUFF!! -#ifdef __GNUC__ -#define GDN_EXPORT __attribute__((visibility("default"))) -#elif defined(_WIN32) -#define GDN_EXPORT __declspec(dllexport) -#else -#define GDN_EXPORT -#endif - -#include <stdbool.h> -#include <stdint.h> - -////// Error - -typedef enum { - GODOT_OK, // (0) - GODOT_FAILED, ///< Generic fail error - GODOT_ERR_UNAVAILABLE, ///< What is requested is unsupported/unavailable - GODOT_ERR_UNCONFIGURED, ///< The object being used hasn't been properly set up yet - GODOT_ERR_UNAUTHORIZED, ///< Missing credentials for requested resource - GODOT_ERR_PARAMETER_RANGE_ERROR, ///< Parameter given out of range (5) - GODOT_ERR_OUT_OF_MEMORY, ///< Out of memory - GODOT_ERR_FILE_NOT_FOUND, - GODOT_ERR_FILE_BAD_DRIVE, - GODOT_ERR_FILE_BAD_PATH, - GODOT_ERR_FILE_NO_PERMISSION, // (10) - GODOT_ERR_FILE_ALREADY_IN_USE, - GODOT_ERR_FILE_CANT_OPEN, - GODOT_ERR_FILE_CANT_WRITE, - GODOT_ERR_FILE_CANT_READ, - GODOT_ERR_FILE_UNRECOGNIZED, // (15) - GODOT_ERR_FILE_CORRUPT, - GODOT_ERR_FILE_MISSING_DEPENDENCIES, - GODOT_ERR_FILE_EOF, - GODOT_ERR_CANT_OPEN, ///< Can't open a resource/socket/file - GODOT_ERR_CANT_CREATE, // (20) - GODOT_ERR_QUERY_FAILED, - GODOT_ERR_ALREADY_IN_USE, - GODOT_ERR_LOCKED, ///< resource is locked - GODOT_ERR_TIMEOUT, - GODOT_ERR_CANT_CONNECT, // (25) - GODOT_ERR_CANT_RESOLVE, - GODOT_ERR_CONNECTION_ERROR, - GODOT_ERR_CANT_ACQUIRE_RESOURCE, - GODOT_ERR_CANT_FORK, - GODOT_ERR_INVALID_DATA, ///< Data passed is invalid (30) - GODOT_ERR_INVALID_PARAMETER, ///< Parameter passed is invalid - GODOT_ERR_ALREADY_EXISTS, ///< When adding, item already exists - GODOT_ERR_DOES_NOT_EXIST, ///< When retrieving/erasing, it item does not exist - GODOT_ERR_DATABASE_CANT_READ, ///< database is full - GODOT_ERR_DATABASE_CANT_WRITE, ///< database is full (35) - GODOT_ERR_COMPILATION_FAILED, - GODOT_ERR_METHOD_NOT_FOUND, - GODOT_ERR_LINK_FAILED, - GODOT_ERR_SCRIPT_FAILED, - GODOT_ERR_CYCLIC_LINK, // (40) - GODOT_ERR_INVALID_DECLARATION, - GODOT_ERR_DUPLICATE_SYMBOL, - GODOT_ERR_PARSE_ERROR, - GODOT_ERR_BUSY, - GODOT_ERR_SKIP, // (45) - GODOT_ERR_HELP, ///< user requested help!! - GODOT_ERR_BUG, ///< a bug in the software certainly happened, due to a double check failing or unexpected behavior. - GODOT_ERR_PRINTER_ON_FIRE, /// the parallel port printer is engulfed in flames -} godot_error; - -/////// Object (forward declared) -typedef void godot_object; - -/////// String - -#include <gdnative/string.h> - -/////// String name - -#include <gdnative/string_name.h> - -////// Vector2 & Vector2i - -#include <gdnative/vector2.h> - -////// Rect2 & Rect2i - -#include <gdnative/rect2.h> - -////// Vector3 & Vector3i - -#include <gdnative/vector3.h> - -////// Transform2D - -#include <gdnative/transform2d.h> - -/////// Plane - -#include <gdnative/plane.h> - -/////// Quaternion - -#include <gdnative/quaternion.h> - -/////// AABB - -#include <gdnative/aabb.h> - -/////// Basis - -#include <gdnative/basis.h> - -/////// Transform3D - -#include <gdnative/transform_3d.h> - -/////// Color - -#include <gdnative/color.h> - -/////// NodePath - -#include <gdnative/node_path.h> - -/////// RID - -#include <gdnative/rid.h> - -/////// Callable & Signal - -#include <gdnative/callable.h> - -/////// Dictionary - -#include <gdnative/dictionary.h> - -/////// Array - -#include <gdnative/array.h> - -// single API file for Packed*Array -#include <gdnative/packed_arrays.h> - -void GDAPI godot_object_destroy(godot_object *p_o); - -////// Variant - -#include <gdnative/variant.h> - -////// Singleton API - -godot_object GDAPI *godot_global_get_singleton(char *p_name); // Result shouldn't be freed. - -////// MethodBind API - -typedef struct { - uint8_t _dont_touch_that[1]; // TODO -} godot_method_bind; - -godot_method_bind GDAPI *godot_method_bind_get_method(const char *p_classname, const char *p_methodname); -void GDAPI godot_method_bind_ptrcall(godot_method_bind *p_method_bind, godot_object *p_instance, const void **p_args, void *p_ret); -godot_variant GDAPI godot_method_bind_call(godot_method_bind *p_method_bind, godot_object *p_instance, const godot_variant **p_args, const int p_arg_count, godot_variant_call_error *p_call_error); -////// Script API - -typedef struct godot_gdnative_api_version { - unsigned int major; - unsigned int minor; -} godot_gdnative_api_version; - -typedef struct godot_gdnative_api_struct godot_gdnative_api_struct; - -struct godot_gdnative_api_struct { - unsigned int type; - godot_gdnative_api_version version; - const godot_gdnative_api_struct *next; -}; - -#define GDNATIVE_VERSION_COMPATIBLE(want, have) (want.major == have.major && want.minor <= have.minor) - -typedef struct { - godot_bool in_editor; - uint64_t core_api_hash; - uint64_t editor_api_hash; - uint64_t no_api_hash; - void (*report_version_mismatch)(const godot_object *p_library, const char *p_what, godot_gdnative_api_version p_want, godot_gdnative_api_version p_have); - void (*report_loading_error)(const godot_object *p_library, const char *p_what); - godot_object *gd_native_library; // pointer to GDNativeLibrary that is being initialized - const struct godot_gdnative_core_api_struct *api_struct; - const godot_string *active_library_path; -} godot_gdnative_init_options; - -typedef struct { - godot_bool in_editor; -} godot_gdnative_terminate_options; - -// Calling convention? -typedef godot_object *(*godot_class_constructor)(); - -godot_class_constructor GDAPI godot_get_class_constructor(const char *p_classname); - -godot_dictionary GDAPI godot_get_global_constants(); - -////// GDNative procedure types -typedef void (*godot_gdnative_init_fn)(godot_gdnative_init_options *); -typedef void (*godot_gdnative_terminate_fn)(godot_gdnative_terminate_options *); -typedef godot_variant (*godot_gdnative_procedure_fn)(godot_array *); - -////// System Functions - -typedef godot_variant (*native_call_cb)(void *, godot_array *); -void GDAPI godot_register_native_call_type(const char *p_call_type, native_call_cb p_callback); - -//using these will help Godot track how much memory is in use in debug mode -void GDAPI *godot_alloc(int p_bytes); -void GDAPI *godot_realloc(void *p_ptr, int p_bytes); -void GDAPI godot_free(void *p_ptr); - -// Helper print functions. -void GDAPI godot_print_error(const char *p_description, const char *p_function, const char *p_file, int p_line); -void GDAPI godot_print_warning(const char *p_description, const char *p_function, const char *p_file, int p_line); -void GDAPI godot_print_script_error(const char *p_description, const char *p_function, const char *p_file, int p_line); - -//tags used for safe dynamic casting -void GDAPI *godot_get_class_tag(const godot_string_name *p_class); -godot_object GDAPI *godot_object_cast_to(const godot_object *p_object, void *p_class_tag); - -// equivalent of GDScript's instance_from_id -godot_object GDAPI *godot_instance_from_id(uint64_t p_instance_id); - -uint64_t GDAPI godot_object_get_instance_id(const godot_object *p_object); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_GDNATIVE_H diff --git a/modules/gdnative/include/gdnative/math_defs.h b/modules/gdnative/include/gdnative/math_defs.h deleted file mode 100644 index dee027527e..0000000000 --- a/modules/gdnative/include/gdnative/math_defs.h +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************/ -/* math_defs.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_GDNATIVE_MATH_DEFS_H -#define GODOT_GDNATIVE_MATH_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdbool.h> -#include <stdint.h> - -////// bool - -typedef bool godot_bool; - -#define GODOT_TRUE 1 -#define GODOT_FALSE 0 - -/////// int - -typedef int64_t godot_int; - -/////// float - -typedef double godot_float; - -#ifdef REAL_T_IS_DOUBLE -typedef double godot_real_t; -#else -typedef float godot_real_t; -#endif - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_C_H diff --git a/modules/gdnative/include/gdnative/node_path.h b/modules/gdnative/include/gdnative/node_path.h deleted file mode 100644 index 46b693dcf6..0000000000 --- a/modules/gdnative/include/gdnative/node_path.h +++ /dev/null @@ -1,59 +0,0 @@ -/*************************************************************************/ -/* node_path.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_NODE_PATH_H -#define GODOT_NODE_PATH_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -#define GODOT_NODE_PATH_SIZE sizeof(void *) - -#ifndef GODOT_CORE_API_GODOT_NODE_PATH_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_NODE_PATH_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_NODE_PATH_SIZE]; -} godot_node_path; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_node_path_new(godot_node_path *p_self); -void GDAPI godot_node_path_new_copy(godot_node_path *r_dest, const godot_node_path *p_src); -void GDAPI godot_node_path_destroy(godot_node_path *p_self); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_NODE_PATH_H diff --git a/modules/gdnative/include/gdnative/packed_arrays.h b/modules/gdnative/include/gdnative/packed_arrays.h deleted file mode 100644 index f4935ee0dc..0000000000 --- a/modules/gdnative/include/gdnative/packed_arrays.h +++ /dev/null @@ -1,255 +0,0 @@ -/*************************************************************************/ -/* packed_arrays.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_PACKED_ARRAYS_H -#define GODOT_PACKED_ARRAYS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -/////// PackedByteArray - -#define GODOT_PACKED_BYTE_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_BYTE_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_BYTE_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_BYTE_ARRAY_SIZE]; -} godot_packed_byte_array; -#endif - -/////// PackedInt32Array - -#define GODOT_PACKED_INT32_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_INT32_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_INT32_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_INT32_ARRAY_SIZE]; -} godot_packed_int32_array; -#endif - -/////// PackedInt64Array - -#define GODOT_PACKED_INT64_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_INT64_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_INT64_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_INT64_ARRAY_SIZE]; -} godot_packed_int64_array; -#endif - -/////// PackedFloat32Array - -#define GODOT_PACKED_FLOAT32_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_FLOAT32_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_FLOAT32_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_FLOAT32_ARRAY_SIZE]; -} godot_packed_float32_array; -#endif - -/////// PackedFloat64Array - -#define GODOT_PACKED_FLOAT64_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_FLOAT64_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_FLOAT64_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_FLOAT64_ARRAY_SIZE]; -} godot_packed_float64_array; -#endif - -/////// PackedStringArray - -#define GODOT_PACKED_STRING_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_STRING_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_STRING_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_STRING_ARRAY_SIZE]; -} godot_packed_string_array; -#endif - -/////// PackedVector2Array - -#define GODOT_PACKED_VECTOR2_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_VECTOR2_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_VECTOR2_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_VECTOR2_ARRAY_SIZE]; -} godot_packed_vector2_array; -#endif - -/////// PackedVector2iArray - -#define GODOT_PACKED_VECTOR2I_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_VECTOR2I_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_VECTOR2I_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_VECTOR2I_ARRAY_SIZE]; -} godot_packed_vector2i_array; -#endif - -/////// PackedVector3Array - -#define GODOT_PACKED_VECTOR3_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_VECTOR3_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_VECTOR3_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_VECTOR3_ARRAY_SIZE]; -} godot_packed_vector3_array; -#endif - -/////// PackedVector3iArray - -#define GODOT_PACKED_VECTOR3I_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_VECTOR3I_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_VECTOR3I_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_VECTOR3I_ARRAY_SIZE]; -} godot_packed_vector3i_array; -#endif - -/////// PackedColorArray - -#define GODOT_PACKED_COLOR_ARRAY_SIZE (2 * sizeof(void *)) - -#ifndef GODOT_CORE_API_GODOT_PACKED_COLOR_ARRAY_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PACKED_COLOR_ARRAY_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PACKED_COLOR_ARRAY_SIZE]; -} godot_packed_color_array; -#endif - -#include <gdnative/gdnative.h> - -// Byte. - -void GDAPI godot_packed_byte_array_new(godot_packed_byte_array *p_self); -void GDAPI godot_packed_byte_array_new_copy(godot_packed_byte_array *r_dest, const godot_packed_byte_array *p_src); -void GDAPI godot_packed_byte_array_destroy(godot_packed_byte_array *p_self); -uint8_t GDAPI *godot_packed_byte_array_operator_index(godot_packed_byte_array *p_self, godot_int p_index); -const uint8_t GDAPI *godot_packed_byte_array_operator_index_const(const godot_packed_byte_array *p_self, godot_int p_index); - -// Int32. - -void GDAPI godot_packed_int32_array_new(godot_packed_int32_array *p_self); -void GDAPI godot_packed_int32_array_new_copy(godot_packed_int32_array *r_dest, const godot_packed_int32_array *p_src); -void GDAPI godot_packed_int32_array_destroy(godot_packed_int32_array *p_self); -int32_t GDAPI *godot_packed_int32_array_operator_index(godot_packed_int32_array *p_self, godot_int p_index); -const int32_t GDAPI *godot_packed_int32_array_operator_index_const(const godot_packed_int32_array *p_self, godot_int p_index); - -// Int64. - -void GDAPI godot_packed_int64_array_new(godot_packed_int64_array *p_self); -void GDAPI godot_packed_int64_array_new_copy(godot_packed_int64_array *r_dest, const godot_packed_int64_array *p_src); -void GDAPI godot_packed_int64_array_destroy(godot_packed_int64_array *p_self); -int64_t GDAPI *godot_packed_int64_array_operator_index(godot_packed_int64_array *p_self, godot_int p_index); -const int64_t GDAPI *godot_packed_int64_array_operator_index_const(const godot_packed_int64_array *p_self, godot_int p_index); - -// Float32. - -void GDAPI godot_packed_float32_array_new(godot_packed_float32_array *p_self); -void GDAPI godot_packed_float32_array_new_copy(godot_packed_float32_array *r_dest, const godot_packed_float32_array *p_src); -void GDAPI godot_packed_float32_array_destroy(godot_packed_float32_array *p_self); -float GDAPI *godot_packed_float32_array_operator_index(godot_packed_float32_array *p_self, godot_int p_index); -const float GDAPI *godot_packed_float32_array_operator_index_const(const godot_packed_float32_array *p_self, godot_int p_index); - -// Float64. - -void GDAPI godot_packed_float64_array_new(godot_packed_float64_array *p_self); -void GDAPI godot_packed_float64_array_new_copy(godot_packed_float64_array *r_dest, const godot_packed_float64_array *p_src); -void GDAPI godot_packed_float64_array_destroy(godot_packed_float64_array *p_self); -double GDAPI *godot_packed_float64_array_operator_index(godot_packed_float64_array *p_self, godot_int p_index); -const double GDAPI *godot_packed_float64_array_operator_index_const(const godot_packed_float64_array *p_self, godot_int p_index); - -// String. - -void GDAPI godot_packed_string_array_new(godot_packed_string_array *p_self); -void GDAPI godot_packed_string_array_new_copy(godot_packed_string_array *r_dest, const godot_packed_string_array *p_src); -void GDAPI godot_packed_string_array_destroy(godot_packed_string_array *p_self); -godot_string GDAPI *godot_packed_string_array_operator_index(godot_packed_string_array *p_self, godot_int p_index); -const godot_string GDAPI *godot_packed_string_array_operator_index_const(const godot_packed_string_array *p_self, godot_int p_index); - -// Vector2. - -void GDAPI godot_packed_vector2_array_new(godot_packed_vector2_array *p_self); -void GDAPI godot_packed_vector2_array_new_copy(godot_packed_vector2_array *r_dest, const godot_packed_vector2_array *p_src); -void GDAPI godot_packed_vector2_array_destroy(godot_packed_vector2_array *p_self); -godot_vector2 GDAPI *godot_packed_vector2_array_operator_index(godot_packed_vector2_array *p_self, godot_int p_index); -const godot_vector2 GDAPI *godot_packed_vector2_array_operator_index_const(const godot_packed_vector2_array *p_self, godot_int p_index); - -// Vector2i. - -void GDAPI godot_packed_vector2i_array_new(godot_packed_vector2i_array *p_self); -void GDAPI godot_packed_vector2i_array_new_copy(godot_packed_vector2i_array *r_dest, const godot_packed_vector2i_array *p_src); -void GDAPI godot_packed_vector2i_array_destroy(godot_packed_vector2i_array *p_self); -godot_vector2i GDAPI *godot_packed_vector2i_array_operator_index(godot_packed_vector2i_array *p_self, godot_int p_index); -const godot_vector2i GDAPI *godot_packed_vector2i_array_operator_index_const(const godot_packed_vector2i_array *p_self, godot_int p_index); - -// Vector3. - -void GDAPI godot_packed_vector3_array_new(godot_packed_vector3_array *p_self); -void GDAPI godot_packed_vector3_array_new_copy(godot_packed_vector3_array *r_dest, const godot_packed_vector3_array *p_src); -void GDAPI godot_packed_vector3_array_destroy(godot_packed_vector3_array *p_self); -godot_vector3 GDAPI *godot_packed_vector3_array_operator_index(godot_packed_vector3_array *p_self, godot_int p_index); -const godot_vector3 GDAPI *godot_packed_vector3_array_operator_index_const(const godot_packed_vector3_array *p_self, godot_int p_index); - -// Vector3i. - -void GDAPI godot_packed_vector3i_array_new(godot_packed_vector3i_array *p_self); -void GDAPI godot_packed_vector3i_array_new_copy(godot_packed_vector3i_array *r_dest, const godot_packed_vector3i_array *p_src); -void GDAPI godot_packed_vector3i_array_destroy(godot_packed_vector3i_array *p_self); -godot_vector3i GDAPI *godot_packed_vector3i_array_operator_index(godot_packed_vector3i_array *p_self, godot_int p_index); -const godot_vector3i GDAPI *godot_packed_vector3i_array_operator_index_const(const godot_packed_vector3i_array *p_self, godot_int p_index); - -// Color. - -void GDAPI godot_packed_color_array_new(godot_packed_color_array *p_self); -void GDAPI godot_packed_color_array_new_copy(godot_packed_color_array *r_dest, const godot_packed_color_array *p_src); -void GDAPI godot_packed_color_array_destroy(godot_packed_color_array *p_self); -godot_color GDAPI *godot_packed_color_array_operator_index(godot_packed_color_array *p_self, godot_int p_index); -const godot_color GDAPI *godot_packed_color_array_operator_index_const(const godot_packed_color_array *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_PACKED_ARRAYS_H diff --git a/modules/gdnative/include/gdnative/plane.h b/modules/gdnative/include/gdnative/plane.h deleted file mode 100644 index e8f4f13b99..0000000000 --- a/modules/gdnative/include/gdnative/plane.h +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************/ -/* plane.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_PLANE_H -#define GODOT_PLANE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_PLANE_SIZE (sizeof(godot_real_t) * 4) - -#ifndef GODOT_CORE_API_GODOT_PLANE_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_PLANE_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_PLANE_SIZE]; -} godot_plane; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_plane_new(godot_plane *p_self); -void GDAPI godot_plane_new_copy(godot_plane *r_dest, const godot_plane *p_src); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_PLANE_H diff --git a/modules/gdnative/include/gdnative/quaternion.h b/modules/gdnative/include/gdnative/quaternion.h deleted file mode 100644 index 80e99c3a7c..0000000000 --- a/modules/gdnative/include/gdnative/quaternion.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************/ -/* quaternion.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_QUATERNION_H -#define GODOT_QUATERNION_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_QUATERNION_SIZE (sizeof(godot_real_t) * 4) - -#ifndef GODOT_CORE_API_GODOT_QUATERNION_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_QUATERNION_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_QUATERNION_SIZE]; -} godot_quaternion; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_quaternion_new(godot_quaternion *p_self); -void GDAPI godot_quaternion_new_copy(godot_quaternion *r_dest, const godot_quaternion *p_src); -godot_real_t GDAPI *godot_quaternion_operator_index(godot_quaternion *p_self, godot_int p_index); -const godot_real_t GDAPI *godot_quaternion_operator_index_const(const godot_quaternion *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_QUATERNION_H diff --git a/modules/gdnative/include/gdnative/rect2.h b/modules/gdnative/include/gdnative/rect2.h deleted file mode 100644 index a901537fc4..0000000000 --- a/modules/gdnative/include/gdnative/rect2.h +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************************/ -/* rect2.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_RECT2_H -#define GODOT_RECT2_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_RECT2_SIZE (sizeof(godot_real_t) * 4) - -#ifndef GODOT_CORE_API_GODOT_RECT2_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_RECT2_TYPE_DEFINED -typedef struct godot_rect2 { - uint8_t _dont_touch_that[GODOT_RECT2_SIZE]; -} godot_rect2; -#endif - -#define GODOT_RECT2I_SIZE (sizeof(int32_t) * 4) - -#ifndef GODOT_CORE_API_GODOT_RECT2I_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_RECT2I_TYPE_DEFINED -typedef struct godot_rect2i { - uint8_t _dont_touch_that[GODOT_RECT2I_SIZE]; -} godot_rect2i; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_rect2_new(godot_rect2 *p_self); -void GDAPI godot_rect2_new_copy(godot_rect2 *r_dest, const godot_rect2 *p_src); -void GDAPI godot_rect2i_new(godot_rect2i *p_self); -void GDAPI godot_rect2i_new_copy(godot_rect2i *r_dest, const godot_rect2i *p_src); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_RECT2_H diff --git a/modules/gdnative/include/gdnative/rid.h b/modules/gdnative/include/gdnative/rid.h deleted file mode 100644 index f3013f36f0..0000000000 --- a/modules/gdnative/include/gdnative/rid.h +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************/ -/* rid.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_RID_H -#define GODOT_RID_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -#define GODOT_RID_SIZE sizeof(uint64_t) - -#ifndef GODOT_CORE_API_GODOT_RID_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_RID_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_RID_SIZE]; -} godot_rid; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_rid_new(godot_rid *p_self); -void GDAPI godot_rid_new_copy(godot_rid *r_dest, const godot_rid *p_src); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_RID_H diff --git a/modules/gdnative/include/gdnative/signal.h b/modules/gdnative/include/gdnative/signal.h deleted file mode 100644 index 64aef1c918..0000000000 --- a/modules/gdnative/include/gdnative/signal.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************/ -/* signal.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_SIGNAL_H -#define GODOT_SIGNAL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -// Alignment hardcoded in `core/variant/callable.h`. -#define GODOT_SIGNAL_SIZE (16) - -#ifndef GODOT_CORE_API_GODOT_SIGNAL_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_SIGNAL_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_SIGNAL_SIZE]; -} godot_signal; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_signal_new(godot_signal *p_self); -void GDAPI godot_signal_new_copy(godot_signal *r_dest, const godot_signal *p_src); -void GDAPI godot_signal_destroy(godot_signal *p_self); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/modules/gdnative/include/gdnative/string.h b/modules/gdnative/include/gdnative/string.h deleted file mode 100644 index 375e8f94c3..0000000000 --- a/modules/gdnative/include/gdnative/string.h +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************/ -/* string.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_STRING_H -#define GODOT_STRING_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stddef.h> -#include <stdint.h> - -#ifndef __cplusplus -typedef uint16_t char16_t; -typedef uint32_t char32_t; -#endif - -typedef char32_t godot_char_type; - -#define GODOT_STRING_SIZE sizeof(void *) - -#ifndef GODOT_CORE_API_GODOT_STRING_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_STRING_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_STRING_SIZE]; -} godot_string; -#endif - -#include <gdnative/gdnative.h> -#include <gdnative/math_defs.h> - -void GDAPI godot_string_new(godot_string *r_dest); -void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src); -void GDAPI godot_string_destroy(godot_string *p_self); - -void GDAPI godot_string_new_with_latin1_chars(godot_string *r_dest, const char *p_contents); -void GDAPI godot_string_new_with_utf8_chars(godot_string *r_dest, const char *p_contents); -void GDAPI godot_string_new_with_utf16_chars(godot_string *r_dest, const char16_t *p_contents); -void GDAPI godot_string_new_with_utf32_chars(godot_string *r_dest, const char32_t *p_contents); -void GDAPI godot_string_new_with_wide_chars(godot_string *r_dest, const wchar_t *p_contents); - -void GDAPI godot_string_new_with_latin1_chars_and_len(godot_string *r_dest, const char *p_contents, const int p_size); -void GDAPI godot_string_new_with_utf8_chars_and_len(godot_string *r_dest, const char *p_contents, const int p_size); -void GDAPI godot_string_new_with_utf16_chars_and_len(godot_string *r_dest, const char16_t *p_contents, const int p_size); -void GDAPI godot_string_new_with_utf32_chars_and_len(godot_string *r_dest, const char32_t *p_contents, const int p_size); -void GDAPI godot_string_new_with_wide_chars_and_len(godot_string *r_dest, const wchar_t *p_contents, const int p_size); - -const char GDAPI *godot_string_to_latin1_chars(const godot_string *p_self); -const char GDAPI *godot_string_to_utf8_chars(const godot_string *p_self); -const char16_t GDAPI *godot_string_to_utf16_chars(const godot_string *p_self); -const char32_t GDAPI *godot_string_to_utf32_chars(const godot_string *p_self); -const wchar_t GDAPI *godot_string_to_wide_chars(const godot_string *p_self); - -char32_t GDAPI *godot_string_operator_index(godot_string *p_self, godot_int p_index); -const char32_t GDAPI *godot_string_operator_index_const(const godot_string *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_STRING_H diff --git a/modules/gdnative/include/gdnative/string_name.h b/modules/gdnative/include/gdnative/string_name.h deleted file mode 100644 index 6f4d9c64fe..0000000000 --- a/modules/gdnative/include/gdnative/string_name.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* string_name.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_STRING_NAME_H -#define GODOT_STRING_NAME_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> -#include <wchar.h> - -#define GODOT_STRING_NAME_SIZE sizeof(void *) - -#ifndef GODOT_CORE_API_GODOT_STRING_NAME_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_STRING_NAME_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_STRING_NAME_SIZE]; -} godot_string_name; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_string_name_new(godot_string_name *r_dest); -void GDAPI godot_string_name_new_copy(godot_string_name *r_dest, const godot_string_name *p_src); -void GDAPI godot_string_name_destroy(godot_string_name *p_self); - -void GDAPI godot_string_name_new_with_latin1_chars(godot_string_name *r_dest, const char *p_contents); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_STRING_NAME_H diff --git a/modules/gdnative/include/gdnative/transform2d.h b/modules/gdnative/include/gdnative/transform2d.h deleted file mode 100644 index a083e61a2c..0000000000 --- a/modules/gdnative/include/gdnative/transform2d.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************/ -/* transform2d.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_TRANSFORM2D_H -#define GODOT_TRANSFORM2D_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_TRANSFORM2D_SIZE (sizeof(godot_real_t) * 6) - -#ifndef GODOT_CORE_API_GODOT_TRANSFORM2D_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_TRANSFORM2D_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_TRANSFORM2D_SIZE]; -} godot_transform2d; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_transform2d_new(godot_transform2d *p_self); -void GDAPI godot_transform2d_new_copy(godot_transform2d *r_dest, const godot_transform2d *p_src); -godot_vector2 GDAPI *godot_transform2d_operator_index(godot_transform2d *p_self, godot_int p_index); -const godot_vector2 GDAPI *godot_transform2d_operator_index_const(const godot_transform2d *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_TRANSFORM2D_H diff --git a/modules/gdnative/include/gdnative/transform_3d.h b/modules/gdnative/include/gdnative/transform_3d.h deleted file mode 100644 index abd64a4d1d..0000000000 --- a/modules/gdnative/include/gdnative/transform_3d.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************/ -/* transform_3d.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_TRANSFORM3D_H -#define GODOT_TRANSFORM3D_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_TRANSFORM3D_SIZE (sizeof(godot_real_t) * 12) - -#ifndef GODOT_CORE_API_GODOT_TRANSFORM3D_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_TRANSFORM3D_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_TRANSFORM3D_SIZE]; -} godot_transform3d; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_transform3d_new(godot_transform3d *p_self); -void GDAPI godot_transform3d_new_copy(godot_transform3d *r_dest, const godot_transform3d *p_src); -godot_vector3 GDAPI *godot_transform3d_operator_index(godot_transform3d *p_self, godot_int p_index); -const godot_vector3 GDAPI *godot_transform3d_operator_index_const(const godot_transform3d *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_TRANSFORM3D_H diff --git a/modules/gdnative/include/gdnative/variant.h b/modules/gdnative/include/gdnative/variant.h deleted file mode 100644 index b716fdaca1..0000000000 --- a/modules/gdnative/include/gdnative/variant.h +++ /dev/null @@ -1,425 +0,0 @@ -/*************************************************************************/ -/* variant.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_VARIANT_H -#define GODOT_VARIANT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> -#include <gdnative/variant_struct.h> - -typedef enum godot_variant_type { - GODOT_VARIANT_TYPE_NIL, - - // atomic types - GODOT_VARIANT_TYPE_BOOL, - GODOT_VARIANT_TYPE_INT, - GODOT_VARIANT_TYPE_FLOAT, - GODOT_VARIANT_TYPE_STRING, - - // math types - GODOT_VARIANT_TYPE_VECTOR2, - GODOT_VARIANT_TYPE_VECTOR2I, - GODOT_VARIANT_TYPE_RECT2, - GODOT_VARIANT_TYPE_RECT2I, - GODOT_VARIANT_TYPE_VECTOR3, - GODOT_VARIANT_TYPE_VECTOR3I, - GODOT_VARIANT_TYPE_TRANSFORM2D, - GODOT_VARIANT_TYPE_PLANE, - GODOT_VARIANT_TYPE_QUATERNION, - GODOT_VARIANT_TYPE_AABB, - GODOT_VARIANT_TYPE_BASIS, - GODOT_VARIANT_TYPE_TRANSFORM3D, - - // misc types - GODOT_VARIANT_TYPE_COLOR, - GODOT_VARIANT_TYPE_STRING_NAME, - GODOT_VARIANT_TYPE_NODE_PATH, - GODOT_VARIANT_TYPE_RID, - GODOT_VARIANT_TYPE_OBJECT, - GODOT_VARIANT_TYPE_CALLABLE, - GODOT_VARIANT_TYPE_SIGNAL, - GODOT_VARIANT_TYPE_DICTIONARY, - GODOT_VARIANT_TYPE_ARRAY, - - // arrays - GODOT_VARIANT_TYPE_PACKED_BYTE_ARRAY, - GODOT_VARIANT_TYPE_PACKED_INT32_ARRAY, - GODOT_VARIANT_TYPE_PACKED_INT64_ARRAY, - GODOT_VARIANT_TYPE_PACKED_FLOAT32_ARRAY, - GODOT_VARIANT_TYPE_PACKED_FLOAT64_ARRAY, - GODOT_VARIANT_TYPE_PACKED_STRING_ARRAY, - GODOT_VARIANT_TYPE_PACKED_VECTOR2_ARRAY, - GODOT_VARIANT_TYPE_PACKED_VECTOR3_ARRAY, - GODOT_VARIANT_TYPE_PACKED_COLOR_ARRAY, -} godot_variant_type; - -typedef enum godot_variant_call_error_error { - GODOT_CALL_ERROR_CALL_OK, - GODOT_CALL_ERROR_CALL_ERROR_INVALID_METHOD, - GODOT_CALL_ERROR_CALL_ERROR_INVALID_ARGUMENT, - GODOT_CALL_ERROR_CALL_ERROR_TOO_MANY_ARGUMENTS, - GODOT_CALL_ERROR_CALL_ERROR_TOO_FEW_ARGUMENTS, - GODOT_CALL_ERROR_CALL_ERROR_INSTANCE_IS_NULL, -} godot_variant_call_error_error; - -typedef struct godot_variant_call_error { - godot_variant_call_error_error error; - int argument; - godot_variant_type expected; -} godot_variant_call_error; - -typedef enum godot_variant_operator { - // comparison - GODOT_VARIANT_OP_EQUAL, - GODOT_VARIANT_OP_NOT_EQUAL, - GODOT_VARIANT_OP_LESS, - GODOT_VARIANT_OP_LESS_EQUAL, - GODOT_VARIANT_OP_GREATER, - GODOT_VARIANT_OP_GREATER_EQUAL, - - // mathematic - GODOT_VARIANT_OP_ADD, - GODOT_VARIANT_OP_SUBTRACT, - GODOT_VARIANT_OP_MULTIPLY, - GODOT_VARIANT_OP_DIVIDE, - GODOT_VARIANT_OP_NEGATE, - GODOT_VARIANT_OP_POSITIVE, - GODOT_VARIANT_OP_MODULE, - GODOT_VARIANT_OP_STRING_CONCAT, - - // bitwise - GODOT_VARIANT_OP_SHIFT_LEFT, - GODOT_VARIANT_OP_SHIFT_RIGHT, - GODOT_VARIANT_OP_BIT_AND, - GODOT_VARIANT_OP_BIT_OR, - GODOT_VARIANT_OP_BIT_XOR, - GODOT_VARIANT_OP_BIT_NEGATE, - - // logic - GODOT_VARIANT_OP_AND, - GODOT_VARIANT_OP_OR, - GODOT_VARIANT_OP_XOR, - GODOT_VARIANT_OP_NOT, - - // containment - GODOT_VARIANT_OP_IN, - - GODOT_VARIANT_OP_MAX, -} godot_variant_operator; - -typedef enum godot_variant_utility_function_type { - GODOT_UTILITY_FUNC_TYPE_MATH, - GODOT_UTILITY_FUNC_TYPE_RANDOM, - GODOT_UTILITY_FUNC_TYPE_GENERAL, -} godot_variant_utility_function_type; - -// Types for function pointers. -typedef void (*godot_validated_operator_evaluator)(const godot_variant *p_left, const godot_variant *p_right, godot_variant *r_result); -typedef void (*godot_ptr_operator_evaluator)(const void *p_left, const void *p_right, void *r_result); -typedef void (*godot_validated_builtin_method)(godot_variant *p_base, const godot_variant **p_args, int p_argument_count, godot_variant *r_return); -typedef void (*godot_ptr_builtin_method)(void *p_base, const void **p_args, void *r_return, int p_argument_count); -typedef void (*godot_validated_constructor)(godot_variant *p_base, const godot_variant **p_args); -typedef void (*godot_ptr_constructor)(void *p_base, const void **p_args); -typedef void (*godot_validated_setter)(godot_variant *p_base, const godot_variant *p_value); -typedef void (*godot_validated_getter)(const godot_variant *p_base, godot_variant *r_value); -typedef void (*godot_ptr_setter)(void *p_base, const void *p_value); -typedef void (*godot_ptr_getter)(const void *p_base, void *r_value); -typedef void (*godot_validated_indexed_setter)(godot_variant *p_base, godot_int p_index, const godot_variant *p_value, bool *r_oob); -typedef void (*godot_validated_indexed_getter)(const godot_variant *p_base, godot_int p_index, godot_variant *r_value, bool *r_oob); -typedef void (*godot_ptr_indexed_setter)(void *p_base, godot_int p_index, const void *p_value); -typedef void (*godot_ptr_indexed_getter)(const void *p_base, godot_int p_index, void *r_value); -typedef void (*godot_validated_keyed_setter)(godot_variant *p_base, const godot_variant *p_key, const godot_variant *p_value, bool *r_valid); -typedef void (*godot_validated_keyed_getter)(const godot_variant *p_base, const godot_variant *p_key, godot_variant *r_value, bool *r_valid); -typedef bool (*godot_validated_keyed_checker)(const godot_variant *p_base, const godot_variant *p_key, bool *r_valid); -typedef void (*godot_ptr_keyed_setter)(void *p_base, const void *p_key, const void *p_value); -typedef void (*godot_ptr_keyed_getter)(const void *p_base, const void *p_key, void *r_value); -typedef uint32_t (*godot_ptr_keyed_checker)(const godot_variant *p_base, const godot_variant *p_key); -typedef void (*godot_validated_utility_function)(godot_variant *r_return, const godot_variant **p_arguments, int p_argument_count); -typedef void (*godot_ptr_utility_function)(void *r_return, const void **p_arguments, int p_argument_count); - -#include <gdnative/aabb.h> -#include <gdnative/array.h> -#include <gdnative/basis.h> -#include <gdnative/callable.h> -#include <gdnative/color.h> -#include <gdnative/dictionary.h> -#include <gdnative/node_path.h> -#include <gdnative/packed_arrays.h> -#include <gdnative/plane.h> -#include <gdnative/quaternion.h> -#include <gdnative/rect2.h> -#include <gdnative/rid.h> -#include <gdnative/signal.h> -#include <gdnative/string.h> -#include <gdnative/string_name.h> -#include <gdnative/transform2d.h> -#include <gdnative/transform_3d.h> -#include <gdnative/variant.h> -#include <gdnative/vector2.h> -#include <gdnative/vector3.h> - -#include <gdnative/gdnative.h> - -// Memory. - -void GDAPI godot_variant_new_copy(godot_variant *r_dest, const godot_variant *p_src); - -void GDAPI godot_variant_new_nil(godot_variant *r_dest); -void GDAPI godot_variant_new_bool(godot_variant *r_dest, const godot_bool p_b); -void GDAPI godot_variant_new_int(godot_variant *r_dest, const godot_int p_i); -void GDAPI godot_variant_new_float(godot_variant *r_dest, const godot_float p_f); -void GDAPI godot_variant_new_string(godot_variant *r_dest, const godot_string *p_s); -void GDAPI godot_variant_new_vector2(godot_variant *r_dest, const godot_vector2 *p_v2); -void GDAPI godot_variant_new_vector2i(godot_variant *r_dest, const godot_vector2i *p_v2); -void GDAPI godot_variant_new_rect2(godot_variant *r_dest, const godot_rect2 *p_rect2); -void GDAPI godot_variant_new_rect2i(godot_variant *r_dest, const godot_rect2i *p_rect2); -void GDAPI godot_variant_new_vector3(godot_variant *r_dest, const godot_vector3 *p_v3); -void GDAPI godot_variant_new_vector3i(godot_variant *r_dest, const godot_vector3i *p_v3); -void GDAPI godot_variant_new_transform2d(godot_variant *r_dest, const godot_transform2d *p_t2d); -void GDAPI godot_variant_new_plane(godot_variant *r_dest, const godot_plane *p_plane); -void GDAPI godot_variant_new_quaternion(godot_variant *r_dest, const godot_quaternion *p_quaternion); -void GDAPI godot_variant_new_aabb(godot_variant *r_dest, const godot_aabb *p_aabb); -void GDAPI godot_variant_new_basis(godot_variant *r_dest, const godot_basis *p_basis); -void GDAPI godot_variant_new_transform3d(godot_variant *r_dest, const godot_transform3d *p_trans); -void GDAPI godot_variant_new_color(godot_variant *r_dest, const godot_color *p_color); -void GDAPI godot_variant_new_string_name(godot_variant *r_dest, const godot_string_name *p_s); -void GDAPI godot_variant_new_node_path(godot_variant *r_dest, const godot_node_path *p_np); -void GDAPI godot_variant_new_rid(godot_variant *r_dest, const godot_rid *p_rid); -void GDAPI godot_variant_new_object(godot_variant *r_dest, const godot_object *p_obj); -void GDAPI godot_variant_new_callable(godot_variant *r_dest, const godot_callable *p_callable); -void GDAPI godot_variant_new_signal(godot_variant *r_dest, const godot_signal *p_signal); -void GDAPI godot_variant_new_dictionary(godot_variant *r_dest, const godot_dictionary *p_dict); -void GDAPI godot_variant_new_array(godot_variant *r_dest, const godot_array *p_arr); -void GDAPI godot_variant_new_packed_byte_array(godot_variant *r_dest, const godot_packed_byte_array *p_pba); -void GDAPI godot_variant_new_packed_int32_array(godot_variant *r_dest, const godot_packed_int32_array *p_pia); -void GDAPI godot_variant_new_packed_int64_array(godot_variant *r_dest, const godot_packed_int64_array *p_pia); -void GDAPI godot_variant_new_packed_float32_array(godot_variant *r_dest, const godot_packed_float32_array *p_pra); -void GDAPI godot_variant_new_packed_float64_array(godot_variant *r_dest, const godot_packed_float64_array *p_pra); -void GDAPI godot_variant_new_packed_string_array(godot_variant *r_dest, const godot_packed_string_array *p_psa); -void GDAPI godot_variant_new_packed_vector2_array(godot_variant *r_dest, const godot_packed_vector2_array *p_pv2a); -void GDAPI godot_variant_new_packed_vector3_array(godot_variant *r_dest, const godot_packed_vector3_array *p_pv3a); -void GDAPI godot_variant_new_packed_color_array(godot_variant *r_dest, const godot_packed_color_array *p_pca); - -godot_bool GDAPI godot_variant_as_bool(const godot_variant *p_self); -godot_int GDAPI godot_variant_as_int(const godot_variant *p_self); -godot_float GDAPI godot_variant_as_float(const godot_variant *p_self); -godot_string GDAPI godot_variant_as_string(const godot_variant *p_self); -godot_vector2 GDAPI godot_variant_as_vector2(const godot_variant *p_self); -godot_vector2i GDAPI godot_variant_as_vector2i(const godot_variant *p_self); -godot_rect2 GDAPI godot_variant_as_rect2(const godot_variant *p_self); -godot_rect2i GDAPI godot_variant_as_rect2i(const godot_variant *p_self); -godot_vector3 GDAPI godot_variant_as_vector3(const godot_variant *p_self); -godot_vector3i GDAPI godot_variant_as_vector3i(const godot_variant *p_self); -godot_transform2d GDAPI godot_variant_as_transform2d(const godot_variant *p_self); -godot_plane GDAPI godot_variant_as_plane(const godot_variant *p_self); -godot_quaternion GDAPI godot_variant_as_quaternion(const godot_variant *p_self); -godot_aabb GDAPI godot_variant_as_aabb(const godot_variant *p_self); -godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_self); -godot_transform3d GDAPI godot_variant_as_transform3d(const godot_variant *p_self); -godot_color GDAPI godot_variant_as_color(const godot_variant *p_self); -godot_string_name GDAPI godot_variant_as_string_name(const godot_variant *p_self); -godot_node_path GDAPI godot_variant_as_node_path(const godot_variant *p_self); -godot_rid GDAPI godot_variant_as_rid(const godot_variant *p_self); -godot_object GDAPI *godot_variant_as_object(const godot_variant *p_self); -godot_callable GDAPI godot_variant_as_callable(const godot_variant *p_self); -godot_signal GDAPI godot_variant_as_signal(const godot_variant *p_self); -godot_dictionary GDAPI godot_variant_as_dictionary(const godot_variant *p_self); -godot_array GDAPI godot_variant_as_array(const godot_variant *p_self); -godot_packed_byte_array GDAPI godot_variant_as_packed_byte_array(const godot_variant *p_self); -godot_packed_int32_array GDAPI godot_variant_as_packed_int32_array(const godot_variant *p_self); -godot_packed_int64_array GDAPI godot_variant_as_packed_int64_array(const godot_variant *p_self); -godot_packed_float32_array GDAPI godot_variant_as_packed_float32_array(const godot_variant *p_self); -godot_packed_float64_array GDAPI godot_variant_as_packed_float64_array(const godot_variant *p_self); -godot_packed_string_array GDAPI godot_variant_as_packed_string_array(const godot_variant *p_self); -godot_packed_vector2_array GDAPI godot_variant_as_packed_vector2_array(const godot_variant *p_self); -godot_packed_vector3_array GDAPI godot_variant_as_packed_vector3_array(const godot_variant *p_self); -godot_packed_color_array GDAPI godot_variant_as_packed_color_array(const godot_variant *p_self); - -void GDAPI godot_variant_destroy(godot_variant *p_self); - -// Dynamic interaction. - -void GDAPI godot_variant_call(godot_variant *p_self, const godot_string_name *p_method, const godot_variant **p_args, const godot_int p_argument_count, godot_variant *r_return, godot_variant_call_error *r_error); -void GDAPI godot_variant_call_with_cstring(godot_variant *p_self, const char *p_method, const godot_variant **p_args, const godot_int p_argument_count, godot_variant *r_return, godot_variant_call_error *r_error); -void GDAPI godot_variant_call_static(godot_variant_type p_type, const godot_string_name *p_method, const godot_variant **p_args, const godot_int p_argument_count, godot_variant *r_return, godot_variant_call_error *r_error); -void GDAPI godot_variant_call_static_with_cstring(godot_variant_type p_type, const char *p_method, const godot_variant **p_args, const godot_int p_argument_count, godot_variant *r_return, godot_variant_call_error *r_error); -void GDAPI godot_variant_evaluate(godot_variant_operator p_op, const godot_variant *p_a, const godot_variant *p_b, godot_variant *r_return, bool *r_valid); -void GDAPI godot_variant_set(godot_variant *p_self, const godot_variant *p_key, const godot_variant *p_value, bool *r_valid); -void GDAPI godot_variant_set_named(godot_variant *p_self, const godot_string_name *p_name, const godot_variant *p_value, bool *r_valid); -void GDAPI godot_variant_set_named_with_cstring(godot_variant *p_self, const char *p_name, const godot_variant *p_value, bool *r_valid); -void GDAPI godot_variant_set_keyed(godot_variant *p_self, const godot_variant *p_key, const godot_variant *p_value, bool *r_valid); -void GDAPI godot_variant_set_indexed(godot_variant *p_self, godot_int p_index, const godot_variant *p_value, bool *r_valid, bool *r_oob); -godot_variant GDAPI godot_variant_get(const godot_variant *p_self, const godot_variant *p_key, bool *r_valid); -godot_variant GDAPI godot_variant_get_named(const godot_variant *p_self, const godot_string_name *p_key, bool *r_valid); -godot_variant GDAPI godot_variant_get_named_with_cstring(const godot_variant *p_self, const char *p_key, bool *r_valid); -godot_variant GDAPI godot_variant_get_keyed(const godot_variant *p_self, const godot_variant *p_key, bool *r_valid); -godot_variant GDAPI godot_variant_get_indexed(const godot_variant *p_self, godot_int p_index, bool *r_valid, bool *r_oob); -/// Iteration. -bool GDAPI godot_variant_iter_init(const godot_variant *p_self, godot_variant *r_iter, bool *r_valid); -bool GDAPI godot_variant_iter_next(const godot_variant *p_self, godot_variant *r_iter, bool *r_valid); -godot_variant GDAPI godot_variant_iter_get(const godot_variant *p_self, godot_variant *r_iter, bool *r_valid); - -/// Variant functions. -godot_bool GDAPI godot_variant_hash_compare(const godot_variant *p_self, const godot_variant *p_other); -godot_bool GDAPI godot_variant_booleanize(const godot_variant *p_self); -void GDAPI godot_variant_blend(const godot_variant *p_a, const godot_variant *p_b, float p_c, godot_variant *r_dst); -void GDAPI godot_variant_interpolate(const godot_variant *p_a, const godot_variant *p_b, float p_c, godot_variant *r_dst); -godot_variant GDAPI godot_variant_duplicate(const godot_variant *p_self, godot_bool p_deep); -godot_string GDAPI godot_variant_stringify(const godot_variant *p_self); - -// Discovery API. - -/// Operators. -godot_validated_operator_evaluator GDAPI godot_variant_get_validated_operator_evaluator(godot_variant_operator p_operator, godot_variant_type p_type_a, godot_variant_type p_type_b); -godot_ptr_operator_evaluator GDAPI godot_variant_get_ptr_operator_evaluator(godot_variant_operator p_operator, godot_variant_type p_type_a, godot_variant_type p_type_b); -godot_variant_type GDAPI godot_variant_get_operator_return_type(godot_variant_operator p_operator, godot_variant_type p_type_a, godot_variant_type p_type_b); -godot_string GDAPI godot_variant_get_operator_name(godot_variant_operator p_operator); - -/// Built-in methods. -bool GDAPI godot_variant_has_builtin_method(godot_variant_type p_type, const godot_string_name *p_method); -bool GDAPI godot_variant_has_builtin_method_with_cstring(godot_variant_type p_type, const char *p_method); -godot_validated_builtin_method GDAPI godot_variant_get_validated_builtin_method(godot_variant_type p_type, const godot_string_name *p_method); -godot_validated_builtin_method GDAPI godot_variant_get_validated_builtin_method_with_cstring(godot_variant_type p_type, const char *p_method); -godot_ptr_builtin_method GDAPI godot_variant_get_ptr_builtin_method(godot_variant_type p_type, const godot_string_name *p_method); -godot_ptr_builtin_method GDAPI godot_variant_get_ptr_builtin_method_with_cstring(godot_variant_type p_type, const char *p_method); -int GDAPI godot_variant_get_builtin_method_argument_count(godot_variant_type p_type, const godot_string_name *p_method); -int GDAPI godot_variant_get_builtin_method_argument_count_with_cstring(godot_variant_type p_type, const char *p_method); -godot_variant_type GDAPI godot_variant_get_builtin_method_argument_type(godot_variant_type p_type, const godot_string_name *p_method, int p_argument); -godot_variant_type GDAPI godot_variant_get_builtin_method_argument_type_with_cstring(godot_variant_type p_type, const char *p_method, int p_argument); -godot_string GDAPI godot_variant_get_builtin_method_argument_name(godot_variant_type p_type, const godot_string_name *p_method, int p_argument); -godot_string GDAPI godot_variant_get_builtin_method_argument_name_with_cstring(godot_variant_type p_type, const char *p_method, int p_argument); -bool GDAPI godot_variant_has_builtin_method_return_value(godot_variant_type p_type, const godot_string_name *p_method); -bool GDAPI godot_variant_has_builtin_method_return_value_with_cstring(godot_variant_type p_type, const char *p_method); -godot_variant_type GDAPI godot_variant_get_builtin_method_return_type(godot_variant_type p_type, const godot_string_name *p_method); -godot_variant_type GDAPI godot_variant_get_builtin_method_return_type_with_cstring(godot_variant_type p_type, const char *p_method); -bool GDAPI godot_variant_is_builtin_method_const(godot_variant_type p_type, const godot_string_name *p_method); -bool GDAPI godot_variant_is_builtin_method_const_with_cstring(godot_variant_type p_type, const char *p_method); -bool GDAPI godot_variant_is_builtin_method_static(godot_variant_type p_type, const godot_string_name *p_method); -bool GDAPI godot_variant_is_builtin_method_static_with_cstring(godot_variant_type p_type, const char *p_method); -bool GDAPI godot_variant_is_builtin_method_vararg(godot_variant_type p_type, const godot_string_name *p_method); -bool GDAPI godot_variant_is_builtin_method_vararg_with_cstring(godot_variant_type p_type, const char *p_method); -int GDAPI godot_variant_get_builtin_method_count(godot_variant_type p_type); -void GDAPI godot_variant_get_builtin_method_list(godot_variant_type p_type, godot_string_name *r_list); - -/// Constructors. -int GDAPI godot_variant_get_constructor_count(godot_variant_type p_type); -godot_validated_constructor GDAPI godot_variant_get_validated_constructor(godot_variant_type p_type, int p_constructor); -godot_ptr_constructor GDAPI godot_variant_get_ptr_constructor(godot_variant_type p_type, int p_constructor); -int GDAPI godot_variant_get_constructor_argument_count(godot_variant_type p_type, int p_constructor); -godot_variant_type GDAPI godot_variant_get_constructor_argument_type(godot_variant_type p_type, int p_constructor, int p_argument); -godot_string GDAPI godot_variant_get_constructor_argument_name(godot_variant_type p_type, int p_constructor, int p_argument); -void GDAPI godot_variant_construct(godot_variant_type p_type, godot_variant *p_base, const godot_variant **p_args, int p_argument_count, godot_variant_call_error *r_error); - -/// Properties. -godot_variant_type GDAPI godot_variant_get_member_type(godot_variant_type p_type, const godot_string_name *p_member); -godot_variant_type GDAPI godot_variant_get_member_type_with_cstring(godot_variant_type p_type, const char *p_member); -int GDAPI godot_variant_get_member_count(godot_variant_type p_type); -void GDAPI godot_variant_get_member_list(godot_variant_type p_type, godot_string_name *r_list); -godot_validated_setter GDAPI godot_variant_get_validated_setter(godot_variant_type p_type, const godot_string_name *p_member); -godot_validated_setter GDAPI godot_variant_get_validated_setter_with_cstring(godot_variant_type p_type, const char *p_member); -godot_validated_getter GDAPI godot_variant_get_validated_getter(godot_variant_type p_type, const godot_string_name *p_member); -godot_validated_getter GDAPI godot_variant_get_validated_getter_with_cstring(godot_variant_type p_type, const char *p_member); -godot_ptr_setter GDAPI godot_variant_get_ptr_setter(godot_variant_type p_type, const godot_string_name *p_member); -godot_ptr_setter GDAPI godot_variant_get_ptr_setter_with_cstring(godot_variant_type p_type, const char *p_member); -godot_ptr_getter GDAPI godot_variant_get_ptr_getter(godot_variant_type p_type, const godot_string_name *p_member); -godot_ptr_getter GDAPI godot_variant_get_ptr_getter_with_cstring(godot_variant_type p_type, const char *p_member); - -/// Indexing. -bool GDAPI godot_variant_has_indexing(godot_variant_type p_type); -godot_variant_type GDAPI godot_variant_get_indexed_element_type(godot_variant_type p_type); -godot_validated_indexed_setter GDAPI godot_variant_get_validated_indexed_setter(godot_variant_type p_type); -godot_validated_indexed_getter GDAPI godot_variant_get_validated_indexed_getter(godot_variant_type p_type); -godot_ptr_indexed_setter GDAPI godot_variant_get_ptr_indexed_setter(godot_variant_type p_type); -godot_ptr_indexed_getter GDAPI godot_variant_get_ptr_indexed_getter(godot_variant_type p_type); -uint64_t GDAPI godot_variant_get_indexed_size(const godot_variant *p_self); - -/// Keying. -bool GDAPI godot_variant_is_keyed(godot_variant_type p_type); -godot_validated_keyed_setter GDAPI godot_variant_get_validated_keyed_setter(godot_variant_type p_type); -godot_validated_keyed_getter GDAPI godot_variant_get_validated_keyed_getter(godot_variant_type p_type); -godot_validated_keyed_checker GDAPI godot_variant_get_validated_keyed_checker(godot_variant_type p_type); -godot_ptr_keyed_setter GDAPI godot_variant_get_ptr_keyed_setter(godot_variant_type p_type); -godot_ptr_keyed_getter GDAPI godot_variant_get_ptr_keyed_getter(godot_variant_type p_type); -godot_ptr_keyed_checker GDAPI godot_variant_get_ptr_keyed_checker(godot_variant_type p_type); - -/// Constants. -int GDAPI godot_variant_get_constants_count(godot_variant_type p_type); -void GDAPI godot_variant_get_constants_list(godot_variant_type p_type, godot_string_name *r_list); -bool GDAPI godot_variant_has_constant(godot_variant_type p_type, const godot_string_name *p_constant); -bool GDAPI godot_variant_has_constant_with_cstring(godot_variant_type p_type, const char *p_constant); -godot_variant GDAPI godot_variant_get_constant_value(godot_variant_type p_type, const godot_string_name *p_constant); -godot_variant GDAPI godot_variant_get_constant_value_with_cstring(godot_variant_type p_type, const char *p_constant); - -/// Utilities. -bool GDAPI godot_variant_has_utility_function(const godot_string_name *p_function); -bool GDAPI godot_variant_has_utility_function_with_cstring(const char *p_function); -void GDAPI godot_variant_call_utility_function(const godot_string_name *p_function, godot_variant *r_ret, const godot_variant **p_args, int p_argument_count, godot_variant_call_error *r_error); -void GDAPI godot_variant_call_utility_function_with_cstring(const char *p_function, godot_variant *r_ret, const godot_variant **p_args, int p_argument_count, godot_variant_call_error *r_error); -godot_ptr_utility_function GDAPI godot_variant_get_ptr_utility_function(const godot_string_name *p_function); -godot_ptr_utility_function GDAPI godot_variant_get_ptr_utility_function_with_cstring(const char *p_function); -godot_validated_utility_function GDAPI godot_variant_get_validated_utility_function(const godot_string_name *p_function); -godot_validated_utility_function GDAPI godot_variant_get_validated_utility_function_with_cstring(const char *p_function); -godot_variant_utility_function_type GDAPI godot_variant_get_utility_function_type(const godot_string_name *p_function); -godot_variant_utility_function_type GDAPI godot_variant_get_utility_function_type_with_cstring(const char *p_function); -int GDAPI godot_variant_get_utility_function_argument_count(const godot_string_name *p_function); -int GDAPI godot_variant_get_utility_function_argument_count_with_cstring(const char *p_function); -godot_variant_type GDAPI godot_variant_get_utility_function_argument_type(const godot_string_name *p_function, int p_argument); -godot_variant_type GDAPI godot_variant_get_utility_function_argument_type_with_cstring(const char *p_function, int p_argument); -godot_string GDAPI godot_variant_get_utility_function_argument_name(const godot_string_name *p_function, int p_argument); -godot_string GDAPI godot_variant_get_utility_function_argument_name_with_cstring(const char *p_function, int p_argument); -bool GDAPI godot_variant_has_utility_function_return_value(const godot_string_name *p_function); -bool GDAPI godot_variant_has_utility_function_return_value_with_cstring(const char *p_function); -godot_variant_type GDAPI godot_variant_get_utility_function_return_type(const godot_string_name *p_function); -godot_variant_type GDAPI godot_variant_get_utility_function_return_type_with_cstring(const char *p_function); -bool GDAPI godot_variant_is_utility_function_vararg(const godot_string_name *p_function); -bool GDAPI godot_variant_is_utility_function_vararg_with_cstring(const char *p_function); -int GDAPI godot_variant_get_utility_function_count(); -void GDAPI godot_variant_get_utility_function_list(godot_string_name *r_functions); - -// Introspection. - -godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_self); -bool GDAPI godot_variant_has_method(const godot_variant *p_self, const godot_string_name *p_method); -bool GDAPI godot_variant_has_member(godot_variant_type p_type, const godot_string_name *p_member); -bool GDAPI godot_variant_has_key(const godot_variant *p_self, const godot_variant *p_key, bool *r_valid); - -godot_string GDAPI godot_variant_get_type_name(godot_variant_type p_type); -bool GDAPI godot_variant_can_convert(godot_variant_type p_from, godot_variant_type p_to); -bool GDAPI godot_variant_can_convert_strict(godot_variant_type p_from, godot_variant_type p_to); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/modules/gdnative/include/gdnative/variant_struct.h b/modules/gdnative/include/gdnative/variant_struct.h deleted file mode 100644 index cc75a8c498..0000000000 --- a/modules/gdnative/include/gdnative/variant_struct.h +++ /dev/null @@ -1,53 +0,0 @@ -/*************************************************************************/ -/* variant_struct.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_VARIANT_STRUCT_H -#define GODOT_VARIANT_STRUCT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_VARIANT_SIZE (sizeof(godot_real_t) * 4 + sizeof(int64_t)) - -#ifndef GODOT_CORE_API_GODOT_VARIANT_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_VARIANT_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_VARIANT_SIZE]; -} godot_variant; -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/modules/gdnative/include/gdnative/vector2.h b/modules/gdnative/include/gdnative/vector2.h deleted file mode 100644 index f5b55fd4ce..0000000000 --- a/modules/gdnative/include/gdnative/vector2.h +++ /dev/null @@ -1,73 +0,0 @@ -/*************************************************************************/ -/* vector2.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_VECTOR2_H -#define GODOT_VECTOR2_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_VECTOR2_SIZE (sizeof(godot_real_t) * 2) - -#ifndef GODOT_CORE_API_GODOT_VECTOR2_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_VECTOR2_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_VECTOR2_SIZE]; -} godot_vector2; -#endif - -#define GODOT_VECTOR2I_SIZE (sizeof(int32_t) * 2) - -#ifndef GODOT_CORE_API_GODOT_VECTOR2I_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_VECTOR2I_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_VECTOR2I_SIZE]; -} godot_vector2i; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_vector2_new(godot_vector2 *p_self); -void GDAPI godot_vector2_new_copy(godot_vector2 *r_dest, const godot_vector2 *p_src); -void GDAPI godot_vector2i_new(godot_vector2i *p_self); -void GDAPI godot_vector2i_new_copy(godot_vector2i *r_dest, const godot_vector2i *p_src); -godot_real_t GDAPI *godot_vector2_operator_index(godot_vector2 *p_self, godot_int p_index); -const godot_real_t GDAPI *godot_vector2_operator_index_const(const godot_vector2 *p_self, godot_int p_index); -int32_t GDAPI *godot_vector2i_operator_index(godot_vector2i *p_self, godot_int p_index); -const int32_t GDAPI *godot_vector2i_operator_index_const(const godot_vector2i *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_VECTOR2_H diff --git a/modules/gdnative/include/gdnative/vector3.h b/modules/gdnative/include/gdnative/vector3.h deleted file mode 100644 index d52cd38a72..0000000000 --- a/modules/gdnative/include/gdnative/vector3.h +++ /dev/null @@ -1,73 +0,0 @@ -/*************************************************************************/ -/* vector3.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_VECTOR3_H -#define GODOT_VECTOR3_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <gdnative/math_defs.h> - -#define GODOT_VECTOR3_SIZE (sizeof(godot_real_t) * 3) - -#ifndef GODOT_CORE_API_GODOT_VECTOR3_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_VECTOR3_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_VECTOR3_SIZE]; -} godot_vector3; -#endif - -#define GODOT_VECTOR3I_SIZE (sizeof(int32_t) * 3) - -#ifndef GODOT_CORE_API_GODOT_VECTOR3I_TYPE_DEFINED -#define GODOT_CORE_API_GODOT_VECTOR3I_TYPE_DEFINED -typedef struct { - uint8_t _dont_touch_that[GODOT_VECTOR3I_SIZE]; -} godot_vector3i; -#endif - -#include <gdnative/gdnative.h> - -void GDAPI godot_vector3_new(godot_vector3 *p_self); -void GDAPI godot_vector3_new_copy(godot_vector3 *r_dest, const godot_vector3 *p_src); -void GDAPI godot_vector3i_new(godot_vector3i *p_self); -void GDAPI godot_vector3i_new_copy(godot_vector3i *r_dest, const godot_vector3i *p_src); -godot_real_t GDAPI *godot_vector3_operator_index(godot_vector3 *p_self, godot_int p_index); -const godot_real_t GDAPI *godot_vector3_operator_index_const(const godot_vector3 *p_self, godot_int p_index); -int32_t GDAPI *godot_vector3i_operator_index(godot_vector3i *p_self, godot_int p_index); -const int32_t GDAPI *godot_vector3i_operator_index_const(const godot_vector3i *p_self, godot_int p_index); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_VECTOR3_H diff --git a/modules/gdnative/include/nativescript/godot_nativescript.h b/modules/gdnative/include/nativescript/godot_nativescript.h deleted file mode 100644 index 879291c2e0..0000000000 --- a/modules/gdnative/include/nativescript/godot_nativescript.h +++ /dev/null @@ -1,233 +0,0 @@ -/*************************************************************************/ -/* godot_nativescript.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_NATIVESCRIPT_H -#define GODOT_NATIVESCRIPT_H - -#include <gdnative/gdnative.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - GODOT_METHOD_RPC_MODE_DISABLED, - GODOT_METHOD_RPC_MODE_ANY_PEER, - GODOT_METHOD_RPC_MODE_AUTHORITY, -} godot_nativescript_method_rpc_mode; - -typedef enum { - GODOT_PROPERTY_HINT_NONE, ///< no hint provided. - GODOT_PROPERTY_HINT_RANGE, ///< hint_text = "min,max,step,slider; //slider is optional" - GODOT_PROPERTY_HINT_EXP_RANGE, ///< hint_text = "min,max,step", exponential edit - GODOT_PROPERTY_HINT_ENUM, ///< hint_text= "val1,val2,val3,etc" - GODOT_PROPERTY_HINT_EXP_EASING, /// exponential easing function (Math::ease) - GODOT_PROPERTY_HINT_LENGTH, ///< hint_text= "length" (as integer) - GODOT_PROPERTY_HINT_KEY_ACCEL, ///< hint_text= "length" (as integer) - GODOT_PROPERTY_HINT_FLAGS, ///< hint_text= "flag1,flag2,etc" (as bit flags) - GODOT_PROPERTY_HINT_LAYERS_2D_RENDER, - GODOT_PROPERTY_HINT_LAYERS_2D_PHYSICS, - GODOT_PROPERTY_HINT_LAYERS_2D_NAVIGATION, - GODOT_PROPERTY_HINT_LAYERS_3D_RENDER, - GODOT_PROPERTY_HINT_LAYERS_3D_PHYSICS, - GODOT_PROPERTY_HINT_LAYERS_3D_NAVIGATION, - GODOT_PROPERTY_HINT_FILE, ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc," - GODOT_PROPERTY_HINT_DIR, ///< a directory path must be passed - GODOT_PROPERTY_HINT_GLOBAL_FILE, ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc," - GODOT_PROPERTY_HINT_GLOBAL_DIR, ///< a directory path must be passed - GODOT_PROPERTY_HINT_RESOURCE_TYPE, ///< a resource object type - GODOT_PROPERTY_HINT_MULTILINE_TEXT, ///< used for string properties that can contain multiple lines - GODOT_PROPERTY_HINT_PLACEHOLDER_TEXT, ///< used to set a placeholder text for string properties - GODOT_PROPERTY_HINT_COLOR_NO_ALPHA, ///< used for ignoring alpha component when editing a color - GODOT_PROPERTY_HINT_IMAGE_COMPRESS_LOSSY, - GODOT_PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS, - GODOT_PROPERTY_HINT_OBJECT_ID, - GODOT_PROPERTY_HINT_TYPE_STRING, ///< a type string, the hint is the base type to choose - GODOT_PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE, ///< so something else can provide this (used in scripts) - GODOT_PROPERTY_HINT_METHOD_OF_VARIANT_TYPE, ///< a method of a type - GODOT_PROPERTY_HINT_METHOD_OF_BASE_TYPE, ///< a method of a base type - GODOT_PROPERTY_HINT_METHOD_OF_INSTANCE, ///< a method of an instance - GODOT_PROPERTY_HINT_METHOD_OF_SCRIPT, ///< a method of a script & base - GODOT_PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE, ///< a property of a type - GODOT_PROPERTY_HINT_PROPERTY_OF_BASE_TYPE, ///< a property of a base type - GODOT_PROPERTY_HINT_PROPERTY_OF_INSTANCE, ///< a property of an instance - GODOT_PROPERTY_HINT_PROPERTY_OF_SCRIPT, ///< a property of a script & base - GODOT_PROPERTY_HINT_LOCALE_ID, - GODOT_PROPERTY_HINT_MAX, -} godot_nativescript_property_hint; - -typedef enum { - GODOT_PROPERTY_USAGE_STORAGE = 1, - GODOT_PROPERTY_USAGE_EDITOR = 2, - GODOT_PROPERTY_USAGE_NETWORK = 4, - GODOT_PROPERTY_USAGE_EDITOR_HELPER = 8, - GODOT_PROPERTY_USAGE_CHECKABLE = 16, //used for editing global variables - GODOT_PROPERTY_USAGE_CHECKED = 32, //used for editing global variables - GODOT_PROPERTY_USAGE_INTERNATIONALIZED = 64, //hint for internationalized strings - GODOT_PROPERTY_USAGE_GROUP = 128, //used for grouping props in the editor - GODOT_PROPERTY_USAGE_CATEGORY = 256, - GODOT_PROPERTY_USAGE_SUBGROUP = 512, - GODOT_PROPERTY_USAGE_NO_INSTANCE_STATE = 2048, - GODOT_PROPERTY_USAGE_RESTART_IF_CHANGED = 4096, - GODOT_PROPERTY_USAGE_SCRIPT_VARIABLE = 8192, - GODOT_PROPERTY_USAGE_STORE_IF_NULL = 16384, - GODOT_PROPERTY_USAGE_ANIMATE_AS_TRIGGER = 32768, - GODOT_PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED = 65536, - - GODOT_PROPERTY_USAGE_DEFAULT = GODOT_PROPERTY_USAGE_STORAGE | GODOT_PROPERTY_USAGE_EDITOR | GODOT_PROPERTY_USAGE_NETWORK, - GODOT_PROPERTY_USAGE_DEFAULT_INTL = GODOT_PROPERTY_USAGE_STORAGE | GODOT_PROPERTY_USAGE_EDITOR | GODOT_PROPERTY_USAGE_NETWORK | GODOT_PROPERTY_USAGE_INTERNATIONALIZED, - GODOT_PROPERTY_USAGE_NO_EDITOR = GODOT_PROPERTY_USAGE_STORAGE | GODOT_PROPERTY_USAGE_NETWORK, -} godot_nativescript_property_usage_flags; - -typedef struct { - godot_nativescript_method_rpc_mode rset_type; - - godot_int type; - godot_nativescript_property_hint hint; - godot_string hint_string; - godot_nativescript_property_usage_flags usage; - godot_variant default_value; -} godot_nativescript_property_attributes; - -typedef struct { - // instance pointer, method_data - return user data - GDCALLINGCONV void *(*create_func)(godot_object *, void *); - void *method_data; - GDCALLINGCONV void (*free_func)(void *); -} godot_nativescript_instance_create_func; - -typedef struct { - // instance pointer, method data, user data - GDCALLINGCONV void (*destroy_func)(godot_object *, void *, void *); - void *method_data; - GDCALLINGCONV void (*free_func)(void *); -} godot_nativescript_instance_destroy_func; - -void GDAPI godot_nativescript_register_class(void *p_gdnative_handle, const char *p_name, const char *p_base, godot_nativescript_instance_create_func p_create_func, godot_nativescript_instance_destroy_func p_destroy_func); - -void GDAPI godot_nativescript_register_tool_class(void *p_gdnative_handle, const char *p_name, const char *p_base, godot_nativescript_instance_create_func p_create_func, godot_nativescript_instance_destroy_func p_destroy_func); - -typedef struct { - godot_nativescript_method_rpc_mode rpc_type; -} godot_nativescript_method_attributes; - -typedef struct { - godot_string name; - - godot_variant_type type; - godot_nativescript_property_hint hint; - godot_string hint_string; -} godot_nativescript_method_argument; - -typedef struct { - // instance pointer, method data, user data, num args, args - return result as variant - GDCALLINGCONV godot_variant (*method)(godot_object *, void *, void *, int, godot_variant **); - void *method_data; - GDCALLINGCONV void (*free_func)(void *); -} godot_nativescript_instance_method; - -void GDAPI godot_nativescript_register_method(void *p_gdnative_handle, const char *p_name, const char *p_function_name, godot_nativescript_method_attributes p_attr, godot_nativescript_instance_method p_method); -void GDAPI godot_nativescript_set_method_argument_information(void *p_gdnative_handle, const char *p_name, const char *p_function_name, int p_num_args, const godot_nativescript_method_argument *p_args); - -typedef struct { - // instance pointer, method data, user data, value - GDCALLINGCONV void (*set_func)(godot_object *, void *, void *, godot_variant *); - void *method_data; - GDCALLINGCONV void (*free_func)(void *); -} godot_nativescript_property_set_func; - -typedef struct { - // instance pointer, method data, user data, value - GDCALLINGCONV godot_variant (*get_func)(godot_object *, void *, void *); - void *method_data; - GDCALLINGCONV void (*free_func)(void *); -} godot_nativescript_property_get_func; - -void GDAPI godot_nativescript_register_property(void *p_gdnative_handle, const char *p_name, const char *p_path, godot_nativescript_property_attributes *p_attr, godot_nativescript_property_set_func p_set_func, godot_nativescript_property_get_func p_get_func); - -typedef struct { - godot_string name; - godot_int type; - godot_nativescript_property_hint hint; - godot_string hint_string; - godot_nativescript_property_usage_flags usage; - godot_variant default_value; -} godot_nativescript_signal_argument; - -typedef struct { - godot_string name; - int num_args; - godot_nativescript_signal_argument *args; - int num_default_args; - godot_variant *default_args; -} godot_nativescript_signal; - -void GDAPI godot_nativescript_register_signal(void *p_gdnative_handle, const char *p_name, const godot_nativescript_signal *p_signal); - -void GDAPI *godot_nativescript_get_userdata(godot_object *p_instance); - -// documentation - -void GDAPI godot_nativescript_set_class_documentation(void *p_gdnative_handle, const char *p_name, godot_string p_documentation); -void GDAPI godot_nativescript_set_method_documentation(void *p_gdnative_handle, const char *p_name, const char *p_function_name, godot_string p_documentation); -void GDAPI godot_nativescript_set_property_documentation(void *p_gdnative_handle, const char *p_name, const char *p_path, godot_string p_documentation); -void GDAPI godot_nativescript_set_signal_documentation(void *p_gdnative_handle, const char *p_name, const char *p_signal_name, godot_string p_documentation); - -// type tag API - -void GDAPI godot_nativescript_set_global_type_tag(int p_idx, const char *p_name, const void *p_type_tag); -const void GDAPI *godot_nativescript_get_global_type_tag(int p_idx, const char *p_name); - -void GDAPI godot_nativescript_set_type_tag(void *p_gdnative_handle, const char *p_name, const void *p_type_tag); -const void GDAPI *godot_nativescript_get_type_tag(const godot_object *p_object); - -// instance binding API - -typedef struct { - GDCALLINGCONV void *(*alloc_instance_binding_data)(void *, const void *, godot_object *); - GDCALLINGCONV void (*free_instance_binding_data)(void *, void *); - GDCALLINGCONV void (*refcount_incremented_instance_binding)(void *, godot_object *); - GDCALLINGCONV bool (*refcount_decremented_instance_binding)(void *, godot_object *); - void *data; - GDCALLINGCONV void (*free_func)(void *); -} godot_nativescript_instance_binding_functions; - -int GDAPI godot_nativescript_register_instance_binding_data_functions(godot_nativescript_instance_binding_functions p_binding_functions); -void GDAPI godot_nativescript_unregister_instance_binding_data_functions(int p_idx); - -void GDAPI *godot_nativescript_get_instance_binding_data(int p_idx, godot_object *p_object); - -void GDAPI godot_nativescript_profiling_add_data(const char *p_signature, uint64_t p_time); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/modules/gdnative/include/pluginscript/godot_pluginscript.h b/modules/gdnative/include/pluginscript/godot_pluginscript.h deleted file mode 100644 index 0042d79966..0000000000 --- a/modules/gdnative/include/pluginscript/godot_pluginscript.h +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************************************/ -/* godot_pluginscript.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_PLUGINSCRIPT_H -#define GODOT_PLUGINSCRIPT_H - -#include <gdnative/gdnative.h> -#include <nativescript/godot_nativescript.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void godot_pluginscript_instance_data; -typedef void godot_pluginscript_script_data; -typedef void godot_pluginscript_language_data; - -// --- Instance --- - -typedef struct { - godot_pluginscript_instance_data *(*init)(godot_pluginscript_script_data *p_data, godot_object *p_owner); - void (*finish)(godot_pluginscript_instance_data *p_data); - - godot_bool (*set_prop)(godot_pluginscript_instance_data *p_data, const godot_string_name *p_name, const godot_variant *p_value); - godot_bool (*get_prop)(godot_pluginscript_instance_data *p_data, const godot_string_name *p_name, godot_variant *r_ret); - - godot_variant (*call_method)(godot_pluginscript_instance_data *p_data, - const godot_string_name *p_method, const godot_variant **p_args, - int p_argcount, godot_variant_call_error *r_error); - - void (*notification)(godot_pluginscript_instance_data *p_data, int p_notification); - godot_string (*to_string)(godot_pluginscript_instance_data *p_data, godot_bool *r_valid); - - //this is used by script languages that keep a reference counter of their own - //you can make make Ref<> not die when it reaches zero, so deleting the reference - //depends entirely from the script. - // Note: You can set those function pointer to nullptr if not needed. - void (*refcount_incremented)(godot_pluginscript_instance_data *p_data); - bool (*refcount_decremented)(godot_pluginscript_instance_data *p_data); // return true if it can die -} godot_pluginscript_instance_desc; - -// --- Script --- - -typedef struct { - godot_pluginscript_script_data *data; - godot_string_name name; - godot_bool is_tool; - godot_string_name base; - godot_string icon_path; - - // Member lines format: {<string>: <int>} - godot_dictionary member_lines; - // Method info dictionary format - // { - // name: <string> - // args: [<dict:property>] - // default_args: [<variant>] - // return: <dict:property> - // flags: <int> - // rpc_mode: <int:godot_method_rpc_mode> - // } - godot_array methods; - // Same format than for methods - godot_array signals; - // Property info dictionary format - // { - // name: <string> - // type: <int:godot_variant_type> - // hint: <int:godot_property_hint> - // hint_string: <string> - // usage: <int:godot_property_usage_flags> - // default_value: <variant> - // rset_mode: <int:godot_method_rpc_mode> - // } - godot_array properties; -} godot_pluginscript_script_manifest; - -typedef struct { - godot_pluginscript_script_manifest (*init)(godot_pluginscript_language_data *p_data, const godot_string *p_path, const godot_string *p_source, godot_error *r_error); - void (*finish)(godot_pluginscript_script_data *p_data); - godot_pluginscript_instance_desc instance_desc; -} godot_pluginscript_script_desc; - -// --- Language --- - -typedef struct { - godot_string_name signature; - godot_int call_count; - godot_int total_time; // In microseconds - godot_int self_time; // In microseconds -} godot_pluginscript_profiling_data; - -typedef struct { - const char *name; - const char *type; - const char *extension; - const char **recognized_extensions; // nullptr terminated array - godot_pluginscript_language_data *(*init)(); - void (*finish)(godot_pluginscript_language_data *p_data); - const char **reserved_words; // nullptr terminated array - const char **comment_delimiters; // nullptr terminated array - const char **string_delimiters; // nullptr terminated array - godot_bool has_named_classes; - godot_bool supports_builtin_mode; - godot_bool can_inherit_from_file; - - godot_string (*get_template_source_code)(godot_pluginscript_language_data *p_data, const godot_string *p_class_name, const godot_string *p_base_class_name); - godot_bool (*validate)(godot_pluginscript_language_data *p_data, const godot_string *p_script, const godot_string *p_path, godot_packed_string_array *r_functions, godot_array *r_errors); // errors = Array of Dictionary with "line", "column", "message" keys - int (*find_function)(godot_pluginscript_language_data *p_data, const godot_string *p_function, const godot_string *p_code); // Can be nullptr - godot_string (*make_function)(godot_pluginscript_language_data *p_data, const godot_string *p_class, const godot_string *p_name, const godot_packed_string_array *p_args); - godot_error (*complete_code)(godot_pluginscript_language_data *p_data, const godot_string *p_code, const godot_string *p_path, godot_object *p_owner, godot_array *r_options, godot_bool *r_force, godot_string *r_call_hint); - void (*auto_indent_code)(godot_pluginscript_language_data *p_data, godot_string *p_code, int p_from_line, int p_to_line); - - void (*add_global_constant)(godot_pluginscript_language_data *p_data, const godot_string_name *p_variable, const godot_variant *p_value); - godot_string (*debug_get_error)(godot_pluginscript_language_data *p_data); - int (*debug_get_stack_level_count)(godot_pluginscript_language_data *p_data); - int (*debug_get_stack_level_line)(godot_pluginscript_language_data *p_data, int p_level); - godot_string (*debug_get_stack_level_function)(godot_pluginscript_language_data *p_data, int p_level); - godot_string (*debug_get_stack_level_source)(godot_pluginscript_language_data *p_data, int p_level); - void (*debug_get_stack_level_locals)(godot_pluginscript_language_data *p_data, int p_level, godot_packed_string_array *p_locals, godot_array *p_values, int p_max_subitems, int p_max_depth); - void (*debug_get_stack_level_members)(godot_pluginscript_language_data *p_data, int p_level, godot_packed_string_array *p_members, godot_array *p_values, int p_max_subitems, int p_max_depth); - void (*debug_get_globals)(godot_pluginscript_language_data *p_data, godot_packed_string_array *p_locals, godot_array *p_values, int p_max_subitems, int p_max_depth); - godot_string (*debug_parse_stack_level_expression)(godot_pluginscript_language_data *p_data, int p_level, const godot_string *p_expression, int p_max_subitems, int p_max_depth); - - // TODO: could this stuff be moved to the godot_pluginscript_language_desc ? - void (*get_public_functions)(godot_pluginscript_language_data *p_data, godot_array *r_functions); - void (*get_public_constants)(godot_pluginscript_language_data *p_data, godot_dictionary *r_constants); - - void (*profiling_start)(godot_pluginscript_language_data *p_data); - void (*profiling_stop)(godot_pluginscript_language_data *p_data); - int (*profiling_get_accumulated_data)(godot_pluginscript_language_data *p_data, godot_pluginscript_profiling_data *r_info, int p_info_max); - int (*profiling_get_frame_data)(godot_pluginscript_language_data *p_data, godot_pluginscript_profiling_data *r_info, int p_info_max); - void (*profiling_frame)(godot_pluginscript_language_data *p_data); - - godot_pluginscript_script_desc script_desc; -} godot_pluginscript_language_desc; - -void GDAPI godot_pluginscript_register_language(const godot_pluginscript_language_desc *language_desc); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_PLUGINSCRIPT_H diff --git a/modules/gdnative/include/videodecoder/godot_videodecoder.h b/modules/gdnative/include/videodecoder/godot_videodecoder.h deleted file mode 100644 index 16daba0a67..0000000000 --- a/modules/gdnative/include/videodecoder/godot_videodecoder.h +++ /dev/null @@ -1,75 +0,0 @@ -/*************************************************************************/ -/* godot_videodecoder.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GODOT_NATIVEVIDEODECODER_H -#define GODOT_NATIVEVIDEODECODER_H - -#include <gdnative/gdnative.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define GODOTAV_API_MAJOR 0 -#define GODOTAV_API_MINOR 1 - -typedef struct -{ - godot_gdnative_api_version version; - void *next; - void *(*constructor)(godot_object *); - void (*destructor)(void *); - const char *(*get_plugin_name)(); - const char **(*get_supported_extensions)(int *count); - godot_bool (*open_file)(void *, void *); // data struct, and a FileAccess pointer - godot_float (*get_length)(const void *); - godot_float (*get_playback_position)(const void *); - void (*seek)(void *, godot_float); - void (*set_audio_track)(void *, godot_int); - void (*update)(void *, godot_float); - godot_packed_byte_array *(*get_videoframe)(void *); - godot_int (*get_audioframe)(void *, float *, int); - godot_int (*get_channels)(const void *); - godot_int (*get_mix_rate)(const void *); - godot_vector2 (*get_texture_size)(const void *); -} godot_videodecoder_interface_gdnative; - -typedef int (*GDNativeAudioMixCallback)(void *, const float *, int); - -// FileAccess wrappers for custom FFmpeg IO -godot_int GDAPI godot_videodecoder_file_read(void *file_ptr, uint8_t *buf, int buf_size); -int64_t GDAPI godot_videodecoder_file_seek(void *file_ptr, int64_t pos, int whence); -void GDAPI godot_videodecoder_register_decoder(const godot_videodecoder_interface_gdnative *p_interface); - -#ifdef __cplusplus -} -#endif - -#endif /* GODOT_NATIVEVIDEODECODER_H */ diff --git a/modules/gdnative/nativescript/SCsub b/modules/gdnative/nativescript/SCsub deleted file mode 100644 index 4212e87a87..0000000000 --- a/modules/gdnative/nativescript/SCsub +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env python - -Import("env") -Import("env_gdnative") - -env_gdnative.add_source_files(env.modules_sources, "*.cpp") - -if "platform" in env and env["platform"] in ["linuxbsd", "iphone"]: - env.Append(LINKFLAGS=["-rdynamic"]) diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp deleted file mode 100644 index 0309d1d9c7..0000000000 --- a/modules/gdnative/nativescript/api_generator.cpp +++ /dev/null @@ -1,948 +0,0 @@ -/*************************************************************************/ -/* api_generator.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "api_generator.h" - -#ifdef TOOLS_ENABLED - -#include "core/config/engine.h" -#include "core/core_constants.h" -#include "core/io/file_access.h" -#include "core/object/class_db.h" -#include "core/string/string_builder.h" -#include "core/templates/pair.h" -#include "core/variant/variant_parser.h" - -// helper stuff - -static Error save_file(const String &p_path, const List<String> &p_content) { - FileAccessRef file = FileAccess::open(p_path, FileAccess::WRITE); - - ERR_FAIL_COND_V(!file, ERR_FILE_CANT_WRITE); - - for (const List<String>::Element *e = p_content.front(); e != nullptr; e = e->next()) { - file->store_string(e->get()); - } - - file->close(); - - return OK; -} - -// helper stuff end - -struct MethodAPI { - String method_name; - String return_type; - - List<String> argument_types; - List<String> argument_names; - - Map<int, Variant> default_arguments; - - int argument_count = 0; - bool has_varargs = false; - bool is_editor = false; - bool is_noscript = false; - bool is_const = false; - bool is_static = false; // For builtin types. - bool is_reverse = false; - bool is_virtual = false; - bool is_from_script = false; -}; - -struct PropertyAPI { - String name; - String getter; - String setter; - String type; - int index = 0; -}; - -struct ConstantAPI { - String constant_name; - int constant_value = 0; - Variant builtin_constant_value; // For builtin types; - String builtin_constant_type; // For builtin types; -}; - -struct SignalAPI { - String name; - List<String> argument_types; - List<String> argument_names; - Map<int, Variant> default_arguments; -}; - -struct EnumAPI { - String name; - List<Pair<int, String>> values; -}; - -struct OperatorAPI { // For builtin types; - String name; - int oper = Variant::OP_MAX; - String other_type; - String return_type; -}; - -struct ClassAPI { - String class_name; - String super_class_name; - - ClassDB::APIType api_type = ClassDB::API_NONE; - - bool is_singleton = false; - String singleton_name; - bool is_instantiable = false; - // @Unclear - bool is_ref_counted = false; - bool has_indexing = false; // For builtin types. - String indexed_type; // For builtin types. - bool is_keyed = false; // For builtin types. - - List<MethodAPI> methods; - List<MethodAPI> constructors; // For builtin types. - List<PropertyAPI> properties; - List<ConstantAPI> constants; - List<SignalAPI> signals_; - List<EnumAPI> enums; - List<OperatorAPI> operators; // For builtin types. -}; - -static String get_type_name(const PropertyInfo &info) { - if (info.type == Variant::INT && (info.usage & PROPERTY_USAGE_CLASS_IS_ENUM)) { - return String("enum.") + String(info.class_name).replace(".", "::"); - } - if (info.class_name != StringName()) { - return info.class_name; - } - if (info.hint == PROPERTY_HINT_RESOURCE_TYPE) { - return info.class_name; - } - if (info.type == Variant::NIL && (info.usage & PROPERTY_USAGE_NIL_IS_VARIANT)) { - return "Variant"; - } - if (info.type == Variant::NIL) { - return "void"; - } - return Variant::get_type_name(info.type); -} - -/* - * Some comparison helper functions we need - */ - -struct MethodInfoComparator { - StringName::AlphCompare compare; - bool operator()(const MethodInfo &p_a, const MethodInfo &p_b) const { - return compare(p_a.name, p_b.name); - } -}; - -struct PropertyInfoComparator { - StringName::AlphCompare compare; - bool operator()(const PropertyInfo &p_a, const PropertyInfo &p_b) const { - return compare(p_a.name, p_b.name); - } -}; - -struct ConstantAPIComparator { - NoCaseComparator compare; - bool operator()(const ConstantAPI &p_a, const ConstantAPI &p_b) const { - return compare(p_a.constant_name, p_b.constant_name); - } -}; - -/* - * Reads the entire Godot API to a list - */ -List<ClassAPI> generate_c_api_classes() { - List<ClassAPI> api; - - List<StringName> classes; - ClassDB::get_class_list(&classes); - classes.sort_custom<StringName::AlphCompare>(); - - // Register global constants as a fake CoreConstants singleton class - { - ClassAPI global_constants_api; - global_constants_api.class_name = "CoreConstants"; - global_constants_api.api_type = ClassDB::API_CORE; - global_constants_api.is_singleton = true; - global_constants_api.singleton_name = "CoreConstants"; - global_constants_api.is_instantiable = false; - const int constants_count = CoreConstants::get_global_constant_count(); - - Map<StringName, EnumAPI> enum_api_map; - for (int i = 0; i < constants_count; ++i) { - StringName enum_name = CoreConstants::get_global_constant_enum(i); - String name = String(CoreConstants::get_global_constant_name(i)); - int value = CoreConstants::get_global_constant_value(i); - - if (enum_name == StringName()) { - ConstantAPI constant_api; - constant_api.constant_name = name; - constant_api.constant_value = value; - global_constants_api.constants.push_back(constant_api); - } else { - EnumAPI enum_api; - if (enum_api_map.has(enum_name)) { - enum_api = enum_api_map[enum_name]; - } else { - enum_api.name = String(enum_name); - } - enum_api.values.push_back(Pair(value, name)); - - enum_api_map[enum_name] = enum_api; - } - } - for (const KeyValue<StringName, EnumAPI> &E : enum_api_map) { - global_constants_api.enums.push_back(E.value); - } - global_constants_api.constants.sort_custom<ConstantAPIComparator>(); - api.push_back(global_constants_api); - } - - for (List<StringName>::Element *e = classes.front(); e != nullptr; e = e->next()) { - StringName class_name = e->get(); - - if (!ClassDB::is_class_exposed(class_name)) { - continue; - } - - ClassAPI class_api; - class_api.api_type = ClassDB::get_api_type(e->get()); - class_api.class_name = class_name; - class_api.super_class_name = ClassDB::get_parent_class(class_name); - { - class_api.is_singleton = Engine::get_singleton()->has_singleton(class_name); - if (class_api.is_singleton) { - class_api.singleton_name = class_name; - } - } - class_api.is_instantiable = !class_api.is_singleton && ClassDB::can_instantiate(class_name); - - { - List<StringName> inheriters; - ClassDB::get_inheriters_from_class("RefCounted", &inheriters); - bool is_ref_counted = !!inheriters.find(class_name) || class_name == "RefCounted"; - // @Unclear - class_api.is_ref_counted = !class_api.is_singleton && is_ref_counted; - } - - // constants - { - List<String> constant; - ClassDB::get_integer_constant_list(class_name, &constant, true); - constant.sort_custom<NoCaseComparator>(); - for (List<String>::Element *c = constant.front(); c != nullptr; c = c->next()) { - ConstantAPI constant_api; - constant_api.constant_name = c->get(); - constant_api.constant_value = ClassDB::get_integer_constant(class_name, c->get()); - - class_api.constants.push_back(constant_api); - } - } - - // signals - { - List<MethodInfo> signals_; - ClassDB::get_signal_list(class_name, &signals_, true); - signals_.sort_custom<MethodInfoComparator>(); - - for (int i = 0; i < signals_.size(); i++) { - SignalAPI signal; - - MethodInfo method_info = signals_[i]; - signal.name = method_info.name; - - for (int j = 0; j < method_info.arguments.size(); j++) { - PropertyInfo argument = method_info.arguments[j]; - String type; - String name = argument.name; - - if (argument.name.contains(":")) { - type = argument.name.get_slice(":", 1); - name = argument.name.get_slice(":", 0); - } else { - type = get_type_name(argument); - } - - signal.argument_names.push_back(name); - signal.argument_types.push_back(type); - } - - Vector<Variant> default_arguments = method_info.default_arguments; - - int default_start = signal.argument_names.size() - default_arguments.size(); - - for (int j = 0; j < default_arguments.size(); j++) { - signal.default_arguments[default_start + j] = default_arguments[j]; - } - - class_api.signals_.push_back(signal); - } - } - - //properties - { - List<PropertyInfo> properties; - ClassDB::get_property_list(class_name, &properties, true); - properties.sort_custom<PropertyInfoComparator>(); - - for (List<PropertyInfo>::Element *p = properties.front(); p != nullptr; p = p->next()) { - PropertyAPI property_api; - - property_api.name = p->get().name; - property_api.getter = ClassDB::get_property_getter(class_name, p->get().name); - property_api.setter = ClassDB::get_property_setter(class_name, p->get().name); - - if (p->get().name.contains(":")) { - property_api.type = p->get().name.get_slice(":", 1); - property_api.name = p->get().name.get_slice(":", 0); - } else { - MethodInfo minfo; - ClassDB::get_method_info(class_name, property_api.getter, &minfo, true, false); - property_api.type = get_type_name(minfo.return_val); - } - - property_api.index = ClassDB::get_property_index(class_name, p->get().name); - - if (!property_api.setter.is_empty() || !property_api.getter.is_empty()) { - class_api.properties.push_back(property_api); - } - } - } - - //methods - { - List<MethodInfo> methods; - ClassDB::get_method_list(class_name, &methods, true); - methods.sort_custom<MethodInfoComparator>(); - - for (List<MethodInfo>::Element *m = methods.front(); m != nullptr; m = m->next()) { - MethodAPI method_api; - MethodBind *method_bind = ClassDB::get_method(class_name, m->get().name); - MethodInfo &method_info = m->get(); - - //method name - method_api.method_name = method_info.name; - //method return type - if (method_api.method_name.contains(":")) { - method_api.return_type = method_api.method_name.get_slice(":", 1); - method_api.method_name = method_api.method_name.get_slice(":", 0); - } else { - method_api.return_type = get_type_name(m->get().return_val); - } - - method_api.argument_count = method_info.arguments.size(); - method_api.has_varargs = method_bind && method_bind->is_vararg(); - - // Method flags - method_api.is_virtual = false; - if (method_info.flags) { - const uint32_t flags = method_info.flags; - method_api.is_editor = flags & METHOD_FLAG_EDITOR; - method_api.is_noscript = flags & METHOD_FLAG_NOSCRIPT; - method_api.is_const = flags & METHOD_FLAG_CONST; - method_api.is_reverse = flags & METHOD_FLAG_REVERSE; - method_api.is_virtual = flags & METHOD_FLAG_VIRTUAL; - method_api.is_from_script = flags & METHOD_FLAG_FROM_SCRIPT; - } - - method_api.is_virtual = method_api.is_virtual || method_api.method_name[0] == '_'; - - // method argument name and type - - for (int i = 0; i < method_api.argument_count; i++) { - String arg_name; - String arg_type; - PropertyInfo arg_info = method_info.arguments[i]; - - arg_name = arg_info.name; - - if (arg_info.name.contains(":")) { - arg_type = arg_info.name.get_slice(":", 1); - arg_name = arg_info.name.get_slice(":", 0); - } else if (arg_info.hint == PROPERTY_HINT_RESOURCE_TYPE) { - arg_type = arg_info.class_name; - } else if (arg_info.type == Variant::NIL) { - arg_type = "Variant"; - } else if (arg_info.type == Variant::OBJECT) { - arg_type = arg_info.class_name; - if (arg_type.is_empty()) { - arg_type = Variant::get_type_name(arg_info.type); - } - } else { - arg_type = get_type_name(arg_info); - } - - method_api.argument_names.push_back(arg_name); - method_api.argument_types.push_back(arg_type); - - if (method_bind && method_bind->has_default_argument(i)) { - method_api.default_arguments[i] = method_bind->get_default_argument(i); - } - } - - class_api.methods.push_back(method_api); - } - } - - // enums - { - List<EnumAPI> enums; - List<StringName> enum_names; - ClassDB::get_enum_list(class_name, &enum_names, true); - for (const StringName &E : enum_names) { - List<StringName> value_names; - EnumAPI enum_api; - enum_api.name = E; - ClassDB::get_enum_constants(class_name, E, &value_names, true); - for (List<StringName>::Element *val_e = value_names.front(); val_e; val_e = val_e->next()) { - int int_val = ClassDB::get_integer_constant(class_name, val_e->get(), nullptr); - enum_api.values.push_back(Pair<int, String>(int_val, val_e->get())); - } - enum_api.values.sort_custom<PairSort<int, String>>(); - class_api.enums.push_back(enum_api); - } - } - - api.push_back(class_api); - } - - return api; -} - -/* - * Reads the builtin Variant API to a list - */ -List<ClassAPI> generate_c_builtin_api_types() { - List<ClassAPI> api; - - // Special class for the utility methods. - { - ClassAPI utility_api; - utility_api.class_name = "Utilities"; - utility_api.is_instantiable = false; - - List<StringName> utility_functions; - Variant::get_utility_function_list(&utility_functions); - for (const StringName &E : utility_functions) { - const StringName &function_name = E; - - MethodAPI function_api; - function_api.method_name = function_name; - function_api.has_varargs = Variant::is_utility_function_vararg(function_name); - function_api.argument_count = function_api.has_varargs ? 0 : Variant::get_utility_function_argument_count(function_name); - function_api.is_const = Variant::get_utility_function_type(function_name) == Variant::UTILITY_FUNC_TYPE_MATH; - - for (int i = 0; i < function_api.argument_count; i++) { - function_api.argument_names.push_back(Variant::get_utility_function_argument_name(function_name, i)); - Variant::Type arg_type = Variant::get_utility_function_argument_type(function_name, i); - function_api.argument_types.push_back(arg_type == Variant::NIL ? "Variant" : Variant::get_type_name(arg_type)); - } - - if (Variant::has_utility_function_return_value(function_name)) { - Variant::Type ret_type = Variant::get_utility_function_return_type(function_name); - function_api.return_type = ret_type == Variant::NIL ? "Variant" : Variant::get_type_name(ret_type); - } else { - function_api.return_type = "void"; - } - - utility_api.methods.push_back(function_api); - } - - api.push_back(utility_api); - } - - for (int t = 0; t < Variant::VARIANT_MAX; t++) { - Variant::Type type = (Variant::Type)t; - - ClassAPI class_api; - class_api.class_name = Variant::get_type_name(type); - class_api.is_instantiable = true; - class_api.has_indexing = Variant::has_indexing(type); - class_api.indexed_type = Variant::get_type_name(Variant::get_indexed_element_type(type)); - class_api.is_keyed = Variant::is_keyed(type); - // Types that are passed by reference. - switch (type) { - case Variant::OBJECT: - case Variant::DICTIONARY: - case Variant::ARRAY: - case Variant::PACKED_BYTE_ARRAY: - case Variant::PACKED_INT32_ARRAY: - case Variant::PACKED_INT64_ARRAY: - case Variant::PACKED_FLOAT32_ARRAY: - case Variant::PACKED_FLOAT64_ARRAY: - case Variant::PACKED_STRING_ARRAY: - case Variant::PACKED_VECTOR2_ARRAY: - case Variant::PACKED_VECTOR3_ARRAY: - case Variant::PACKED_COLOR_ARRAY: - class_api.is_ref_counted = true; - break; - default: - class_api.is_ref_counted = false; - break; - } - - // Methods. - - List<StringName> methods; - Variant::get_builtin_method_list(type, &methods); - for (const StringName &E : methods) { - const StringName &method_name = E; - - MethodAPI method_api; - - method_api.method_name = method_name; - method_api.argument_count = Variant::get_builtin_method_argument_count(type, method_name); - method_api.has_varargs = Variant::is_builtin_method_vararg(type, method_name); - method_api.is_const = Variant::is_builtin_method_const(type, method_name); - method_api.is_static = Variant::is_builtin_method_static(type, method_name); - - for (int i = 0; i < method_api.argument_count; i++) { - method_api.argument_names.push_back(Variant::get_builtin_method_argument_name(type, method_name, i)); - Variant::Type arg_type = Variant::get_builtin_method_argument_type(type, method_name, i); - method_api.argument_types.push_back(arg_type == Variant::NIL ? "Variant" : Variant::get_type_name(arg_type)); - } - - Vector<Variant> default_arguments = Variant::get_builtin_method_default_arguments(type, method_name); - - int default_start = method_api.argument_names.size() - default_arguments.size(); - - for (int i = 0; i < default_arguments.size(); i++) { - method_api.default_arguments[default_start + i] = default_arguments[i]; - } - - if (Variant::has_builtin_method_return_value(type, method_name)) { - Variant::Type ret_type = Variant::get_builtin_method_return_type(type, method_name); - method_api.return_type = ret_type == Variant::NIL ? "Variant" : Variant::get_type_name(ret_type); - } else { - method_api.return_type = "void"; - } - - class_api.methods.push_back(method_api); - } - - // Constructors. - - for (int c = 0; c < Variant::get_constructor_count(type); c++) { - MethodAPI constructor_api; - - constructor_api.method_name = Variant::get_type_name(type); - constructor_api.argument_count = Variant::get_constructor_argument_count(type, c); - constructor_api.return_type = Variant::get_type_name(type); - - for (int i = 0; i < constructor_api.argument_count; i++) { - constructor_api.argument_names.push_back(Variant::get_constructor_argument_name(type, c, i)); - Variant::Type arg_type = Variant::get_constructor_argument_type(type, c, i); - constructor_api.argument_types.push_back(arg_type == Variant::NIL ? "Variant" : Variant::get_type_name(arg_type)); - } - - class_api.constructors.push_back(constructor_api); - } - - // Constants. - - List<StringName> constants; - Variant::get_constants_for_type(type, &constants); - for (const StringName &E : constants) { - const StringName &constant_name = E; - ConstantAPI constant_api; - - constant_api.constant_name = constant_name; - constant_api.builtin_constant_value = Variant::get_constant_value(type, constant_name); - constant_api.builtin_constant_type = Variant::get_type_name(constant_api.builtin_constant_value.get_type()); - - class_api.constants.push_back(constant_api); - } - - // Members. - - List<StringName> members; - Variant::get_member_list(type, &members); - for (const StringName &E : members) { - const StringName &member_name = E; - - PropertyAPI member_api; - member_api.name = member_name; - Variant::Type member_type = Variant::get_member_type(type, member_name); - member_api.type = member_type == Variant::NIL ? "Variant" : Variant::get_type_name(member_type); - - class_api.properties.push_back(member_api); - } - - // Operators. - - for (int op = 0; op < Variant::OP_MAX; op++) { - Variant::Operator oper = (Variant::Operator)op; - - for (int ot = 0; ot < Variant::VARIANT_MAX; ot++) { - Variant::Type other_type = (Variant::Type)ot; - - if (!Variant::get_validated_operator_evaluator(oper, type, other_type)) { - continue; - } - - OperatorAPI oper_api; - oper_api.name = Variant::get_operator_name(oper); - oper_api.oper = oper; - oper_api.other_type = Variant::get_type_name(other_type); - oper_api.return_type = Variant::get_type_name(Variant::get_operator_return_type(oper, type, other_type)); - - class_api.operators.push_back(oper_api); - } - } - - api.push_back(class_api); - } - - return api; -} - -/* - * Generates the JSON source from the API in p_api - */ -static List<String> generate_c_api_json(const List<ClassAPI> &p_api) { - // I'm sorry for the \t mess - - List<String> source; - VariantWriter writer; - - source.push_back("[\n"); - - for (const List<ClassAPI>::Element *c = p_api.front(); c != nullptr; c = c->next()) { - ClassAPI api = c->get(); - - source.push_back("\t{\n"); - - source.push_back("\t\t\"name\": \"" + api.class_name + "\",\n"); - source.push_back("\t\t\"base_class\": \"" + api.super_class_name + "\",\n"); - source.push_back(String("\t\t\"api_type\": \"") + (api.api_type == ClassDB::API_CORE ? "core" : (api.api_type == ClassDB::API_EDITOR ? "tools" : "none")) + "\",\n"); - source.push_back(String("\t\t\"singleton\": ") + (api.is_singleton ? "true" : "false") + ",\n"); - source.push_back("\t\t\"singleton_name\": \"" + api.singleton_name + "\",\n"); - source.push_back(String("\t\t\"instantiable\": ") + (api.is_instantiable ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\"is_ref_counted\": ") + (api.is_ref_counted ? "true" : "false") + ",\n"); - - source.push_back("\t\t\"constants\": {\n"); - for (List<ConstantAPI>::Element *e = api.constants.front(); e; e = e->next()) { - source.push_back("\t\t\t\"" + e->get().constant_name + "\": " + String::num_int64(e->get().constant_value) + (e->next() ? "," : "") + "\n"); - } - source.push_back("\t\t},\n"); - - source.push_back("\t\t\"properties\": [\n"); - for (List<PropertyAPI>::Element *e = api.properties.front(); e; e = e->next()) { - source.push_back("\t\t\t{\n"); - source.push_back("\t\t\t\t\"name\": \"" + e->get().name + "\",\n"); - source.push_back("\t\t\t\t\"type\": \"" + e->get().type + "\",\n"); - source.push_back("\t\t\t\t\"getter\": \"" + e->get().getter + "\",\n"); - source.push_back("\t\t\t\t\"setter\": \"" + e->get().setter + "\",\n"); - source.push_back(String("\t\t\t\t\"index\": ") + itos(e->get().index) + "\n"); - source.push_back(String("\t\t\t}") + (e->next() ? "," : "") + "\n"); - } - source.push_back("\t\t],\n"); - - source.push_back("\t\t\"signals\": [\n"); - for (List<SignalAPI>::Element *e = api.signals_.front(); e; e = e->next()) { - source.push_back("\t\t\t{\n"); - source.push_back("\t\t\t\t\"name\": \"" + e->get().name + "\",\n"); - source.push_back("\t\t\t\t\"arguments\": [\n"); - for (int i = 0; i < e->get().argument_names.size(); i++) { - source.push_back("\t\t\t\t\t{\n"); - source.push_back("\t\t\t\t\t\t\"name\": \"" + e->get().argument_names[i] + "\",\n"); - source.push_back("\t\t\t\t\t\t\"type\": \"" + e->get().argument_types[i] + "\",\n"); - source.push_back(String("\t\t\t\t\t\t\"has_default_value\": ") + (e->get().default_arguments.has(i) ? "true" : "false") + ",\n"); - String default_value; - if (e->get().default_arguments.has(i)) { - writer.write_to_string(e->get().default_arguments[i], default_value); - default_value = default_value.replace("\n", "").json_escape(); - } - source.push_back("\t\t\t\t\t\t\"default_value\": \"" + default_value + "\"\n"); - source.push_back(String("\t\t\t\t\t}") + ((i < e->get().argument_names.size() - 1) ? "," : "") + "\n"); - } - source.push_back("\t\t\t\t]\n"); - source.push_back(String("\t\t\t}") + (e->next() ? "," : "") + "\n"); - } - source.push_back("\t\t],\n"); - - source.push_back("\t\t\"methods\": [\n"); - for (List<MethodAPI>::Element *e = api.methods.front(); e; e = e->next()) { - source.push_back("\t\t\t{\n"); - source.push_back("\t\t\t\t\"name\": \"" + e->get().method_name + "\",\n"); - source.push_back("\t\t\t\t\"return_type\": \"" + e->get().return_type + "\",\n"); - source.push_back(String("\t\t\t\t\"is_editor\": ") + (e->get().is_editor ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\t\t\"is_noscript\": ") + (e->get().is_noscript ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\t\t\"is_const\": ") + (e->get().is_const ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\t\t\"is_reverse\": ") + (e->get().is_reverse ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\t\t\"is_virtual\": ") + (e->get().is_virtual ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\t\t\"has_varargs\": ") + (e->get().has_varargs ? "true" : "false") + ",\n"); - source.push_back(String("\t\t\t\t\"is_from_script\": ") + (e->get().is_from_script ? "true" : "false") + ",\n"); - source.push_back("\t\t\t\t\"arguments\": [\n"); - for (int i = 0; i < e->get().argument_names.size(); i++) { - source.push_back("\t\t\t\t\t{\n"); - source.push_back("\t\t\t\t\t\t\"name\": \"" + e->get().argument_names[i] + "\",\n"); - source.push_back("\t\t\t\t\t\t\"type\": \"" + e->get().argument_types[i] + "\",\n"); - source.push_back(String("\t\t\t\t\t\t\"has_default_value\": ") + (e->get().default_arguments.has(i) ? "true" : "false") + ",\n"); - String default_value; - if (e->get().default_arguments.has(i)) { - writer.write_to_string(e->get().default_arguments[i], default_value); - default_value = default_value.replace("\n", "").json_escape(); - } - source.push_back("\t\t\t\t\t\t\"default_value\": \"" + default_value + "\"\n"); - source.push_back(String("\t\t\t\t\t}") + ((i < e->get().argument_names.size() - 1) ? "," : "") + "\n"); - } - source.push_back("\t\t\t\t]\n"); - source.push_back(String("\t\t\t}") + (e->next() ? "," : "") + "\n"); - } - source.push_back("\t\t],\n"); - - source.push_back("\t\t\"enums\": [\n"); - for (List<EnumAPI>::Element *e = api.enums.front(); e; e = e->next()) { - source.push_back("\t\t\t{\n"); - source.push_back("\t\t\t\t\"name\": \"" + e->get().name + "\",\n"); - source.push_back("\t\t\t\t\"values\": {\n"); - for (List<Pair<int, String>>::Element *val_e = e->get().values.front(); val_e; val_e = val_e->next()) { - source.push_back("\t\t\t\t\t\"" + val_e->get().second + "\": " + itos(val_e->get().first)); - source.push_back(String((val_e->next() ? "," : "")) + "\n"); - } - source.push_back("\t\t\t\t}\n"); - source.push_back(String("\t\t\t}") + (e->next() ? "," : "") + "\n"); - } - source.push_back("\t\t]\n"); - - source.push_back(String("\t}") + (c->next() ? "," : "") + "\n"); - } - source.push_back("]"); - - return source; -} - -static int indent_level = 0; - -static void append_indented(StringBuilder &p_source, const String &p_text) { - for (int i = 0; i < indent_level; i++) { - p_source.append("\t"); - } - p_source.append(p_text); - p_source.append("\n"); -} - -static void append_indented(StringBuilder &p_source, const char *p_text) { - for (int i = 0; i < indent_level; i++) { - p_source.append("\t"); - } - p_source.append(p_text); - p_source.append("\n"); -} - -static void write_builtin_method(StringBuilder &p_source, const MethodAPI &p_method) { - VariantWriter writer; - - append_indented(p_source, vformat(R"("name": "%s",)", p_method.method_name)); - append_indented(p_source, vformat(R"("return_type": "%s",)", p_method.return_type)); - append_indented(p_source, vformat(R"("is_const": %s,)", p_method.is_const ? "true" : "false")); - append_indented(p_source, vformat(R"("is_static": %s,)", p_method.is_static ? "true" : "false")); - append_indented(p_source, vformat(R"("has_varargs": %s,)", p_method.has_varargs ? "true" : "false")); - - append_indented(p_source, R"("arguments": [)"); - indent_level++; - for (int i = 0; i < p_method.argument_count; i++) { - append_indented(p_source, "{"); - indent_level++; - - append_indented(p_source, vformat(R"("name": "%s",)", p_method.argument_names[i])); - append_indented(p_source, vformat(R"("type": "%s",)", p_method.argument_types[i])); - append_indented(p_source, vformat(R"("has_default_value": %s,)", p_method.default_arguments.has(i) ? "true" : "false")); - String default_value; - if (p_method.default_arguments.has(i)) { - writer.write_to_string(p_method.default_arguments[i], default_value); - default_value = default_value.replace("\n", "").json_escape(); - } - append_indented(p_source, vformat(R"("default_value": "%s")", default_value)); - - indent_level--; - append_indented(p_source, i < p_method.argument_count - 1 ? "}," : "}"); - } - indent_level--; - append_indented(p_source, "]"); -} - -static List<String> generate_c_builtin_api_json(const List<ClassAPI> &p_api) { - StringBuilder source; - - source.append("[\n"); - - indent_level = 1; - - for (const List<ClassAPI>::Element *C = p_api.front(); C; C = C->next()) { - const ClassAPI &class_api = C->get(); - append_indented(source, "{"); - indent_level++; - - append_indented(source, vformat(R"("name": "%s",)", class_api.class_name)); - append_indented(source, vformat(R"("is_instantiable": %s,)", class_api.is_instantiable ? "true" : "false")); - append_indented(source, vformat(R"("is_ref_counted": %s,)", class_api.is_ref_counted ? "true" : "false")); - append_indented(source, vformat(R"("has_indexing": %s,)", class_api.has_indexing ? "true" : "false")); - append_indented(source, vformat(R"("indexed_type": "%s",)", class_api.has_indexing && class_api.indexed_type == "Nil" ? "Variant" : class_api.indexed_type)); - append_indented(source, vformat(R"("is_keyed": %s,)", class_api.is_keyed ? "true" : "false")); - - // Constructors. - append_indented(source, R"("constructors": [)"); - indent_level++; - for (const List<MethodAPI>::Element *E = class_api.constructors.front(); E; E = E->next()) { - const MethodAPI &constructor = E->get(); - append_indented(source, "{"); - indent_level++; - - write_builtin_method(source, constructor); - - indent_level--; - append_indented(source, E->next() ? "}," : "}"); - } - indent_level--; - append_indented(source, "],"); - - // Constants. - append_indented(source, R"("constants": [)"); - indent_level++; - for (const List<ConstantAPI>::Element *E = class_api.constants.front(); E; E = E->next()) { - const ConstantAPI &constant = E->get(); - append_indented(source, "{"); - indent_level++; - - append_indented(source, vformat(R"("name": "%s",)", constant.constant_name)); - append_indented(source, vformat(R"("type": "%s",)", constant.builtin_constant_type)); - append_indented(source, vformat(R"("value": "%s")", constant.builtin_constant_value.operator String())); - - indent_level--; - append_indented(source, E->next() ? "}," : "}"); - } - indent_level--; - append_indented(source, "],"); - - // Methods. - append_indented(source, R"("methods": [)"); - indent_level++; - for (const List<MethodAPI>::Element *E = class_api.methods.front(); E; E = E->next()) { - const MethodAPI &method = E->get(); - append_indented(source, "{"); - indent_level++; - - write_builtin_method(source, method); - - indent_level--; - append_indented(source, E->next() ? "}," : "}"); - } - indent_level--; - append_indented(source, "],"); - - // Members. - append_indented(source, R"("members": [)"); - indent_level++; - for (const List<PropertyAPI>::Element *E = class_api.properties.front(); E; E = E->next()) { - const PropertyAPI &member = E->get(); - append_indented(source, "{"); - indent_level++; - - append_indented(source, vformat(R"("name": "%s",)", member.name)); - append_indented(source, vformat(R"("type": "%s")", member.type)); - - indent_level--; - append_indented(source, E->next() ? "}," : "}"); - } - indent_level--; - append_indented(source, "],"); - - // Operators. - append_indented(source, R"("operators": [)"); - indent_level++; - for (const List<OperatorAPI>::Element *E = class_api.operators.front(); E; E = E->next()) { - const OperatorAPI &oper = E->get(); - append_indented(source, "{"); - indent_level++; - - append_indented(source, vformat(R"("name": "%s",)", oper.name)); - append_indented(source, vformat(R"("operator": %d,)", oper.oper)); - append_indented(source, vformat(R"("other_type": "%s",)", oper.other_type)); - append_indented(source, vformat(R"("return_type": "%s")", oper.return_type)); - - indent_level--; - append_indented(source, E->next() ? "}," : "}"); - } - indent_level--; - append_indented(source, "]"); - - indent_level--; - append_indented(source, C->next() ? "}," : "}"); - } - - indent_level--; - source.append("]\n"); - - List<String> result; - result.push_back(source.as_string()); - return result; -} - -#endif - -/* - * Saves the whole Godot API to a JSON file located at - * p_path - */ -Error generate_c_api(const String &p_path) { -#ifndef TOOLS_ENABLED - return ERR_BUG; -#else - - List<ClassAPI> api = generate_c_api_classes(); - - List<String> json_source = generate_c_api_json(api); - - return save_file(p_path, json_source); -#endif -} -/* - * Saves the builtin Godot API to a JSON file located at - * p_path - */ -Error generate_c_builtin_api(const String &p_path) { -#ifndef TOOLS_ENABLED - return ERR_BUG; -#else - - List<ClassAPI> api = generate_c_builtin_api_types(); - - List<String> json_source = generate_c_builtin_api_json(api); - - return save_file(p_path, json_source); -#endif -} diff --git a/modules/gdnative/nativescript/api_generator.h b/modules/gdnative/nativescript/api_generator.h deleted file mode 100644 index 58e141f07e..0000000000 --- a/modules/gdnative/nativescript/api_generator.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************/ -/* api_generator.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef API_GENERATOR_H -#define API_GENERATOR_H - -#include "core/string/ustring.h" -#include "core/typedefs.h" - -Error generate_c_api(const String &p_path); -Error generate_c_builtin_api(const String &p_path); - -#endif // API_GENERATOR_H diff --git a/modules/gdnative/nativescript/godot_nativescript.cpp b/modules/gdnative/nativescript/godot_nativescript.cpp deleted file mode 100644 index 992eeba8f4..0000000000 --- a/modules/gdnative/nativescript/godot_nativescript.cpp +++ /dev/null @@ -1,344 +0,0 @@ -/*************************************************************************/ -/* godot_nativescript.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "nativescript/godot_nativescript.h" - -#include "core/config/project_settings.h" -#include "core/core_constants.h" -#include "core/error/error_macros.h" -#include "core/object/class_db.h" -#include "core/variant/variant.h" -#include "gdnative/gdnative.h" -#include <stdint.h> - -#include "nativescript.h" - -#ifdef __cplusplus -extern "C" { -#endif - -extern "C" void _native_script_hook() { -} - -#define NSL NativeScriptLanguage::get_singleton() - -// Script API - -void GDAPI godot_nativescript_register_class(void *p_gdnative_handle, const char *p_name, const char *p_base, godot_nativescript_instance_create_func p_create_func, godot_nativescript_instance_destroy_func p_destroy_func) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc> *classes = &NSL->library_classes[*s]; - - NativeScriptDesc desc; - - desc.create_func = p_create_func; - desc.destroy_func = p_destroy_func; - desc.is_tool = false; - - desc.base = p_base; - - if (classes->has(p_base)) { - desc.base_data = &(*classes)[p_base]; - desc.base_native_type = desc.base_data->base_native_type; - - const NativeScriptDesc *b = desc.base_data; - while (b) { - desc.rpc_methods.append_array(b->rpc_methods); - b = b->base_data; - } - - } else { - desc.base_data = nullptr; - desc.base_native_type = p_base; - } - - classes->insert(p_name, desc); -} - -void GDAPI godot_nativescript_register_tool_class(void *p_gdnative_handle, const char *p_name, const char *p_base, godot_nativescript_instance_create_func p_create_func, godot_nativescript_instance_destroy_func p_destroy_func) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc> *classes = &NSL->library_classes[*s]; - - NativeScriptDesc desc; - - desc.create_func = p_create_func; - desc.destroy_func = p_destroy_func; - desc.is_tool = true; - desc.base = p_base; - - if (classes->has(p_base)) { - desc.base_data = &(*classes)[p_base]; - desc.base_native_type = desc.base_data->base_native_type; - - const NativeScriptDesc *b = desc.base_data; - while (b) { - desc.rpc_methods.append_array(b->rpc_methods); - b = b->base_data; - } - - } else { - desc.base_data = nullptr; - desc.base_native_type = p_base; - } - - classes->insert(p_name, desc); -} - -void GDAPI godot_nativescript_register_method(void *p_gdnative_handle, const char *p_name, const char *p_function_name, godot_nativescript_method_attributes p_attr, godot_nativescript_instance_method p_method) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to register method on non-existent class."); - - NativeScriptDesc::Method method; - method.method = p_method; - method.rpc_mode = p_attr.rpc_type; - method.rpc_method_id = UINT16_MAX; - method.info = MethodInfo(p_function_name); - - E->get().methods.insert(p_function_name, method); - - if (p_attr.rpc_type != GODOT_METHOD_RPC_MODE_DISABLED) { - Multiplayer::RPCConfig nd; - nd.name = String(p_name); - nd.rpc_mode = Multiplayer::RPCMode(p_attr.rpc_type); - E->get().rpc_methods.push_back(nd); - } -} - -void GDAPI godot_nativescript_register_property(void *p_gdnative_handle, const char *p_name, const char *p_path, godot_nativescript_property_attributes *p_attr, godot_nativescript_property_set_func p_set_func, godot_nativescript_property_get_func p_get_func) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to register method on non-existent class."); - - NativeScriptDesc::Property property; - property.default_value = *(Variant *)&p_attr->default_value; - property.getter = p_get_func; - property.setter = p_set_func; - property.info = PropertyInfo((Variant::Type)p_attr->type, - p_path, - (PropertyHint)p_attr->hint, - *(String *)&p_attr->hint_string, - (PropertyUsageFlags)p_attr->usage); - - E->get().properties.insert(p_path, property); -} - -void GDAPI godot_nativescript_register_signal(void *p_gdnative_handle, const char *p_name, const godot_nativescript_signal *p_signal) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to register method on non-existent class."); - - List<PropertyInfo> args; - Vector<Variant> default_args; - - for (int i = 0; i < p_signal->num_args; i++) { - PropertyInfo info; - - godot_nativescript_signal_argument arg = p_signal->args[i]; - - info.hint = (PropertyHint)arg.hint; - info.hint_string = *(String *)&arg.hint_string; - info.name = *(String *)&arg.name; - info.type = (Variant::Type)arg.type; - info.usage = (PropertyUsageFlags)arg.usage; - - args.push_back(info); - } - - for (int i = 0; i < p_signal->num_default_args; i++) { - Variant *v; - godot_nativescript_signal_argument attrib = p_signal->args[i]; - - v = (Variant *)&attrib.default_value; - - default_args.push_back(*v); - } - - MethodInfo method_info; - method_info.name = *(String *)&p_signal->name; - method_info.arguments = args; - method_info.default_arguments = default_args; - - NativeScriptDesc::Signal signal; - signal.signal = method_info; - - E->get().signals_.insert(*(String *)&p_signal->name, signal); -} - -void GDAPI *godot_nativescript_get_userdata(godot_object *p_instance) { - Object *instance = (Object *)p_instance; - if (!instance) { - return nullptr; - } - if (instance->get_script_instance() && instance->get_script_instance()->get_language() == NativeScriptLanguage::get_singleton()) { - return ((NativeScriptInstance *)instance->get_script_instance())->userdata; - } - return nullptr; -} - -/* - * - * - * NativeScript 1.1 - * - * - */ - -void GDAPI godot_nativescript_set_method_argument_information(void *p_gdnative_handle, const char *p_name, const char *p_function_name, int p_num_args, const godot_nativescript_method_argument *p_args) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to add argument information for a method on a non-existent class."); - - Map<StringName, NativeScriptDesc::Method>::Element *method = E->get().methods.find(p_function_name); - ERR_FAIL_COND_MSG(!method, "Attempted to add argument information to non-existent method."); - - MethodInfo *method_information = &method->get().info; - - List<PropertyInfo> args; - - for (int i = 0; i < p_num_args; i++) { - godot_nativescript_method_argument arg = p_args[i]; - String name = *(String *)&arg.name; - String hint_string = *(String *)&arg.hint_string; - - Variant::Type type = (Variant::Type)arg.type; - PropertyHint hint = (PropertyHint)arg.hint; - - args.push_back(PropertyInfo(type, p_name, hint, hint_string)); - } - - method_information->arguments = args; -} - -void GDAPI godot_nativescript_set_class_documentation(void *p_gdnative_handle, const char *p_name, godot_string p_documentation) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to add documentation to a non-existent class."); - - E->get().documentation = *(String *)&p_documentation; -} - -void GDAPI godot_nativescript_set_method_documentation(void *p_gdnative_handle, const char *p_name, const char *p_function_name, godot_string p_documentation) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to add documentation to a method on a non-existent class."); - - Map<StringName, NativeScriptDesc::Method>::Element *method = E->get().methods.find(p_function_name); - ERR_FAIL_COND_MSG(!method, "Attempted to add documentation to non-existent method."); - - method->get().documentation = *(String *)&p_documentation; -} - -void GDAPI godot_nativescript_set_property_documentation(void *p_gdnative_handle, const char *p_name, const char *p_path, godot_string p_documentation) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to add documentation to a property on a non-existent class."); - - OrderedHashMap<StringName, NativeScriptDesc::Property>::Element property = E->get().properties.find(p_path); - ERR_FAIL_COND_MSG(!property, "Attempted to add documentation to non-existent property."); - - property.get().documentation = *(String *)&p_documentation; -} - -void GDAPI godot_nativescript_set_signal_documentation(void *p_gdnative_handle, const char *p_name, const char *p_signal_name, godot_string p_documentation) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to add documentation to a signal on a non-existent class."); - - Map<StringName, NativeScriptDesc::Signal>::Element *signal = E->get().signals_.find(p_signal_name); - ERR_FAIL_COND_MSG(!signal, "Attempted to add documentation to non-existent signal."); - - signal->get().documentation = *(String *)&p_documentation; -} - -void GDAPI godot_nativescript_set_global_type_tag(int p_idx, const char *p_name, const void *p_type_tag) { - NativeScriptLanguage::get_singleton()->set_global_type_tag(p_idx, StringName(p_name), p_type_tag); -} - -const void GDAPI *godot_nativescript_get_global_type_tag(int p_idx, const char *p_name) { - return NativeScriptLanguage::get_singleton()->get_global_type_tag(p_idx, StringName(p_name)); -} - -void GDAPI godot_nativescript_set_type_tag(void *p_gdnative_handle, const char *p_name, const void *p_type_tag) { - String *s = (String *)p_gdnative_handle; - - Map<StringName, NativeScriptDesc>::Element *E = NSL->library_classes[*s].find(p_name); - ERR_FAIL_COND_MSG(!E, "Attempted to set type tag on a non-existent class."); - - E->get().type_tag = p_type_tag; -} - -const void GDAPI *godot_nativescript_get_type_tag(const godot_object *p_object) { - const Object *o = (Object *)p_object; - - if (!o->get_script_instance()) { - return nullptr; - } else { - NativeScript *script = Object::cast_to<NativeScript>(o->get_script_instance()->get_script().ptr()); - if (!script) { - return nullptr; - } - - if (script->get_script_desc()) { - return script->get_script_desc()->type_tag; - } - } - - return nullptr; -} - -int GDAPI godot_nativescript_register_instance_binding_data_functions(godot_nativescript_instance_binding_functions p_binding_functions) { - return NativeScriptLanguage::get_singleton()->register_binding_functions(p_binding_functions); -} - -void GDAPI godot_nativescript_unregister_instance_binding_data_functions(int p_idx) { - NativeScriptLanguage::get_singleton()->unregister_binding_functions(p_idx); -} - -void GDAPI *godot_nativescript_get_instance_binding_data(int p_idx, godot_object *p_object) { - return nullptr; -} - -void GDAPI godot_nativescript_profiling_add_data(const char *p_signature, uint64_t p_time) { - NativeScriptLanguage::get_singleton()->profiling_add_data(StringName(p_signature), p_time); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp deleted file mode 100644 index 95976a8827..0000000000 --- a/modules/gdnative/nativescript/nativescript.cpp +++ /dev/null @@ -1,1777 +0,0 @@ -/*************************************************************************/ -/* nativescript.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "nativescript.h" - -#include <stdint.h> - -#include "gdnative/gdnative.h" - -#include "core/config/project_settings.h" -#include "core/core_constants.h" -#include "core/core_string_names.h" -#include "core/io/file_access.h" -#include "core/io/file_access_encrypted.h" -#include "core/os/os.h" - -#include "main/main.h" - -#include "scene/main/scene_tree.h" -#include "scene/resources/resource_format_text.h" - -#include <stdlib.h> - -#ifndef NO_THREADS -#include "core/os/thread.h" -#endif - -#if defined(TOOLS_ENABLED) && defined(DEBUG_METHODS_ENABLED) -#include "api_generator.h" -#endif - -#ifdef TOOLS_ENABLED -#include "editor/editor_node.h" -#endif - -void NativeScript::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_class_name", "class_name"), &NativeScript::set_class_name); - ClassDB::bind_method(D_METHOD("get_class_name"), &NativeScript::get_class_name); - - ClassDB::bind_method(D_METHOD("set_library", "library"), &NativeScript::set_library); - ClassDB::bind_method(D_METHOD("get_library"), &NativeScript::get_library); - - ClassDB::bind_method(D_METHOD("set_script_class_name", "class_name"), &NativeScript::set_script_class_name); - ClassDB::bind_method(D_METHOD("get_script_class_name"), &NativeScript::get_script_class_name); - ClassDB::bind_method(D_METHOD("set_script_class_icon_path", "icon_path"), &NativeScript::set_script_class_icon_path); - ClassDB::bind_method(D_METHOD("get_script_class_icon_path"), &NativeScript::get_script_class_icon_path); - - ClassDB::bind_method(D_METHOD("get_class_documentation"), &NativeScript::get_class_documentation); - ClassDB::bind_method(D_METHOD("get_method_documentation", "method"), &NativeScript::get_method_documentation); - ClassDB::bind_method(D_METHOD("get_signal_documentation", "signal_name"), &NativeScript::get_signal_documentation); - ClassDB::bind_method(D_METHOD("get_property_documentation", "path"), &NativeScript::get_property_documentation); - - ADD_PROPERTY(PropertyInfo(Variant::STRING, "class_name"), "set_class_name", "get_class_name"); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "library", PROPERTY_HINT_RESOURCE_TYPE, "GDNativeLibrary"), "set_library", "get_library"); - ADD_GROUP("Script Class", "script_class_"); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "script_class_name"), "set_script_class_name", "get_script_class_name"); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "script_class_icon_path", PROPERTY_HINT_FILE), "set_script_class_icon_path", "get_script_class_icon_path"); - - ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "new", &NativeScript::_new, MethodInfo("new")); -} - -#define NSL NativeScriptLanguage::get_singleton() - -#ifdef TOOLS_ENABLED - -void NativeScript::_update_placeholder(PlaceHolderScriptInstance *p_placeholder) { - NativeScriptDesc *script_data = get_script_desc(); - - ERR_FAIL_COND(!script_data); - - List<PropertyInfo> info; - get_script_property_list(&info); - Map<StringName, Variant> values; - for (const PropertyInfo &E : info) { - Variant value; - get_property_default_value(E.name, value); - values[E.name] = value; - } - - p_placeholder->update(info, values); -} - -void NativeScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) { - placeholders.erase(p_placeholder); -} - -#endif - -bool NativeScript::inherits_script(const Ref<Script> &p_script) const { - Ref<NativeScript> ns = p_script; - if (ns.is_null()) { - return false; - } - - const NativeScriptDesc *other_s = ns->get_script_desc(); - if (!other_s) { - return false; - } - - const NativeScriptDesc *s = get_script_desc(); - - while (s) { - if (s == other_s) { - return true; - } - s = s->base_data; - } - - return false; -} - -void NativeScript::set_class_name(String p_class_name) { - class_name = p_class_name; -} - -String NativeScript::get_class_name() const { - return class_name; -} - -void NativeScript::set_library(Ref<GDNativeLibrary> p_library) { - if (!library.is_null()) { - WARN_PRINT("Library in NativeScript already set. Do nothing."); - return; - } - if (p_library.is_null()) { - return; - } - library = p_library; - lib_path = library->get_current_library_path(); - -#ifndef NO_THREADS - if (Thread::get_caller_id() != Thread::get_main_id()) { - NSL->defer_init_library(p_library, this); - } else -#endif - { - NSL->init_library(p_library); - NSL->register_script(this); - } -} - -Ref<GDNativeLibrary> NativeScript::get_library() const { - return library; -} - -void NativeScript::set_script_class_name(String p_type) { - script_class_name = p_type; -} - -String NativeScript::get_script_class_name() const { - return script_class_name; -} - -void NativeScript::set_script_class_icon_path(String p_icon_path) { - script_class_icon_path = p_icon_path; -} - -String NativeScript::get_script_class_icon_path() const { - return script_class_icon_path; -} - -bool NativeScript::can_instantiate() const { - NativeScriptDesc *script_data = get_script_desc(); - -#ifdef TOOLS_ENABLED - // Only valid if this is either a tool script or a "regular" script. - // (so, an environment where scripting is disabled (and not the editor) would not - // create objects). - return script_data && (is_tool() || ScriptServer::is_scripting_enabled()); -#else - return script_data; -#endif -} - -Ref<Script> NativeScript::get_base_script() const { - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - return Ref<Script>(); - } - - NativeScript *script = (NativeScript *)NSL->create_script(); - Ref<NativeScript> ns = Ref<NativeScript>(script); - ERR_FAIL_COND_V(!ns.is_valid(), Ref<Script>()); - - ns->set_class_name(script_data->base); - ns->set_library(get_library()); - return ns; -} - -StringName NativeScript::get_instance_base_type() const { - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - return ""; - } - - return script_data->base_native_type; -} - -ScriptInstance *NativeScript::instance_create(Object *p_this) { - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - return nullptr; - } - - NativeScriptInstance *nsi = memnew(NativeScriptInstance); - - nsi->owner = p_this; - nsi->script = Ref<NativeScript>(this); - -#ifndef TOOLS_ENABLED - if (!ScriptServer::is_scripting_enabled()) { - nsi->userdata = nullptr; - } else { - nsi->userdata = script_data->create_func.create_func((godot_object *)p_this, script_data->create_func.method_data); - } -#else - nsi->userdata = script_data->create_func.create_func((godot_object *)p_this, script_data->create_func.method_data); -#endif - - { - MutexLock lock(owners_lock); - - instance_owners.insert(p_this); - } - - return nsi; -} - -PlaceHolderScriptInstance *NativeScript::placeholder_instance_create(Object *p_this) { -#ifdef TOOLS_ENABLED - PlaceHolderScriptInstance *sins = memnew(PlaceHolderScriptInstance(NSL, Ref<Script>(this), p_this)); - placeholders.insert(sins); - - _update_placeholder(sins); - - return sins; -#else - return nullptr; -#endif -} - -bool NativeScript::instance_has(const Object *p_this) const { - return instance_owners.has((Object *)p_this); -} - -bool NativeScript::has_source_code() const { - return false; -} - -String NativeScript::get_source_code() const { - return ""; -} - -void NativeScript::set_source_code(const String &p_code) { -} - -Error NativeScript::reload(bool p_keep_state) { - return FAILED; -} - -bool NativeScript::has_method(const StringName &p_method) const { - NativeScriptDesc *script_data = get_script_desc(); - - while (script_data) { - if (script_data->methods.has(p_method)) { - return true; - } - - script_data = script_data->base_data; - } - return false; -} - -MethodInfo NativeScript::get_method_info(const StringName &p_method) const { - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - return MethodInfo(); - } - - while (script_data) { - Map<StringName, NativeScriptDesc::Method>::Element *M = script_data->methods.find(p_method); - - if (M) { - return M->get().info; - } - - script_data = script_data->base_data; - } - return MethodInfo(); -} - -bool NativeScript::is_valid() const { - return true; -} - -bool NativeScript::is_tool() const { - NativeScriptDesc *script_data = get_script_desc(); - - if (script_data) { - return script_data->is_tool; - } - - return false; -} - -ScriptLanguage *NativeScript::get_language() const { - return NativeScriptLanguage::get_singleton(); -} - -bool NativeScript::has_script_signal(const StringName &p_signal) const { - NativeScriptDesc *script_data = get_script_desc(); - - while (script_data) { - if (script_data->signals_.has(p_signal)) { - return true; - } - script_data = script_data->base_data; - } - return false; -} - -void NativeScript::get_script_signal_list(List<MethodInfo> *r_signals) const { - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - return; - } - - Set<MethodInfo> signals_; - - while (script_data) { - for (const KeyValue<StringName, NativeScriptDesc::Signal> &S : script_data->signals_) { - signals_.insert(S.value.signal); - } - - script_data = script_data->base_data; - } - - for (Set<MethodInfo>::Element *E = signals_.front(); E; E = E->next()) { - r_signals->push_back(E->get()); - } -} - -bool NativeScript::get_property_default_value(const StringName &p_property, Variant &r_value) const { - NativeScriptDesc *script_data = get_script_desc(); - - OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P; - while (!P && script_data) { - P = script_data->properties.find(p_property); - script_data = script_data->base_data; - } - if (!P) { - return false; - } - - r_value = P.get().default_value; - return true; -} - -void NativeScript::update_exports() { -} - -void NativeScript::get_script_method_list(List<MethodInfo> *p_list) const { - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - return; - } - - Set<MethodInfo> methods; - - while (script_data) { - for (const KeyValue<StringName, NativeScriptDesc::Method> &E : script_data->methods) { - methods.insert(E.value.info); - } - - script_data = script_data->base_data; - } - - for (Set<MethodInfo>::Element *E = methods.front(); E; E = E->next()) { - p_list->push_back(E->get()); - } -} - -void NativeScript::get_script_property_list(List<PropertyInfo> *p_list) const { - NativeScriptDesc *script_data = get_script_desc(); - - Set<StringName> existing_properties; - List<PropertyInfo>::Element *original_back = p_list->back(); - while (script_data) { - List<PropertyInfo>::Element *insert_position = original_back; - - for (OrderedHashMap<StringName, NativeScriptDesc::Property>::Element E = script_data->properties.front(); E; E = E.next()) { - if (!existing_properties.has(E.key())) { - insert_position = p_list->insert_after(insert_position, E.get().info); - existing_properties.insert(E.key()); - } - } - script_data = script_data->base_data; - } -} - -const Vector<Multiplayer::RPCConfig> NativeScript::get_rpc_methods() const { - NativeScriptDesc *script_data = get_script_desc(); - ERR_FAIL_COND_V(!script_data, Vector<Multiplayer::RPCConfig>()); - - return script_data->rpc_methods; -} - -String NativeScript::get_class_documentation() const { - NativeScriptDesc *script_data = get_script_desc(); - - ERR_FAIL_COND_V_MSG(!script_data, "", "Attempt to get class documentation on invalid NativeScript."); - - return script_data->documentation; -} - -String NativeScript::get_method_documentation(const StringName &p_method) const { - NativeScriptDesc *script_data = get_script_desc(); - - ERR_FAIL_COND_V_MSG(!script_data, "", "Attempt to get method documentation on invalid NativeScript."); - - while (script_data) { - Map<StringName, NativeScriptDesc::Method>::Element *method = script_data->methods.find(p_method); - - if (method) { - return method->get().documentation; - } - - script_data = script_data->base_data; - } - - ERR_FAIL_V_MSG("", "Attempt to get method documentation for non-existent method."); -} - -String NativeScript::get_signal_documentation(const StringName &p_signal_name) const { - NativeScriptDesc *script_data = get_script_desc(); - - ERR_FAIL_COND_V_MSG(!script_data, "", "Attempt to get signal documentation on invalid NativeScript."); - - while (script_data) { - Map<StringName, NativeScriptDesc::Signal>::Element *signal = script_data->signals_.find(p_signal_name); - - if (signal) { - return signal->get().documentation; - } - - script_data = script_data->base_data; - } - - ERR_FAIL_V_MSG("", "Attempt to get signal documentation for non-existent signal."); -} - -String NativeScript::get_property_documentation(const StringName &p_path) const { - NativeScriptDesc *script_data = get_script_desc(); - - ERR_FAIL_COND_V_MSG(!script_data, "", "Attempt to get property documentation on invalid NativeScript."); - - while (script_data) { - OrderedHashMap<StringName, NativeScriptDesc::Property>::Element property = script_data->properties.find(p_path); - - if (property) { - return property.get().documentation; - } - - script_data = script_data->base_data; - } - - ERR_FAIL_V_MSG("", "Attempt to get property documentation for non-existent signal."); -} - -Variant NativeScript::_new(const Variant **p_args, int p_argcount, Callable::CallError &r_error) { - if (lib_path.is_empty() || class_name.is_empty() || library.is_null()) { - r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL; - return Variant(); - } - - NativeScriptDesc *script_data = get_script_desc(); - - if (!script_data) { - r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL; - return Variant(); - } - - r_error.error = Callable::CallError::CALL_OK; - - REF ref; - Object *owner = nullptr; - - if (!(script_data->base_native_type == "")) { - owner = ClassDB::instantiate(script_data->base_native_type); - } else { - owner = memnew(RefCounted); - } - - if (!owner) { - r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL; - return Variant(); - } - - RefCounted *r = Object::cast_to<RefCounted>(owner); - if (r) { - ref = REF(r); - } - - NativeScriptInstance *instance = (NativeScriptInstance *)instance_create(owner); - - owner->set_script_instance(instance); - - if (!instance) { - if (ref.is_null()) { - memdelete(owner); //no owner, sorry - } - return Variant(); - } - - if (ref.is_valid()) { - return ref; - } else { - return owner; - } -} - -NativeScript::NativeScript() { - library = Ref<GDNative>(); - lib_path = ""; - class_name = ""; -} - -NativeScript::~NativeScript() { - NSL->unregister_script(this); -} - -#define GET_SCRIPT_DESC() script->get_script_desc() - -void NativeScriptInstance::_ml_call_reversed(NativeScriptDesc *script_data, const StringName &p_method, const Variant **p_args, int p_argcount) { - if (script_data->base_data) { - _ml_call_reversed(script_data->base_data, p_method, p_args, p_argcount); - } - - Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find(p_method); - if (E) { - godot_variant res = E->get().method.method((godot_object *)owner, E->get().method.method_data, userdata, p_argcount, (godot_variant **)p_args); - godot_variant_destroy(&res); - } -} - -bool NativeScriptInstance::set(const StringName &p_name, const Variant &p_value) { - NativeScriptDesc *script_data = GET_SCRIPT_DESC(); - - while (script_data) { - OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = script_data->properties.find(p_name); - if (P) { - P.get().setter.set_func((godot_object *)owner, - P.get().setter.method_data, - userdata, - (godot_variant *)&p_value); - return true; - } - - Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find("_set"); - if (E) { - Variant name = p_name; - const Variant *args[2] = { &name, &p_value }; - - godot_variant result; - result = E->get().method.method((godot_object *)owner, - E->get().method.method_data, - userdata, - 2, - (godot_variant **)args); - bool handled = *(Variant *)&result; - godot_variant_destroy(&result); - if (handled) { - return true; - } - } - - script_data = script_data->base_data; - } - return false; -} - -bool NativeScriptInstance::get(const StringName &p_name, Variant &r_ret) const { - NativeScriptDesc *script_data = GET_SCRIPT_DESC(); - - while (script_data) { - OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = script_data->properties.find(p_name); - if (P) { - godot_variant value; - value = P.get().getter.get_func((godot_object *)owner, - P.get().getter.method_data, - userdata); - r_ret = *(Variant *)&value; - godot_variant_destroy(&value); - return true; - } - - Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find("_get"); - if (E) { - Variant name = p_name; - const Variant *args[1] = { &name }; - - godot_variant result; - result = E->get().method.method((godot_object *)owner, - E->get().method.method_data, - userdata, - 1, - (godot_variant **)args); - r_ret = *(Variant *)&result; - godot_variant_destroy(&result); - if (r_ret.get_type() != Variant::NIL) { - return true; - } - } - - script_data = script_data->base_data; - } - return false; -} - -void NativeScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const { - script->get_script_property_list(p_properties); - - NativeScriptDesc *script_data = GET_SCRIPT_DESC(); - - while (script_data) { - Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find("_get_property_list"); - if (E) { - godot_variant result; - result = E->get().method.method((godot_object *)owner, - E->get().method.method_data, - userdata, - 0, - nullptr); - Variant res = *(Variant *)&result; - godot_variant_destroy(&result); - - ERR_FAIL_COND_MSG(res.get_type() != Variant::ARRAY, "_get_property_list must return an array of dictionaries."); - - Array arr = res; - for (int i = 0; i < arr.size(); i++) { - Dictionary d = arr[i]; - - ERR_CONTINUE(!d.has("name")); - ERR_CONTINUE(!d.has("type")); - - PropertyInfo info; - - info.type = Variant::Type(d["type"].operator int64_t()); - ERR_CONTINUE(info.type < 0 || info.type >= Variant::VARIANT_MAX); - - info.name = d["name"]; - ERR_CONTINUE(info.name.is_empty()); - - if (d.has("hint")) { - info.hint = PropertyHint(d["hint"].operator int64_t()); - } - - if (d.has("hint_string")) { - info.hint_string = d["hint_string"]; - } - - if (d.has("usage")) { - info.usage = d["usage"]; - } - - p_properties->push_back(info); - } - } - - script_data = script_data->base_data; - } - return; -} - -Variant::Type NativeScriptInstance::get_property_type(const StringName &p_name, bool *r_is_valid) const { - NativeScriptDesc *script_data = GET_SCRIPT_DESC(); - - while (script_data) { - OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = script_data->properties.find(p_name); - if (P) { - *r_is_valid = true; - return P.get().info.type; - } - - script_data = script_data->base_data; - } - return Variant::NIL; -} - -void NativeScriptInstance::get_method_list(List<MethodInfo> *p_list) const { - script->get_script_method_list(p_list); -} - -bool NativeScriptInstance::has_method(const StringName &p_method) const { - return script->has_method(p_method); -} - -Variant NativeScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { - NativeScriptDesc *script_data = GET_SCRIPT_DESC(); - - while (script_data) { - Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find(p_method); - if (E) { - godot_variant result; - -#ifdef DEBUG_ENABLED - current_method_call = p_method; -#endif - - result = E->get().method.method((godot_object *)owner, - E->get().method.method_data, - userdata, - p_argcount, - (godot_variant **)p_args); - -#ifdef DEBUG_ENABLED - current_method_call = ""; -#endif - - Variant res = *(Variant *)&result; - godot_variant_destroy(&result); - r_error.error = Callable::CallError::CALL_OK; - return res; - } - - script_data = script_data->base_data; - } - - r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; - return Variant(); -} - -void NativeScriptInstance::notification(int p_what) { -#ifdef DEBUG_ENABLED - switch (p_what) { - case MainLoop::NOTIFICATION_CRASH: { - if (current_method_call != StringName()) { - ERR_PRINT("NativeScriptInstance detected crash on method: " + current_method_call); - current_method_call = ""; - } - } break; - } -#endif - - Variant value = p_what; - const Variant *args[1] = { &value }; - Callable::CallError error; - call("_notification", args, 1, error); -} - -String NativeScriptInstance::to_string(bool *r_valid) { - if (has_method(CoreStringNames::get_singleton()->_to_string)) { - Callable::CallError ce; - Variant ret = call(CoreStringNames::get_singleton()->_to_string, nullptr, 0, ce); - if (ce.error == Callable::CallError::CALL_OK) { - if (ret.get_type() != Variant::STRING) { - if (r_valid) { - *r_valid = false; - } - ERR_FAIL_V_MSG(String(), "Wrong type for " + CoreStringNames::get_singleton()->_to_string + ", must be a String."); - } - if (r_valid) { - *r_valid = true; - } - return ret.operator String(); - } - } - if (r_valid) { - *r_valid = false; - } - return String(); -} - -void NativeScriptInstance::refcount_incremented() { - Callable::CallError err; - call("_refcount_incremented", nullptr, 0, err); - if (err.error != Callable::CallError::CALL_OK && err.error != Callable::CallError::CALL_ERROR_INVALID_METHOD) { - ERR_PRINT("Failed to invoke _refcount_incremented - should not happen"); - } -} - -bool NativeScriptInstance::refcount_decremented() { - Callable::CallError err; - Variant ret = call("_refcount_decremented", nullptr, 0, err); - if (err.error != Callable::CallError::CALL_OK && err.error != Callable::CallError::CALL_ERROR_INVALID_METHOD) { - ERR_PRINT("Failed to invoke _refcount_decremented - should not happen"); - return true; // assume we can destroy the object - } - if (err.error == Callable::CallError::CALL_ERROR_INVALID_METHOD) { - // the method does not exist, default is true - return true; - } - return ret; -} - -Ref<Script> NativeScriptInstance::get_script() const { - return script; -} - -const Vector<Multiplayer::RPCConfig> NativeScriptInstance::get_rpc_methods() const { - return script->get_rpc_methods(); -} - -ScriptLanguage *NativeScriptInstance::get_language() { - return NativeScriptLanguage::get_singleton(); -} - -NativeScriptInstance::~NativeScriptInstance() { - NativeScriptDesc *script_data = GET_SCRIPT_DESC(); - - if (!script_data) { - return; - } - - script_data->destroy_func.destroy_func((godot_object *)owner, script_data->destroy_func.method_data, userdata); - - if (owner) { - MutexLock lock(script->owners_lock); - - script->instance_owners.erase(owner); - } -} - -NativeScriptLanguage *NativeScriptLanguage::singleton; - -void NativeScriptLanguage::_unload_stuff(bool p_reload) { - Map<String, Ref<GDNative>> erase_and_unload; - - for (KeyValue<String, Map<StringName, NativeScriptDesc>> &L : library_classes) { - String lib_path = L.key; - Map<StringName, NativeScriptDesc> classes = L.value; - - if (p_reload) { - Map<String, Ref<GDNative>>::Element *E = library_gdnatives.find(lib_path); - Ref<GDNative> gdn; - - if (E) { - gdn = E->get(); - } - - bool should_reload = false; - - if (gdn.is_valid()) { - Ref<GDNativeLibrary> lib = gdn->get_library(); - if (lib.is_valid()) { - should_reload = lib->is_reloadable(); - } - } - - if (!should_reload) { - continue; - } - } - - Map<String, Ref<GDNative>>::Element *E = library_gdnatives.find(lib_path); - Ref<GDNative> gdn; - - if (E) { - gdn = E->get(); - } - - for (KeyValue<StringName, NativeScriptDesc> &C : classes) { - // free property stuff first - for (OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = C.value.properties.front(); P; P = P.next()) { - if (P.get().getter.free_func) { - P.get().getter.free_func(P.get().getter.method_data); - } - - if (P.get().setter.free_func) { - P.get().setter.free_func(P.get().setter.method_data); - } - } - - // free method stuff - for (const KeyValue<StringName, NativeScriptDesc::Method> &M : C.value.methods) { - if (M.value.method.free_func) { - M.value.method.free_func(M.value.method.method_data); - } - } - - // free constructor/destructor - if (C.value.create_func.free_func) { - C.value.create_func.free_func(C.value.create_func.method_data); - } - - if (C.value.destroy_func.free_func) { - C.value.destroy_func.free_func(C.value.destroy_func.method_data); - } - } - - erase_and_unload.insert(lib_path, gdn); - } - - for (KeyValue<String, Ref<GDNative>> &E : erase_and_unload) { - String lib_path = E.key; - Ref<GDNative> gdn = E.value; - - library_classes.erase(lib_path); - - if (gdn.is_valid() && gdn->get_library().is_valid()) { - Ref<GDNativeLibrary> lib = gdn->get_library(); - void *terminate_fn; - Error err = gdn->get_symbol(lib->get_symbol_prefix() + _terminate_call_name, terminate_fn, true); - - if (err == OK) { - void (*terminate)(void *) = (void (*)(void *))terminate_fn; - - terminate((void *)&lib_path); - } - } - } -} - -NativeScriptLanguage::NativeScriptLanguage() { - NativeScriptLanguage::singleton = this; - - _init_call_type = "nativescript_init"; - _init_call_name = "nativescript_init"; - _terminate_call_name = "nativescript_terminate"; - _noarg_call_type = "nativescript_no_arg"; - _frame_call_name = "nativescript_frame"; -#ifndef NO_THREADS - _thread_enter_call_name = "nativescript_thread_enter"; - _thread_exit_call_name = "nativescript_thread_exit"; -#endif -} - -NativeScriptLanguage::~NativeScriptLanguage() { - for (KeyValue<String, Ref<GDNative>> &L : NSL->library_gdnatives) { - Ref<GDNative> lib = L.value; - // only shut down valid libs, duh! - if (lib.is_valid()) { - // If it's a singleton-library then the gdnative module - // manages the destruction at engine shutdown, not NativeScript. - if (!lib->get_library()->is_singleton()) { - lib->terminate(); - } - } - } - - NSL->library_classes.clear(); - NSL->library_gdnatives.clear(); - NSL->library_script_users.clear(); -} - -String NativeScriptLanguage::get_name() const { - return "NativeScript"; -} - -void _add_reload_node() { -#ifdef TOOLS_ENABLED - NativeReloadNode *rn = memnew(NativeReloadNode); - EditorNode::get_singleton()->add_child(rn); -#endif -} - -void NativeScriptLanguage::init() { -#if defined(TOOLS_ENABLED) && defined(DEBUG_METHODS_ENABLED) - - List<String> args = OS::get_singleton()->get_cmdline_args(); - - List<String>::Element *E = args.find("--gdnative-generate-json-api"); - - if (E && E->next()) { - if (generate_c_api(E->next()->get()) != OK) { - ERR_PRINT("Failed to generate C API\n"); - } - Main::cleanup(true); - exit(0); - } - - E = args.find("--gdnative-generate-json-builtin-api"); - - if (E && E->next()) { - if (generate_c_builtin_api(E->next()->get()) != OK) { - ERR_PRINT("Failed to generate C builtin API\n"); - } - Main::cleanup(true); - exit(0); - } -#endif - -#ifdef TOOLS_ENABLED - EditorNode::add_init_callback(&_add_reload_node); -#endif -} - -String NativeScriptLanguage::get_type() const { - return "NativeScript"; -} - -String NativeScriptLanguage::get_extension() const { - return "gdns"; -} - -Error NativeScriptLanguage::execute_file(const String &p_path) { - return OK; // Qué? -} - -void NativeScriptLanguage::finish() { - _unload_stuff(); -} - -void NativeScriptLanguage::get_reserved_words(List<String> *p_words) const { -} - -bool NativeScriptLanguage::is_control_flow_keyword(String p_keyword) const { - return false; -} - -void NativeScriptLanguage::get_comment_delimiters(List<String> *p_delimiters) const { -} - -void NativeScriptLanguage::get_string_delimiters(List<String> *p_delimiters) const { -} - -Ref<Script> NativeScriptLanguage::get_template(const String &p_class_name, const String &p_base_class_name) const { - NativeScript *s = memnew(NativeScript); - s->set_class_name(p_class_name); - return Ref<NativeScript>(s); -} - -bool NativeScriptLanguage::validate(const String &p_script, const String &p_path, List<String> *r_functions, List<ScriptLanguage::ScriptError> *r_errors, List<ScriptLanguage::Warning> *r_warnings, Set<int> *r_safe_lines) const { - return true; -} - -Script *NativeScriptLanguage::create_script() const { - NativeScript *script = memnew(NativeScript); - return script; -} - -bool NativeScriptLanguage::has_named_classes() const { - return true; -} - -bool NativeScriptLanguage::supports_builtin_mode() const { - return true; -} - -int NativeScriptLanguage::find_function(const String &p_function, const String &p_code) const { - return -1; -} - -String NativeScriptLanguage::make_function(const String &p_class, const String &p_name, const PackedStringArray &p_args) const { - return ""; -} - -void NativeScriptLanguage::auto_indent_code(String &p_code, int p_from_line, int p_to_line) const { -} - -void NativeScriptLanguage::add_global_constant(const StringName &p_variable, const Variant &p_value) { -} - -// Debugging stuff here. Not used for now. -String NativeScriptLanguage::debug_get_error() const { - return ""; -} - -int NativeScriptLanguage::debug_get_stack_level_count() const { - return -1; -} - -int NativeScriptLanguage::debug_get_stack_level_line(int p_level) const { - return -1; -} - -String NativeScriptLanguage::debug_get_stack_level_function(int p_level) const { - return ""; -} - -String NativeScriptLanguage::debug_get_stack_level_source(int p_level) const { - return ""; -} - -void NativeScriptLanguage::debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) { -} - -void NativeScriptLanguage::debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) { -} - -void NativeScriptLanguage::debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) { -} - -String NativeScriptLanguage::debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth) { - return ""; -} - -// Debugging stuff end. - -void NativeScriptLanguage::reload_all_scripts() { -} - -void NativeScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload) { -} - -void NativeScriptLanguage::get_recognized_extensions(List<String> *p_extensions) const { - p_extensions->push_back("gdns"); -} - -void NativeScriptLanguage::get_public_functions(List<MethodInfo> *p_functions) const { -} - -void NativeScriptLanguage::get_public_constants(List<Pair<String, Variant>> *p_constants) const { -} - -void NativeScriptLanguage::profiling_start() { -#ifdef DEBUG_ENABLED - MutexLock lock(mutex); - - profile_data.clear(); -#endif -} - -void NativeScriptLanguage::profiling_stop() { -#ifdef DEBUG_ENABLED - MutexLock lock(mutex); -#endif -} - -int NativeScriptLanguage::profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max) { -#ifdef DEBUG_ENABLED - MutexLock lock(mutex); - - int current = 0; - - for (const KeyValue<StringName, ProfileData> &d : profile_data) { - if (current >= p_info_max) { - break; - } - - p_info_arr[current].call_count = d.value.call_count; - p_info_arr[current].self_time = d.value.self_time; - p_info_arr[current].total_time = d.value.total_time; - p_info_arr[current].signature = d.value.signature; - current++; - } - - return current; -#else - return 0; -#endif -} - -int NativeScriptLanguage::profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max) { -#ifdef DEBUG_ENABLED - MutexLock lock(mutex); - - int current = 0; - - for (const KeyValue<StringName, ProfileData> &d : profile_data) { - if (current >= p_info_max) { - break; - } - - if (d.value.last_frame_call_count) { - p_info_arr[current].call_count = d.value.last_frame_call_count; - p_info_arr[current].self_time = d.value.last_frame_self_time; - p_info_arr[current].total_time = d.value.last_frame_total_time; - p_info_arr[current].signature = d.value.signature; - current++; - } - } - - return current; -#else - return 0; -#endif -} - -void NativeScriptLanguage::profiling_add_data(StringName p_signature, uint64_t p_time) { -#ifdef DEBUG_ENABLED - MutexLock lock(mutex); - - Map<StringName, ProfileData>::Element *d = profile_data.find(p_signature); - if (d) { - d->get().call_count += 1; - d->get().total_time += p_time; - d->get().frame_call_count += 1; - d->get().frame_total_time += p_time; - } else { - ProfileData data; - - data.signature = p_signature; - data.call_count = 1; - data.self_time = 0; - data.total_time = p_time; - data.frame_call_count = 1; - data.frame_self_time = 0; - data.frame_total_time = p_time; - data.last_frame_call_count = 0; - data.last_frame_self_time = 0; - data.last_frame_total_time = 0; - - profile_data.insert(p_signature, data); - } -#endif -} - -int NativeScriptLanguage::register_binding_functions(godot_nativescript_instance_binding_functions p_binding_functions) { - // find index - - int idx = -1; - - for (int i = 0; i < binding_functions.size(); i++) { - if (!binding_functions[i].first) { - // free, we'll take it - idx = i; - break; - } - } - - if (idx == -1) { - idx = binding_functions.size(); - binding_functions.resize(idx + 1); - } - - // set the functions - binding_functions.write[idx].first = true; - binding_functions.write[idx].second = p_binding_functions; - - return idx; -} - -void NativeScriptLanguage::unregister_binding_functions(int p_idx) { - ERR_FAIL_INDEX(p_idx, binding_functions.size()); - - for (Set<Vector<void *> *>::Element *E = binding_instances.front(); E; E = E->next()) { - Vector<void *> &binding_data = *E->get(); - - if (p_idx < binding_data.size() && binding_data[p_idx] && binding_functions[p_idx].second.free_instance_binding_data) { - binding_functions[p_idx].second.free_instance_binding_data(binding_functions[p_idx].second.data, binding_data[p_idx]); - } - } - - binding_functions.write[p_idx].first = false; - - if (binding_functions[p_idx].second.free_func) { - binding_functions[p_idx].second.free_func(binding_functions[p_idx].second.data); - } -} - -void *NativeScriptLanguage::get_instance_binding_data(int p_idx, Object *p_object) { - return nullptr; -#if 0 - ERR_FAIL_INDEX_V(p_idx, binding_functions.size(), nullptr); - - ERR_FAIL_COND_V_MSG(!binding_functions[p_idx].first, nullptr, "Tried to get binding data for a nativescript binding that does not exist."); - - Vector<void *> *binding_data = (Vector<void *> *)p_object->get_script_instance_binding(lang_idx); - - if (!binding_data) { - return nullptr; // should never happen. - } - - if (binding_data->size() <= p_idx) { - // okay, add new elements here. - int old_size = binding_data->size(); - - binding_data->resize(p_idx + 1); - - for (int i = old_size; i <= p_idx; i++) { - (*binding_data).write[i] = nullptr; - } - } - - if (!(*binding_data)[p_idx]) { - const void *global_type_tag = get_global_type_tag(p_idx, p_object->get_class_name()); - - // no binding data yet, soooooo alloc new one \o/ - (*binding_data).write[p_idx] = binding_functions[p_idx].second.alloc_instance_binding_data(binding_functions[p_idx].second.data, global_type_tag, (godot_object *)p_object); - } - - return (*binding_data)[p_idx]; -#endif -} - -void *NativeScriptLanguage::alloc_instance_binding_data(Object *p_object) { - return nullptr; -#if 0 - Vector<void *> *binding_data = new Vector<void *>; - - binding_data->resize(binding_functions.size()); - - for (int i = 0; i < binding_functions.size(); i++) { - (*binding_data).write[i] = nullptr; - } - - binding_instances.insert(binding_data); - - return (void *)binding_data; -#endif -} - -void NativeScriptLanguage::free_instance_binding_data(void *p_data) { -#if 0 - if (!p_data) { - return; - } - - Vector<void *> &binding_data = *(Vector<void *> *)p_data; - - for (int i = 0; i < binding_data.size(); i++) { - if (!binding_data[i]) { - continue; - } - - if (binding_functions[i].first && binding_functions[i].second.free_instance_binding_data) { - binding_functions[i].second.free_instance_binding_data(binding_functions[i].second.data, binding_data[i]); - } - } - - binding_instances.erase(&binding_data); - - delete &binding_data; -#endif -} - -void NativeScriptLanguage::refcount_incremented_instance_binding(Object *p_object) { -#if 0 - void *data = p_object->get_script_instance_binding(lang_idx); - - if (!data) { - return; - } - - Vector<void *> &binding_data = *(Vector<void *> *)data; - - for (int i = 0; i < binding_data.size(); i++) { - if (!binding_data[i]) { - continue; - } - - if (!binding_functions[i].first) { - continue; - } - - if (binding_functions[i].second.refcount_incremented_instance_binding) { - binding_functions[i].second.refcount_incremented_instance_binding(binding_data[i], p_object); - } - } -#endif -} - -bool NativeScriptLanguage::refcount_decremented_instance_binding(Object *p_object) { -#if 0 - void *data = p_object->get_script_instance_binding(lang_idx); - - if (!data) { - return true; - } - - Vector<void *> &binding_data = *(Vector<void *> *)data; - - bool can_die = true; - - for (int i = 0; i < binding_data.size(); i++) { - if (!binding_data[i]) { - continue; - } - - if (!binding_functions[i].first) { - continue; - } - - if (binding_functions[i].second.refcount_decremented_instance_binding) { - can_die = can_die && binding_functions[i].second.refcount_decremented_instance_binding(binding_data[i], p_object); - } - } - - return can_die; -#endif - return false; -} - -void NativeScriptLanguage::set_global_type_tag(int p_idx, StringName p_class_name, const void *p_type_tag) { - if (!global_type_tags.has(p_idx)) { - global_type_tags.insert(p_idx, HashMap<StringName, const void *>()); - } - - HashMap<StringName, const void *> &tags = global_type_tags[p_idx]; - - tags.set(p_class_name, p_type_tag); -} - -const void *NativeScriptLanguage::get_global_type_tag(int p_idx, StringName p_class_name) const { - if (!global_type_tags.has(p_idx)) { - return nullptr; - } - - const HashMap<StringName, const void *> &tags = global_type_tags[p_idx]; - - if (!tags.has(p_class_name)) { - return nullptr; - } - - const void *tag = tags.get(p_class_name); - - return tag; -} - -#ifndef NO_THREADS -void NativeScriptLanguage::defer_init_library(Ref<GDNativeLibrary> lib, NativeScript *script) { - MutexLock lock(mutex); - libs_to_init.insert(lib); - scripts_to_register.insert(script); - has_objects_to_register.set(); -} -#endif - -void NativeScriptLanguage::init_library(const Ref<GDNativeLibrary> &lib) { - MutexLock lock(mutex); - - // See if this library was "registered" already. - const String &lib_path = lib->get_current_library_path(); - ERR_FAIL_COND_MSG(lib_path.length() == 0, lib->get_name() + " does not have a library for the current platform."); - Map<String, Ref<GDNative>>::Element *E = library_gdnatives.find(lib_path); - - if (!E) { - Ref<GDNative> gdn; - gdn.instantiate(); - gdn->set_library(lib); - - // TODO check the return value? - gdn->initialize(); - - library_gdnatives.insert(lib_path, gdn); - - library_classes.insert(lib_path, Map<StringName, NativeScriptDesc>()); - - if (!library_script_users.has(lib_path)) { - library_script_users.insert(lib_path, Set<NativeScript *>()); - } - - void *proc_ptr; - - Error err = gdn->get_symbol(lib->get_symbol_prefix() + _init_call_name, proc_ptr); - - if (err != OK) { - ERR_PRINT(String("No " + _init_call_name + " in \"" + lib_path + "\" found").utf8().get_data()); - } else { - ((void (*)(godot_string *))proc_ptr)((godot_string *)&lib_path); - } - } else { - // already initialized. Nice. - } -} - -void NativeScriptLanguage::register_script(NativeScript *script) { - MutexLock lock(mutex); - - library_script_users[script->lib_path].insert(script); -} - -void NativeScriptLanguage::unregister_script(NativeScript *script) { - MutexLock lock(mutex); - - Map<String, Set<NativeScript *>>::Element *S = library_script_users.find(script->lib_path); - if (S) { - S->get().erase(script); - if (S->get().size() == 0) { - library_script_users.erase(S); - - Map<String, Ref<GDNative>>::Element *G = library_gdnatives.find(script->lib_path); - if (G && G->get()->get_library()->is_reloadable()) { - // ONLY if the library is marked as reloadable, and no more instances of its scripts exist do we unload the library - - // First remove meta data related to the library - Map<String, Map<StringName, NativeScriptDesc>>::Element *L = library_classes.find(script->lib_path); - if (L) { - Map<StringName, NativeScriptDesc> classes = L->get(); - - for (KeyValue<StringName, NativeScriptDesc> &C : classes) { - // free property stuff first - for (OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = C.value.properties.front(); P; P = P.next()) { - if (P.get().getter.free_func) { - P.get().getter.free_func(P.get().getter.method_data); - } - - if (P.get().setter.free_func) { - P.get().setter.free_func(P.get().setter.method_data); - } - } - - // free method stuff - for (const KeyValue<StringName, NativeScriptDesc::Method> &M : C.value.methods) { - if (M.value.method.free_func) { - M.value.method.free_func(M.value.method.method_data); - } - } - - // free constructor/destructor - if (C.value.create_func.free_func) { - C.value.create_func.free_func(C.value.create_func.method_data); - } - - if (C.value.destroy_func.free_func) { - C.value.destroy_func.free_func(C.value.destroy_func.method_data); - } - } - - library_classes.erase(script->lib_path); - } - - // now unload the library - G->get()->terminate(); - library_gdnatives.erase(G); - } - } - } -#ifndef NO_THREADS - scripts_to_register.erase(script); -#endif -} - -void NativeScriptLanguage::call_libraries_cb(const StringName &name) { - // library_gdnatives is modified only from the main thread, so it's safe not to use mutex here - for (KeyValue<String, Ref<GDNative>> &L : library_gdnatives) { - if (L.value.is_null()) { - continue; - } - - if (L.value->is_initialized()) { - void *proc_ptr; - Error err = L.value->get_symbol(L.value->get_library()->get_symbol_prefix() + name, proc_ptr); - - if (!err) { - ((void (*)())proc_ptr)(); - } - } - } -} - -void NativeScriptLanguage::frame() { -#ifndef NO_THREADS - if (has_objects_to_register.is_set()) { - MutexLock lock(mutex); - for (Set<Ref<GDNativeLibrary>>::Element *L = libs_to_init.front(); L; L = L->next()) { - init_library(L->get()); - } - libs_to_init.clear(); - for (Set<NativeScript *>::Element *S = scripts_to_register.front(); S; S = S->next()) { - register_script(S->get()); - } - scripts_to_register.clear(); - has_objects_to_register.clear(); - } -#endif - -#ifdef DEBUG_ENABLED - { - MutexLock lock(mutex); - - for (KeyValue<StringName, ProfileData> &d : profile_data) { - d.value.last_frame_call_count = d.value.frame_call_count; - d.value.last_frame_self_time = d.value.frame_self_time; - d.value.last_frame_total_time = d.value.frame_total_time; - d.value.frame_call_count = 0; - d.value.frame_self_time = 0; - d.value.frame_total_time = 0; - } - } -#endif - - call_libraries_cb(_frame_call_name); -} - -#ifndef NO_THREADS - -void NativeScriptLanguage::thread_enter() { - call_libraries_cb(_thread_enter_call_name); -} - -void NativeScriptLanguage::thread_exit() { - call_libraries_cb(_thread_exit_call_name); -} - -#endif // NO_THREADS - -bool NativeScriptLanguage::handles_global_class_type(const String &p_type) const { - return p_type == "NativeScript"; -} - -String NativeScriptLanguage::get_global_class_name(const String &p_path, String *r_base_type, String *r_icon_path) const { - if (!p_path.is_empty()) { - Ref<NativeScript> script = ResourceLoader::load(p_path, "NativeScript"); - if (script.is_valid()) { - if (r_base_type) { - *r_base_type = script->get_instance_base_type(); - } - if (r_icon_path) { - *r_icon_path = script->get_script_class_icon_path(); - } - return script->get_script_class_name(); - } - if (r_base_type) { - *r_base_type = String(); - } - if (r_icon_path) { - *r_icon_path = String(); - } - } - return String(); -} - -void NativeReloadNode::_bind_methods() { - ClassDB::bind_method(D_METHOD("_notification"), &NativeReloadNode::_notification); -} - -void NativeReloadNode::_notification(int p_what) { -#ifdef TOOLS_ENABLED - switch (p_what) { - case NOTIFICATION_APPLICATION_FOCUS_OUT: { - if (unloaded) { - break; - } - MutexLock lock(NSL->mutex); - NSL->_unload_stuff(true); - - for (KeyValue<String, Ref<GDNative>> &L : NSL->library_gdnatives) { - Ref<GDNative> gdn = L.value; - - if (gdn.is_null()) { - continue; - } - - // Don't unload what should not be reloaded! - if (!gdn->get_library()->is_reloadable()) { - continue; - } - - // singleton libraries might have alive pointers living inside the - // editor. Also reloading a singleton library would mean that - // the singleton entry will not be called again, as this only - // happens at engine startup. - if (gdn->get_library()->is_singleton()) { - continue; - } - - gdn->terminate(); - } - - unloaded = true; - } break; - - case NOTIFICATION_APPLICATION_FOCUS_IN: { - if (!unloaded) { - break; - } - MutexLock lock(NSL->mutex); - - Set<StringName> libs_to_remove; - for (KeyValue<String, Ref<GDNative>> &L : NSL->library_gdnatives) { - Ref<GDNative> gdn = L.value; - - if (gdn.is_null()) { - continue; - } - - if (!gdn->get_library()->is_reloadable()) { - continue; - } - - // since singleton libraries are not unloaded there is no point - // in loading them again. - if (gdn->get_library()->is_singleton()) { - continue; - } - - if (!gdn->initialize()) { - libs_to_remove.insert(L.key); - continue; - } - - NSL->library_classes.insert(L.key, Map<StringName, NativeScriptDesc>()); - - // here the library registers all the classes and stuff. - - void *proc_ptr; - Error err = gdn->get_symbol(gdn->get_library()->get_symbol_prefix() + "nativescript_init", proc_ptr); - if (err != OK) { - ERR_PRINT(String("No godot_nativescript_init in \"" + L.key + "\" found").utf8().get_data()); - } else { - ((void (*)(void *))proc_ptr)((void *)&L.key); - } - - for (KeyValue<String, Set<NativeScript *>> &U : NSL->library_script_users) { - for (Set<NativeScript *>::Element *S = U.value.front(); S; S = S->next()) { - NativeScript *script = S->get(); - - if (script->placeholders.size() == 0) { - continue; - } - - for (Set<PlaceHolderScriptInstance *>::Element *P = script->placeholders.front(); P; P = P->next()) { - script->_update_placeholder(P->get()); - } - } - } - } - - unloaded = false; - - for (Set<StringName>::Element *R = libs_to_remove.front(); R; R = R->next()) { - NSL->library_gdnatives.erase(R->get()); - } - } break; - } -#endif -} - -RES ResourceFormatLoaderNativeScript::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_no_cache) { - return ResourceFormatLoaderText::singleton->load(p_path, p_original_path, r_error); -} - -void ResourceFormatLoaderNativeScript::get_recognized_extensions(List<String> *p_extensions) const { - p_extensions->push_back("gdns"); -} - -bool ResourceFormatLoaderNativeScript::handles_type(const String &p_type) const { - return (p_type == "Script" || p_type == "NativeScript"); -} - -String ResourceFormatLoaderNativeScript::get_resource_type(const String &p_path) const { - String el = p_path.get_extension().to_lower(); - if (el == "gdns") { - return "NativeScript"; - } - return ""; -} - -Error ResourceFormatSaverNativeScript::save(const String &p_path, const RES &p_resource, uint32_t p_flags) { - ResourceFormatSaverText rfst; - return rfst.save(p_path, p_resource, p_flags); -} - -bool ResourceFormatSaverNativeScript::recognize(const RES &p_resource) const { - return Object::cast_to<NativeScript>(*p_resource) != nullptr; -} - -void ResourceFormatSaverNativeScript::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const { - if (Object::cast_to<NativeScript>(*p_resource)) { - p_extensions->push_back("gdns"); - } -} diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h deleted file mode 100644 index 2d01de5832..0000000000 --- a/modules/gdnative/nativescript/nativescript.h +++ /dev/null @@ -1,393 +0,0 @@ -/*************************************************************************/ -/* nativescript.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef NATIVE_SCRIPT_H -#define NATIVE_SCRIPT_H - -#include "core/doc_data.h" -#include "core/io/resource.h" -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/object/script_language.h" -#include "core/os/mutex.h" -#include "core/os/thread_safe.h" -#include "core/templates/oa_hash_map.h" -#include "core/templates/ordered_hash_map.h" -#include "core/templates/safe_refcount.h" -#include "core/templates/self_list.h" -#include "scene/main/node.h" - -#include "modules/gdnative/gdnative.h" - -#include <nativescript/godot_nativescript.h> - -struct NativeScriptDesc { - struct Method { - godot_nativescript_instance_method method; - MethodInfo info; - int rpc_mode = 0; - uint16_t rpc_method_id = 0; - String documentation; - }; - - struct Property { - godot_nativescript_property_set_func setter; - godot_nativescript_property_get_func getter; - PropertyInfo info; - Variant default_value; - String documentation; - }; - - struct Signal { - MethodInfo signal; - String documentation; - }; - - Map<StringName, Method> methods; - Vector<Multiplayer::RPCConfig> rpc_methods; - OrderedHashMap<StringName, Property> properties; - Map<StringName, Signal> signals_; // QtCreator doesn't like the name signals - StringName base; - StringName base_native_type; - NativeScriptDesc *base_data = nullptr; - godot_nativescript_instance_create_func create_func; - godot_nativescript_instance_destroy_func destroy_func; - - String documentation; - - const void *type_tag = nullptr; - - bool is_tool = false; - - inline NativeScriptDesc() { - memset(&create_func, 0, sizeof(godot_nativescript_instance_create_func)); - memset(&destroy_func, 0, sizeof(godot_nativescript_instance_destroy_func)); - } -}; - -class NativeScript : public Script { - GDCLASS(NativeScript, Script); - -#ifdef TOOLS_ENABLED - Set<PlaceHolderScriptInstance *> placeholders; - void _update_placeholder(PlaceHolderScriptInstance *p_placeholder); - virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder) override; -#endif - - friend class NativeScriptInstance; - friend class NativeScriptLanguage; - friend class NativeReloadNode; - friend class GDNativeLibrary; - - Ref<GDNativeLibrary> library; - - String lib_path; - - String class_name; - - String script_class_name; - String script_class_icon_path; - - Mutex owners_lock; - Set<Object *> instance_owners; - -protected: - static void _bind_methods(); - -public: - inline NativeScriptDesc *get_script_desc() const; - - bool inherits_script(const Ref<Script> &p_script) const override; - - void set_class_name(String p_class_name); - String get_class_name() const; - - void set_library(Ref<GDNativeLibrary> p_library); - Ref<GDNativeLibrary> get_library() const; - - void set_script_class_name(String p_type); - String get_script_class_name() const; - void set_script_class_icon_path(String p_icon_path); - String get_script_class_icon_path() const; - - virtual bool can_instantiate() const override; - - virtual Ref<Script> get_base_script() const override; //for script inheritance - - virtual StringName get_instance_base_type() const override; // this may not work in all scripts, will return empty if so - virtual ScriptInstance *instance_create(Object *p_this) override; - virtual PlaceHolderScriptInstance *placeholder_instance_create(Object *p_this) override; - virtual bool instance_has(const Object *p_this) const override; - - virtual bool has_source_code() const override; - virtual String get_source_code() const override; - virtual void set_source_code(const String &p_code) override; - virtual Error reload(bool p_keep_state = false) override; - -#ifdef TOOLS_ENABLED - virtual const Vector<DocData::ClassDoc> &get_documentation() const override { - static Vector<DocData::ClassDoc> docs; - return docs; - } -#endif // TOOLS_ENABLED - - virtual bool has_method(const StringName &p_method) const override; - virtual MethodInfo get_method_info(const StringName &p_method) const override; - - virtual bool is_tool() const override; - virtual bool is_valid() const override; - - virtual ScriptLanguage *get_language() const override; - - virtual bool has_script_signal(const StringName &p_signal) const override; - virtual void get_script_signal_list(List<MethodInfo> *r_signals) const override; - - virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const override; - - virtual void update_exports() override; //editor tool - virtual void get_script_method_list(List<MethodInfo> *p_list) const override; - virtual void get_script_property_list(List<PropertyInfo> *p_list) const override; - - virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const override; - - String get_class_documentation() const; - String get_method_documentation(const StringName &p_method) const; - String get_signal_documentation(const StringName &p_signal_name) const; - String get_property_documentation(const StringName &p_path) const; - - Variant _new(const Variant **p_args, int p_argcount, Callable::CallError &r_error); - - NativeScript(); - ~NativeScript(); -}; - -class NativeScriptInstance : public ScriptInstance { - friend class NativeScript; - - Object *owner; - Ref<NativeScript> script; -#ifdef DEBUG_ENABLED - StringName current_method_call; -#endif - - void _ml_call_reversed(NativeScriptDesc *script_data, const StringName &p_method, const Variant **p_args, int p_argcount); - -public: - void *userdata; - - virtual bool set(const StringName &p_name, const Variant &p_value); - virtual bool get(const StringName &p_name, Variant &r_ret) const; - virtual void get_property_list(List<PropertyInfo> *p_properties) const; - virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid) const; - virtual void get_method_list(List<MethodInfo> *p_list) const; - virtual bool has_method(const StringName &p_method) const; - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); - virtual void notification(int p_what); - String to_string(bool *r_valid); - virtual Ref<Script> get_script() const; - - virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const; - - virtual ScriptLanguage *get_language(); - - virtual void refcount_incremented(); - virtual bool refcount_decremented(); - - ~NativeScriptInstance(); -}; - -class NativeReloadNode; - -class NativeScriptLanguage : public ScriptLanguage { - friend class NativeScript; - friend class NativeScriptInstance; - friend class NativeReloadNode; - -private: - static NativeScriptLanguage *singleton; - int lang_idx = 0; - - void _unload_stuff(bool p_reload = false); - - Mutex mutex; -#ifndef NO_THREADS - Set<Ref<GDNativeLibrary>> libs_to_init; - Set<NativeScript *> scripts_to_register; - SafeFlag has_objects_to_register; // so that we don't lock mutex every frame - it's rarely needed - void defer_init_library(Ref<GDNativeLibrary> lib, NativeScript *script); -#endif - - void init_library(const Ref<GDNativeLibrary> &lib); - void register_script(NativeScript *script); - void unregister_script(NativeScript *script); - - void call_libraries_cb(const StringName &name); - - Vector<Pair<bool, godot_nativescript_instance_binding_functions>> binding_functions; - Set<Vector<void *> *> binding_instances; - - Map<int, HashMap<StringName, const void *>> global_type_tags; - - struct ProfileData { - StringName signature; - uint64_t call_count = 0; - uint64_t self_time = 0; - uint64_t total_time = 0; - uint64_t frame_call_count = 0; - uint64_t frame_self_time = 0; - uint64_t frame_total_time = 0; - uint64_t last_frame_call_count = 0; - uint64_t last_frame_self_time = 0; - uint64_t last_frame_total_time = 0; - }; - - Map<StringName, ProfileData> profile_data; - -public: - // These two maps must only be touched on the main thread - Map<String, Map<StringName, NativeScriptDesc>> library_classes; - Map<String, Ref<GDNative>> library_gdnatives; - - Map<String, Set<NativeScript *>> library_script_users; - - StringName _init_call_type; - StringName _init_call_name; - StringName _terminate_call_name; - StringName _noarg_call_type; - StringName _frame_call_name; -#ifndef NO_THREADS - StringName _thread_enter_call_name; - StringName _thread_exit_call_name; -#endif - - NativeScriptLanguage(); - ~NativeScriptLanguage(); - - inline static NativeScriptLanguage *get_singleton() { - return singleton; - } - - _FORCE_INLINE_ void set_language_index(int p_idx) { lang_idx = p_idx; } - -#ifndef NO_THREADS - virtual void thread_enter(); - virtual void thread_exit(); -#endif - - virtual void frame(); - - virtual String get_name() const; - virtual void init(); - virtual String get_type() const; - virtual String get_extension() const; - virtual Error execute_file(const String &p_path); - virtual void finish(); - virtual void get_reserved_words(List<String> *p_words) const; - virtual bool is_control_flow_keyword(String p_keyword) const; - virtual void get_comment_delimiters(List<String> *p_delimiters) const; - virtual void get_string_delimiters(List<String> *p_delimiters) const; - virtual Ref<Script> get_template(const String &p_class_name, const String &p_base_class_name) const; - virtual bool validate(const String &p_script, const String &p_path, List<String> *r_functions, List<ScriptLanguage::ScriptError> *r_errors = nullptr, List<ScriptLanguage::Warning> *r_warnings = nullptr, Set<int> *r_safe_lines = nullptr) const; - virtual Script *create_script() const; - virtual bool has_named_classes() const; - virtual bool supports_builtin_mode() const; - virtual int find_function(const String &p_function, const String &p_code) const; - virtual String make_function(const String &p_class, const String &p_name, const PackedStringArray &p_args) const; - virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const; - virtual void add_global_constant(const StringName &p_variable, const Variant &p_value); - virtual String debug_get_error() const; - virtual int debug_get_stack_level_count() const; - virtual int debug_get_stack_level_line(int p_level) const; - virtual String debug_get_stack_level_function(int p_level) const; - virtual String debug_get_stack_level_source(int p_level) const; - virtual void debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth); - virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth); - virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth); - virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth); - virtual void reload_all_scripts(); - virtual void reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload); - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual void get_public_functions(List<MethodInfo> *p_functions) const; - virtual void get_public_constants(List<Pair<String, Variant>> *p_constants) const; - virtual void profiling_start(); - virtual void profiling_stop(); - virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max); - virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max); - - int register_binding_functions(godot_nativescript_instance_binding_functions p_binding_functions); - void unregister_binding_functions(int p_idx); - - void *get_instance_binding_data(int p_idx, Object *p_object); - - virtual void *alloc_instance_binding_data(Object *p_object); - virtual void free_instance_binding_data(void *p_data); - virtual void refcount_incremented_instance_binding(Object *p_object); - virtual bool refcount_decremented_instance_binding(Object *p_object); - - void set_global_type_tag(int p_idx, StringName p_class_name, const void *p_type_tag); - const void *get_global_type_tag(int p_idx, StringName p_class_name) const; - - virtual bool handles_global_class_type(const String &p_type) const; - virtual String get_global_class_name(const String &p_path, String *r_base_type, String *r_icon_path) const; - - void profiling_add_data(StringName p_signature, uint64_t p_time); -}; - -inline NativeScriptDesc *NativeScript::get_script_desc() const { - Map<StringName, NativeScriptDesc>::Element *E = NativeScriptLanguage::singleton->library_classes[lib_path].find(class_name); - return E ? &E->get() : nullptr; -} - -class NativeReloadNode : public Node { - GDCLASS(NativeReloadNode, Node); - bool unloaded = false; - -public: - static void _bind_methods(); - void _notification(int p_what); - - NativeReloadNode() {} -}; - -class ResourceFormatLoaderNativeScript : public ResourceFormatLoader { -public: - virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE); - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String &p_type) const; - virtual String get_resource_type(const String &p_path) const; -}; - -class ResourceFormatSaverNativeScript : public ResourceFormatSaver { - virtual Error save(const String &p_path, const RES &p_resource, uint32_t p_flags = 0); - virtual bool recognize(const RES &p_resource) const; - virtual void get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const; -}; - -#endif // GDNATIVE_H diff --git a/modules/gdnative/nativescript/register_types.cpp b/modules/gdnative/nativescript/register_types.cpp deleted file mode 100644 index ee63dca9a3..0000000000 --- a/modules/gdnative/nativescript/register_types.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************/ -/* register_types.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "register_types.h" - -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" - -#include "nativescript.h" - -#include "core/os/os.h" - -NativeScriptLanguage *native_script_language; - -Ref<ResourceFormatLoaderNativeScript> resource_loader_gdns; -Ref<ResourceFormatSaverNativeScript> resource_saver_gdns; - -void register_nativescript_types() { - native_script_language = memnew(NativeScriptLanguage); - - GDREGISTER_CLASS(NativeScript); - - native_script_language->set_language_index(ScriptServer::get_language_count()); - ScriptServer::register_language(native_script_language); - - resource_saver_gdns.instantiate(); - ResourceSaver::add_resource_format_saver(resource_saver_gdns); - - resource_loader_gdns.instantiate(); - ResourceLoader::add_resource_format_loader(resource_loader_gdns); -} - -void unregister_nativescript_types() { - ResourceLoader::remove_resource_format_loader(resource_loader_gdns); - resource_loader_gdns.unref(); - - ResourceSaver::remove_resource_format_saver(resource_saver_gdns); - resource_saver_gdns.unref(); - - if (native_script_language) { - ScriptServer::unregister_language(native_script_language); - memdelete(native_script_language); - } -} diff --git a/modules/gdnative/nativescript/register_types.h b/modules/gdnative/nativescript/register_types.h deleted file mode 100644 index ce6085f62a..0000000000 --- a/modules/gdnative/nativescript/register_types.h +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************/ -/* register_types.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef NATIVESCRIPT_REGISTER_TYPES_H -#define NATIVESCRIPT_REGISTER_TYPES_H - -void register_nativescript_types(); -void unregister_nativescript_types(); - -#endif // NATIVESCRIPT_REGISTER_TYPES_H diff --git a/modules/gdnative/pluginscript/SCsub b/modules/gdnative/pluginscript/SCsub deleted file mode 100644 index 0b2db3b504..0000000000 --- a/modules/gdnative/pluginscript/SCsub +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env python - -Import("env") -Import("env_gdnative") - -env_gdnative.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/gdnative/pluginscript/pluginscript_instance.cpp b/modules/gdnative/pluginscript/pluginscript_instance.cpp deleted file mode 100644 index 9236aceb3e..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_instance.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/*************************************************************************/ -/* pluginscript_instance.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "pluginscript_instance.h" - -// Godot imports -#include "core/os/os.h" -#include "core/variant/variant.h" - -// PluginScript imports -#include "pluginscript_language.h" -#include "pluginscript_script.h" - -bool PluginScriptInstance::set(const StringName &p_name, const Variant &p_value) { - return _desc->set_prop(_data, (const godot_string_name *)&p_name, (const godot_variant *)&p_value); -} - -bool PluginScriptInstance::get(const StringName &p_name, Variant &r_ret) const { - return _desc->get_prop(_data, (const godot_string_name *)&p_name, (godot_variant *)&r_ret); -} - -Ref<Script> PluginScriptInstance::get_script() const { - return _script; -} - -ScriptLanguage *PluginScriptInstance::get_language() { - return _script->get_language(); -} - -Variant::Type PluginScriptInstance::get_property_type(const StringName &p_name, bool *r_is_valid) const { - if (!_script->has_property(p_name)) { - if (r_is_valid) { - *r_is_valid = false; - } - return Variant::NIL; - } - if (r_is_valid) { - *r_is_valid = true; - } - return _script->get_property_info(p_name).type; -} - -void PluginScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const { - _script->get_script_property_list(p_properties); -} - -void PluginScriptInstance::get_method_list(List<MethodInfo> *p_list) const { - _script->get_script_method_list(p_list); -} - -bool PluginScriptInstance::has_method(const StringName &p_method) const { - return _script->has_method(p_method); -} - -Variant PluginScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { - // TODO: optimize when calling a Godot method from Godot to avoid param conversion ? - godot_variant ret = _desc->call_method( - _data, (godot_string_name *)&p_method, (const godot_variant **)p_args, - p_argcount, (godot_variant_call_error *)&r_error); - Variant var_ret = *(Variant *)&ret; - godot_variant_destroy(&ret); - return var_ret; -} - -void PluginScriptInstance::notification(int p_notification) { - _desc->notification(_data, p_notification); -} - -String PluginScriptInstance::to_string(bool *r_valid) { - godot_string ret = _desc->to_string(_data, r_valid); - String str_ret = *(String *)&ret; - godot_string_destroy(&ret); - return str_ret; -} - -const Vector<Multiplayer::RPCConfig> PluginScriptInstance::get_rpc_methods() const { - return _script->get_rpc_methods(); -} - -void PluginScriptInstance::refcount_incremented() { - if (_desc->refcount_decremented) { - _desc->refcount_incremented(_data); - } -} - -bool PluginScriptInstance::refcount_decremented() { - // Return true if it can die - if (_desc->refcount_decremented) { - return _desc->refcount_decremented(_data); - } - return true; -} - -PluginScriptInstance::PluginScriptInstance() { -} - -bool PluginScriptInstance::init(PluginScript *p_script, Object *p_owner) { - _owner = p_owner; - _owner_variant = Variant(p_owner); - _script = Ref<PluginScript>(p_script); - _desc = &p_script->_desc->instance_desc; - _data = _desc->init(p_script->_data, (godot_object *)p_owner); - ERR_FAIL_COND_V(_data == nullptr, false); - p_owner->set_script_instance(this); - return true; -} - -PluginScriptInstance::~PluginScriptInstance() { - _desc->finish(_data); - _script->_language->lock(); - _script->_instances.erase(_owner); - _script->_language->unlock(); -} diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h deleted file mode 100644 index 09b051c008..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_instance.h +++ /dev/null @@ -1,82 +0,0 @@ -/*************************************************************************/ -/* pluginscript_instance.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef PLUGINSCRIPT_INSTANCE_H -#define PLUGINSCRIPT_INSTANCE_H - -// Godot imports -#include "core/object/script_language.h" - -// PluginScript imports -#include <pluginscript/godot_pluginscript.h> - -class PluginScript; - -class PluginScriptInstance : public ScriptInstance { - friend class PluginScript; - -private: - Ref<PluginScript> _script; - Object *_owner = nullptr; - Variant _owner_variant; - godot_pluginscript_instance_data *_data = nullptr; - const godot_pluginscript_instance_desc *_desc = nullptr; - -public: - _FORCE_INLINE_ Object *get_owner() { return _owner; } - - virtual bool set(const StringName &p_name, const Variant &p_value); - virtual bool get(const StringName &p_name, Variant &r_ret) const; - virtual void get_property_list(List<PropertyInfo> *p_properties) const; - virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid = nullptr) const; - - virtual void get_method_list(List<MethodInfo> *p_list) const; - virtual bool has_method(const StringName &p_method) const; - - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); - - virtual void notification(int p_notification); - virtual String to_string(bool *r_valid); - - virtual Ref<Script> get_script() const; - - virtual ScriptLanguage *get_language(); - - virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const; - - virtual void refcount_incremented(); - virtual bool refcount_decremented(); - - PluginScriptInstance(); - bool init(PluginScript *p_script, Object *p_owner); - virtual ~PluginScriptInstance(); -}; - -#endif // PLUGINSCRIPT_INSTANCE_H diff --git a/modules/gdnative/pluginscript/pluginscript_language.cpp b/modules/gdnative/pluginscript/pluginscript_language.cpp deleted file mode 100644 index 0e068dec3a..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_language.cpp +++ /dev/null @@ -1,459 +0,0 @@ -/*************************************************************************/ -/* pluginscript_language.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -// Godot imports -#include "core/config/project_settings.h" -#include "core/io/file_access.h" -#include "core/os/os.h" -// PluginScript imports -#include "pluginscript_language.h" -#include "pluginscript_script.h" - -String PluginScriptLanguage::get_name() const { - return String(_desc.name); -} - -void PluginScriptLanguage::init() { - _data = _desc.init(); -} - -String PluginScriptLanguage::get_type() const { - // We should use _desc.type here, however the returned type is used to - // query ClassDB which would complain given the type is not registered - // from his point of view... - // To solve this we just use a more generic (but present in ClassDB) type. - return String("PluginScript"); -} - -String PluginScriptLanguage::get_extension() const { - return String(_desc.extension); -} - -Error PluginScriptLanguage::execute_file(const String &p_path) { - // TODO: pretty sure this method is totally deprecated and should be removed... - return OK; -} - -void PluginScriptLanguage::finish() { - _desc.finish(_data); -} - -/* EDITOR FUNCTIONS */ - -void PluginScriptLanguage::get_reserved_words(List<String> *p_words) const { - if (_desc.reserved_words) { - const char **w = _desc.reserved_words; - while (*w) { - p_words->push_back(*w); - w++; - } - } -} - -bool PluginScriptLanguage::is_control_flow_keyword(String p_keyword) const { - return false; -} - -void PluginScriptLanguage::get_comment_delimiters(List<String> *p_delimiters) const { - if (_desc.comment_delimiters) { - const char **w = _desc.comment_delimiters; - while (*w) { - p_delimiters->push_back(*w); - w++; - } - } -} - -void PluginScriptLanguage::get_string_delimiters(List<String> *p_delimiters) const { - if (_desc.string_delimiters) { - const char **w = _desc.string_delimiters; - while (*w) { - p_delimiters->push_back(*w); - w++; - } - } -} - -Ref<Script> PluginScriptLanguage::get_template(const String &p_class_name, const String &p_base_class_name) const { - Script *ns = create_script(); - Ref<Script> script = Ref<Script>(ns); - if (_desc.get_template_source_code) { - godot_string src = _desc.get_template_source_code(_data, (godot_string *)&p_class_name, (godot_string *)&p_base_class_name); - script->set_source_code(*(String *)&src); - godot_string_destroy(&src); - } - return script; -} - -bool PluginScriptLanguage::validate(const String &p_script, const String &p_path, List<String> *r_functions, List<ScriptLanguage::ScriptError> *r_errors, List<ScriptLanguage::Warning> *r_warnings, Set<int> *r_safe_lines) const { - PackedStringArray functions; - Array errors; - if (_desc.validate) { - bool ret = _desc.validate( - _data, - (godot_string *)&p_script, - (godot_string *)&p_path, - (godot_packed_string_array *)&functions, - (godot_array *)&errors); - for (int i = 0; i < functions.size(); i++) { - r_functions->push_back(functions[i]); - } - if (r_errors) { - for (int i = 0; i < errors.size(); i++) { - Dictionary error = errors[i]; - ScriptLanguage::ScriptError e; - e.line = error["line"]; - e.column = error["column"]; - e.message = error["message"]; - r_errors->push_back(e); - } - } - return ret; - } - return true; -} - -Script *PluginScriptLanguage::create_script() const { - PluginScript *script = memnew(PluginScript()); - // I'm hurting kittens doing this I guess... - script->init(const_cast<PluginScriptLanguage *>(this)); - return script; -} - -bool PluginScriptLanguage::has_named_classes() const { - return _desc.has_named_classes; -} - -bool PluginScriptLanguage::supports_builtin_mode() const { - return _desc.supports_builtin_mode; -} - -bool PluginScriptLanguage::can_inherit_from_file() const { - return _desc.can_inherit_from_file; -} - -int PluginScriptLanguage::find_function(const String &p_function, const String &p_code) const { - if (_desc.find_function) { - return _desc.find_function(_data, (godot_string *)&p_function, (godot_string *)&p_code); - } - return -1; -} - -String PluginScriptLanguage::make_function(const String &p_class, const String &p_name, const PackedStringArray &p_args) const { - if (_desc.make_function) { - godot_string tmp = _desc.make_function(_data, (godot_string *)&p_class, (godot_string *)&p_name, (godot_packed_string_array *)&p_args); - String ret = *(String *)&tmp; - godot_string_destroy(&tmp); - return ret; - } - return String(); -} - -Error PluginScriptLanguage::complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptCodeCompletionOption> *r_options, bool &r_force, String &r_call_hint) { - if (_desc.complete_code) { - Array options; - godot_error tmp = _desc.complete_code( - _data, - (godot_string *)&p_code, - (godot_string *)&p_path, - (godot_object *)p_owner, - (godot_array *)&options, - &r_force, - (godot_string *)&r_call_hint); - for (int i = 0; i < options.size(); i++) { - ScriptCodeCompletionOption option(options[i], ScriptCodeCompletionOption::KIND_PLAIN_TEXT); - r_options->push_back(option); - } - return (Error)tmp; - } - return ERR_UNAVAILABLE; -} - -void PluginScriptLanguage::auto_indent_code(String &p_code, int p_from_line, int p_to_line) const { - if (_desc.auto_indent_code) { - _desc.auto_indent_code(_data, (godot_string *)&p_code, p_from_line, p_to_line); - } - return; -} - -void PluginScriptLanguage::add_global_constant(const StringName &p_variable, const Variant &p_value) { - _desc.add_global_constant(_data, (godot_string_name *)&p_variable, (godot_variant *)&p_value); -} - -/* LOADER FUNCTIONS */ - -void PluginScriptLanguage::get_recognized_extensions(List<String> *p_extensions) const { - for (int i = 0; _desc.recognized_extensions[i]; ++i) { - p_extensions->push_back(String(_desc.recognized_extensions[i])); - } -} - -void PluginScriptLanguage::get_public_functions(List<MethodInfo> *p_functions) const { - // TODO: provide this statically in `godot_pluginscript_language_desc` ? - if (_desc.get_public_functions) { - Array functions; - _desc.get_public_functions(_data, (godot_array *)&functions); - for (int i = 0; i < functions.size(); i++) { - MethodInfo mi = MethodInfo::from_dict(functions[i]); - p_functions->push_back(mi); - } - } -} - -void PluginScriptLanguage::get_public_constants(List<Pair<String, Variant>> *p_constants) const { - // TODO: provide this statically in `godot_pluginscript_language_desc` ? - if (_desc.get_public_constants) { - Dictionary constants; - _desc.get_public_constants(_data, (godot_dictionary *)&constants); - for (const Variant *key = constants.next(); key; key = constants.next(key)) { - Variant value = constants[*key]; - p_constants->push_back(Pair<String, Variant>(*key, value)); - } - } -} - -void PluginScriptLanguage::profiling_start() { -#ifdef DEBUG_ENABLED - if (_desc.profiling_start) { - lock(); - _desc.profiling_start(_data); - unlock(); - } -#endif -} - -void PluginScriptLanguage::profiling_stop() { -#ifdef DEBUG_ENABLED - if (_desc.profiling_stop) { - lock(); - _desc.profiling_stop(_data); - unlock(); - } -#endif -} - -int PluginScriptLanguage::profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max) { - int info_count = 0; -#ifdef DEBUG_ENABLED - if (_desc.profiling_get_accumulated_data) { - godot_pluginscript_profiling_data *info = (godot_pluginscript_profiling_data *)memalloc( - sizeof(godot_pluginscript_profiling_data) * p_info_max); - info_count = _desc.profiling_get_accumulated_data(_data, info, p_info_max); - for (int i = 0; i < info_count; ++i) { - p_info_arr[i].signature = *(StringName *)&info[i].signature; - p_info_arr[i].call_count = info[i].call_count; - p_info_arr[i].total_time = info[i].total_time; - p_info_arr[i].self_time = info[i].self_time; - godot_string_name_destroy(&info[i].signature); - } - } -#endif - return info_count; -} - -int PluginScriptLanguage::profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max) { - int info_count = 0; -#ifdef DEBUG_ENABLED - if (_desc.profiling_get_frame_data) { - godot_pluginscript_profiling_data *info = (godot_pluginscript_profiling_data *)memalloc( - sizeof(godot_pluginscript_profiling_data) * p_info_max); - info_count = _desc.profiling_get_frame_data(_data, info, p_info_max); - for (int i = 0; i < info_count; ++i) { - p_info_arr[i].signature = *(StringName *)&info[i].signature; - p_info_arr[i].call_count = info[i].call_count; - p_info_arr[i].total_time = info[i].total_time; - p_info_arr[i].self_time = info[i].self_time; - godot_string_name_destroy(&info[i].signature); - } - } -#endif - return info_count; -} - -void PluginScriptLanguage::frame() { -#ifdef DEBUG_ENABLED - if (_desc.profiling_frame) { - _desc.profiling_frame(_data); - } -#endif -} - -/* DEBUGGER FUNCTIONS */ - -String PluginScriptLanguage::debug_get_error() const { - if (_desc.debug_get_error) { - godot_string tmp = _desc.debug_get_error(_data); - String ret = *(String *)&tmp; - godot_string_destroy(&tmp); - return ret; - } - return String("Nothing"); -} - -int PluginScriptLanguage::debug_get_stack_level_count() const { - if (_desc.debug_get_stack_level_count) { - return _desc.debug_get_stack_level_count(_data); - } - return 1; -} - -int PluginScriptLanguage::debug_get_stack_level_line(int p_level) const { - if (_desc.debug_get_stack_level_line) { - return _desc.debug_get_stack_level_line(_data, p_level); - } - return 1; -} - -String PluginScriptLanguage::debug_get_stack_level_function(int p_level) const { - if (_desc.debug_get_stack_level_function) { - godot_string tmp = _desc.debug_get_stack_level_function(_data, p_level); - String ret = *(String *)&tmp; - godot_string_destroy(&tmp); - return ret; - } - return String("Nothing"); -} - -String PluginScriptLanguage::debug_get_stack_level_source(int p_level) const { - if (_desc.debug_get_stack_level_source) { - godot_string tmp = _desc.debug_get_stack_level_source(_data, p_level); - String ret = *(String *)&tmp; - godot_string_destroy(&tmp); - return ret; - } - return String("Nothing"); -} - -void PluginScriptLanguage::debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) { - if (_desc.debug_get_stack_level_locals) { - PackedStringArray locals; - Array values; - _desc.debug_get_stack_level_locals(_data, p_level, (godot_packed_string_array *)&locals, (godot_array *)&values, p_max_subitems, p_max_depth); - for (int i = 0; i < locals.size(); i++) { - p_locals->push_back(locals[i]); - } - for (int i = 0; i < values.size(); i++) { - p_values->push_back(values[i]); - } - } -} - -void PluginScriptLanguage::debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) { - if (_desc.debug_get_stack_level_members) { - PackedStringArray members; - Array values; - _desc.debug_get_stack_level_members(_data, p_level, (godot_packed_string_array *)&members, (godot_array *)&values, p_max_subitems, p_max_depth); - for (int i = 0; i < members.size(); i++) { - p_members->push_back(members[i]); - } - for (int i = 0; i < values.size(); i++) { - p_values->push_back(values[i]); - } - } -} - -void PluginScriptLanguage::debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) { - if (_desc.debug_get_globals) { - PackedStringArray locals; - Array values; - _desc.debug_get_globals(_data, (godot_packed_string_array *)&locals, (godot_array *)&values, p_max_subitems, p_max_depth); - for (int i = 0; i < locals.size(); i++) { - p_locals->push_back(locals[i]); - } - for (int i = 0; i < values.size(); i++) { - p_values->push_back(values[i]); - } - } -} - -String PluginScriptLanguage::debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth) { - if (_desc.debug_parse_stack_level_expression) { - godot_string tmp = _desc.debug_parse_stack_level_expression(_data, p_level, (godot_string *)&p_expression, p_max_subitems, p_max_depth); - String ret = *(String *)&tmp; - godot_string_destroy(&tmp); - return ret; - } - return String("Nothing"); -} - -void PluginScriptLanguage::reload_all_scripts() { - // TODO -} - -void PluginScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload) { -#ifdef DEBUG_ENABLED - lock(); - // TODO - unlock(); -#endif -} - -bool PluginScriptLanguage::handles_global_class_type(const String &p_type) const { - return p_type == "PluginScript"; -} - -String PluginScriptLanguage::get_global_class_name(const String &p_path, String *r_base_type, String *r_icon_path) const { - if (!p_path.is_empty()) { - Ref<PluginScript> script = ResourceLoader::load(p_path, "PluginScript"); - if (script.is_valid()) { - if (r_base_type) { - *r_base_type = script->get_instance_base_type(); - } - if (r_icon_path) { - *r_icon_path = script->get_script_class_icon_path(); - } - return script->get_script_class_name(); - } - if (r_base_type) { - *r_base_type = String(); - } - if (r_icon_path) { - *r_icon_path = String(); - } - } - return String(); -} - -void PluginScriptLanguage::lock() { - _lock.lock(); -} - -void PluginScriptLanguage::unlock() { - _lock.unlock(); -} - -PluginScriptLanguage::PluginScriptLanguage(const godot_pluginscript_language_desc *desc) : - _desc(*desc) { - _resource_loader = Ref<ResourceFormatLoaderPluginScript>(memnew(ResourceFormatLoaderPluginScript(this))); - _resource_saver = Ref<ResourceFormatSaverPluginScript>(memnew(ResourceFormatSaverPluginScript(this))); -} - -PluginScriptLanguage::~PluginScriptLanguage() { -} diff --git a/modules/gdnative/pluginscript/pluginscript_language.h b/modules/gdnative/pluginscript/pluginscript_language.h deleted file mode 100644 index 6039f807a8..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_language.h +++ /dev/null @@ -1,138 +0,0 @@ -/*************************************************************************/ -/* pluginscript_language.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef PLUGINSCRIPT_LANGUAGE_H -#define PLUGINSCRIPT_LANGUAGE_H - -// Godot imports -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/object/script_language.h" -#include "core/templates/map.h" -#include "core/templates/self_list.h" -// PluginScript imports -#include "pluginscript_loader.h" -#include <pluginscript/godot_pluginscript.h> - -class PluginScript; -class PluginScriptInstance; - -class PluginScriptLanguage : public ScriptLanguage { - friend class PluginScript; - friend class PluginScriptInstance; - - Ref<ResourceFormatLoaderPluginScript> _resource_loader; - Ref<ResourceFormatSaverPluginScript> _resource_saver; - const godot_pluginscript_language_desc _desc; - godot_pluginscript_language_data *_data; - - Mutex _lock; - SelfList<PluginScript>::List _script_list; - -public: - virtual String get_name() const; - - _FORCE_INLINE_ Ref<ResourceFormatLoaderPluginScript> get_resource_loader() { return _resource_loader; } - _FORCE_INLINE_ Ref<ResourceFormatSaverPluginScript> get_resource_saver() { return _resource_saver; } - - /* LANGUAGE FUNCTIONS */ - virtual void init(); - virtual String get_type() const; - virtual String get_extension() const; - virtual Error execute_file(const String &p_path); - virtual void finish(); - - /* EDITOR FUNCTIONS */ - virtual void get_reserved_words(List<String> *p_words) const; - virtual bool is_control_flow_keyword(String p_keyword) const; - virtual void get_comment_delimiters(List<String> *p_delimiters) const; - virtual void get_string_delimiters(List<String> *p_delimiters) const; - virtual Ref<Script> get_template(const String &p_class_name, const String &p_base_class_name) const; - virtual bool validate(const String &p_script, const String &p_path = "", List<String> *r_functions = nullptr, List<ScriptLanguage::ScriptError> *r_errors = nullptr, List<ScriptLanguage::Warning> *r_warnings = nullptr, Set<int> *r_safe_lines = nullptr) const; - virtual Script *create_script() const; - virtual bool has_named_classes() const; - virtual bool supports_builtin_mode() const; - virtual bool can_inherit_from_file() const; - virtual int find_function(const String &p_function, const String &p_code) const; - virtual String make_function(const String &p_class, const String &p_name, const PackedStringArray &p_args) const; - virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptCodeCompletionOption> *r_options, bool &r_force, String &r_call_hint); - virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const; - virtual void add_global_constant(const StringName &p_variable, const Variant &p_value); - - /* MULTITHREAD FUNCTIONS */ - - //some VMs need to be notified of thread creation/exiting to allocate a stack - // void thread_enter() {} - // void thread_exit() {} - - /* DEBUGGER FUNCTIONS */ - - virtual String debug_get_error() const; - virtual int debug_get_stack_level_count() const; - virtual int debug_get_stack_level_line(int p_level) const; - virtual String debug_get_stack_level_function(int p_level) const; - virtual String debug_get_stack_level_source(int p_level) const; - virtual void debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1); - virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1); - virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1); - virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems = -1, int p_max_depth = -1); - - // virtual Vector<StackInfo> debug_get_current_stack_info() { return Vector<StackInfo>(); } - - virtual void reload_all_scripts(); - virtual void reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload); - - /* LOADER FUNCTIONS */ - - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual void get_public_functions(List<MethodInfo> *p_functions) const; - virtual void get_public_constants(List<Pair<String, Variant>> *p_constants) const; - - virtual void profiling_start(); - virtual void profiling_stop(); - - virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max); - virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max); - - virtual void frame(); - - /* GLOBAL CLASSES */ - - virtual bool handles_global_class_type(const String &p_type) const; - virtual String get_global_class_name(const String &p_path, String *r_base_type = nullptr, String *r_icon_path = nullptr) const; - - void lock(); - void unlock(); - - PluginScriptLanguage(const godot_pluginscript_language_desc *desc); - virtual ~PluginScriptLanguage(); -}; - -#endif // PLUGINSCRIPT_LANGUAGE_H diff --git a/modules/gdnative/pluginscript/pluginscript_loader.cpp b/modules/gdnative/pluginscript/pluginscript_loader.cpp deleted file mode 100644 index a151d551dc..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_loader.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/*************************************************************************/ -/* pluginscript_loader.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -// Godot imports -#include "core/io/file_access.h" -// Pythonscript imports -#include "pluginscript_language.h" -#include "pluginscript_loader.h" -#include "pluginscript_script.h" - -ResourceFormatLoaderPluginScript::ResourceFormatLoaderPluginScript(PluginScriptLanguage *language) { - _language = language; -} - -RES ResourceFormatLoaderPluginScript::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) { - if (r_error) { - *r_error = ERR_FILE_CANT_OPEN; - } - - PluginScript *script = memnew(PluginScript); - script->init(_language); - - Ref<PluginScript> scriptres(script); - - Error err = script->load_source_code(p_path); - ERR_FAIL_COND_V(err != OK, RES()); - - script->set_path(p_original_path); - - script->reload(); - - if (r_error) { - *r_error = OK; - } - - return scriptres; -} - -void ResourceFormatLoaderPluginScript::get_recognized_extensions(List<String> *p_extensions) const { - p_extensions->push_back(_language->get_extension()); -} - -bool ResourceFormatLoaderPluginScript::handles_type(const String &p_type) const { - return p_type == "Script" || p_type == _language->get_type(); -} - -String ResourceFormatLoaderPluginScript::get_resource_type(const String &p_path) const { - String el = p_path.get_extension().to_lower(); - if (el == _language->get_extension()) { - return _language->get_type(); - } - return ""; -} - -ResourceFormatSaverPluginScript::ResourceFormatSaverPluginScript(PluginScriptLanguage *language) { - _language = language; -} - -Error ResourceFormatSaverPluginScript::save(const String &p_path, const RES &p_resource, uint32_t p_flags) { - Ref<PluginScript> sqscr = p_resource; - ERR_FAIL_COND_V(sqscr.is_null(), ERR_INVALID_PARAMETER); - - String source = sqscr->get_source_code(); - - Error err; - FileAccess *file = FileAccess::open(p_path, FileAccess::WRITE, &err); - ERR_FAIL_COND_V(err, err); - - file->store_string(source); - if (file->get_error() != OK && file->get_error() != ERR_FILE_EOF) { - memdelete(file); - return ERR_CANT_CREATE; - } - file->close(); - memdelete(file); - return OK; -} - -void ResourceFormatSaverPluginScript::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const { - if (Object::cast_to<PluginScript>(*p_resource)) { - p_extensions->push_back(_language->get_extension()); - } -} - -bool ResourceFormatSaverPluginScript::recognize(const RES &p_resource) const { - return Object::cast_to<PluginScript>(*p_resource) != nullptr; -} diff --git a/modules/gdnative/pluginscript/pluginscript_loader.h b/modules/gdnative/pluginscript/pluginscript_loader.h deleted file mode 100644 index bcce742aea..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_loader.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************/ -/* pluginscript_loader.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef PYTHONSCRIPT_PY_LOADER_H -#define PYTHONSCRIPT_PY_LOADER_H - -// Godot imports -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/object/script_language.h" - -class PluginScriptLanguage; - -class ResourceFormatLoaderPluginScript : public ResourceFormatLoader { - PluginScriptLanguage *_language; - -public: - ResourceFormatLoaderPluginScript(PluginScriptLanguage *language); - virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE); - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String &p_type) const; - virtual String get_resource_type(const String &p_path) const; -}; - -class ResourceFormatSaverPluginScript : public ResourceFormatSaver { - PluginScriptLanguage *_language; - -public: - ResourceFormatSaverPluginScript(PluginScriptLanguage *language); - virtual Error save(const String &p_path, const RES &p_resource, uint32_t p_flags = 0); - virtual void get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const; - virtual bool recognize(const RES &p_resource) const; -}; - -#endif // PYTHONSCRIPT_PY_LOADER_H diff --git a/modules/gdnative/pluginscript/pluginscript_script.cpp b/modules/gdnative/pluginscript/pluginscript_script.cpp deleted file mode 100644 index ec3c9eb4ff..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_script.cpp +++ /dev/null @@ -1,510 +0,0 @@ -/*************************************************************************/ -/* pluginscript_script.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -// Godot imports -#include "core/io/file_access.h" -// PluginScript imports -#include "pluginscript_instance.h" -#include "pluginscript_script.h" - -#include <stdint.h> - -#ifdef DEBUG_ENABLED -#define __ASSERT_SCRIPT_REASON "Cannot retrieve PluginScript class for this script, is your code correct?" -#define ASSERT_SCRIPT_VALID() \ - { \ - ERR_FAIL_COND_MSG(!can_instantiate(), __ASSERT_SCRIPT_REASON); \ - } -#define ASSERT_SCRIPT_VALID_V(ret) \ - { \ - ERR_FAIL_COND_V_MSG(!can_instantiate(), ret, __ASSERT_SCRIPT_REASON); \ - } -#else -#define ASSERT_SCRIPT_VALID() -#define ASSERT_SCRIPT_VALID_V(ret) -#endif - -void PluginScript::_bind_methods() { - ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "new", &PluginScript::_new, MethodInfo("new")); -} - -PluginScriptInstance *PluginScript::_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, Callable::CallError &r_error) { - r_error.error = Callable::CallError::CALL_OK; - - // Create instance - PluginScriptInstance *instance = memnew(PluginScriptInstance()); - - if (instance->init(this, p_owner)) { - _language->lock(); - _instances.insert(instance->get_owner()); - _language->unlock(); - } else { - r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL; - memdelete(instance); - ERR_FAIL_V(nullptr); - } - - // Construct - // TODO: Support arguments in the constructor? - // There is currently no way to get the constructor function name of the script. - // instance->call("__init__", p_args, p_argcount, r_error); - if (p_argcount > 0) { - WARN_PRINT("PluginScript doesn't support arguments in the constructor"); - } - - return instance; -} - -Variant PluginScript::_new(const Variant **p_args, int p_argcount, Callable::CallError &r_error) { - r_error.error = Callable::CallError::CALL_OK; - - if (!_valid) { - r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; - return Variant(); - } - - REF ref; - Object *owner = nullptr; - - if (get_instance_base_type() == StringName()) { - owner = memnew(RefCounted); - } else { - owner = ClassDB::instantiate(get_instance_base_type()); - } - - if (!owner) { - r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL; - return Variant(); - } - - RefCounted *r = Object::cast_to<RefCounted>(owner); - if (r) { - ref = REF(r); - } - - PluginScriptInstance *instance = _create_instance(p_args, p_argcount, owner, r_error); - - if (!instance) { - if (ref.is_null()) { - memdelete(owner); //no owner, sorry - } - return Variant(); - } - - if (ref.is_valid()) { - return ref; - } else { - return owner; - } -} - -#ifdef TOOLS_ENABLED - -void PluginScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) { - placeholders.erase(p_placeholder); -} - -#endif - -bool PluginScript::can_instantiate() const { - bool can = _valid || (!_tool && !ScriptServer::is_scripting_enabled()); - return can; -} - -bool PluginScript::inherits_script(const Ref<Script> &p_script) const { - Ref<PluginScript> ps = p_script; - if (ps.is_null()) { - return false; - } - - const PluginScript *s = this; - - while (s) { - if (s == p_script.ptr()) { - return true; - } - s = Object::cast_to<PluginScript>(s->_ref_base_parent.ptr()); - } - - return false; -} - -Ref<Script> PluginScript::get_base_script() const { - if (_ref_base_parent.is_valid()) { - return Ref<PluginScript>(_ref_base_parent); - } else { - return Ref<Script>(); - } -} - -StringName PluginScript::get_instance_base_type() const { - if (_native_parent) { - return _native_parent; - } - if (_ref_base_parent.is_valid()) { - return _ref_base_parent->get_instance_base_type(); - } - return StringName(); -} - -void PluginScript::update_exports() { -#ifdef TOOLS_ENABLED - ASSERT_SCRIPT_VALID(); - if (placeholders.size()) { - //update placeholders if any - Map<StringName, Variant> propdefvalues; - List<PropertyInfo> propinfos; - - get_script_property_list(&propinfos); - for (Set<PlaceHolderScriptInstance *>::Element *E = placeholders.front(); E; E = E->next()) { - E->get()->update(propinfos, _properties_default_values); - } - } -#endif -} - -// TODO: rename p_this "p_owner" ? -ScriptInstance *PluginScript::instance_create(Object *p_this) { - ASSERT_SCRIPT_VALID_V(nullptr); - // TODO check script validity ? - if (!_tool && !ScriptServer::is_scripting_enabled()) { -#ifdef TOOLS_ENABLED - // Instance a fake script for editing the values - PlaceHolderScriptInstance *si = memnew(PlaceHolderScriptInstance(get_language(), Ref<Script>(this), p_this)); - placeholders.insert(si); - update_exports(); - return si; -#else - return nullptr; -#endif - } - - StringName base_type = get_instance_base_type(); - if (base_type) { - if (!ClassDB::is_parent_class(p_this->get_class_name(), base_type)) { - String msg = "Script inherits from native type '" + String(base_type) + "', so it can't be instantiated in object of type: '" + p_this->get_class() + "'"; - // TODO: implement PluginscriptLanguage::debug_break_parse - // if (EngineDebugger::is_active()) { - // _language->debug_break_parse(get_path(), 0, msg); - // } - ERR_FAIL_V_MSG(nullptr, msg); - } - } - - Callable::CallError unchecked_error; - return _create_instance(nullptr, 0, p_this, unchecked_error); -} - -bool PluginScript::instance_has(const Object *p_this) const { - ERR_FAIL_COND_V(!_language, false); - - _language->lock(); - bool hasit = _instances.has((Object *)p_this); - _language->unlock(); - return hasit; -} - -bool PluginScript::has_source_code() const { - return !_source.is_empty(); -} - -String PluginScript::get_source_code() const { - return _source; -} - -void PluginScript::set_source_code(const String &p_code) { - if (_source == p_code) { - return; - } - _source = p_code; -} - -Error PluginScript::reload(bool p_keep_state) { - ERR_FAIL_COND_V(!_language, ERR_UNCONFIGURED); - - _language->lock(); - ERR_FAIL_COND_V(!p_keep_state && _instances.size(), ERR_ALREADY_IN_USE); - _language->unlock(); - - _valid = false; - String basedir = _path; - - if (basedir.is_empty()) { - basedir = get_path(); - } - - if (!basedir.is_empty()) { - basedir = basedir.get_base_dir(); - } - - if (_data) { - _desc->finish(_data); - } - - Error err; - godot_pluginscript_script_manifest manifest = _desc->init( - _language->_data, - (godot_string *)&_path, - (godot_string *)&_source, - (godot_error *)&err); -// Manifest's attributes must be explicitly freed -#define FREE_SCRIPT_MANIFEST(manifest) \ - { \ - godot_string_name_destroy(&manifest.name); \ - godot_string_name_destroy(&manifest.base); \ - godot_dictionary_destroy(&manifest.member_lines); \ - godot_array_destroy(&manifest.methods); \ - godot_array_destroy(&manifest.signals); \ - godot_array_destroy(&manifest.properties); \ - } - - if (err) { - FREE_SCRIPT_MANIFEST(manifest); - // TODO: GDscript uses `ScriptDebugger` here to jump into the parsing error - return err; - } - - // Script's parent is passed as base_name which can make reference to a - // ClassDB name (i.e. `Node2D`) or a resource path (i.e. `res://foo/bar.gd`) - StringName *base_name = (StringName *)&manifest.base; - if (*base_name) { - if (ClassDB::class_exists(*base_name)) { - _native_parent = *base_name; - } else { - Ref<Script> res = ResourceLoader::load(*base_name); - if (res.is_valid()) { - _ref_base_parent = res; - } else { - String name = *(StringName *)&manifest.name; - FREE_SCRIPT_MANIFEST(manifest); - ERR_FAIL_V_MSG(ERR_PARSE_ERROR, _path + ": Script '" + name + "' has an invalid parent '" + *base_name + "'."); - } - } - } - - _valid = true; - // Use the manifest to configure this script object - _data = manifest.data; - _name = *(StringName *)&manifest.name; - _tool = manifest.is_tool; - _icon_path = *(String *)&manifest.icon_path; - - Dictionary *members = (Dictionary *)&manifest.member_lines; - for (const Variant *key = members->next(); key != nullptr; key = members->next(key)) { - _member_lines[*key] = (*members)[*key]; - } - Array *methods = (Array *)&manifest.methods; - _rpc_methods.clear(); - if (_ref_base_parent.is_valid()) { - /// XXX TODO Should this be _rpc_methods.append_array(...) - _rpc_methods = _ref_base_parent->get_rpc_methods(); - } - for (int i = 0; i < methods->size(); ++i) { - Dictionary v = (*methods)[i]; - MethodInfo mi = MethodInfo::from_dict(v); - _methods_info[mi.name] = mi; - // rpc_mode is passed as an optional field and is not part of MethodInfo - Variant var = v["rpc_mode"]; - if (var != Variant()) { - Multiplayer::RPCConfig nd; - nd.name = mi.name; - nd.rpc_mode = Multiplayer::RPCMode(int(var)); - // TODO Transfer Channel - if (_rpc_methods.find(nd) == -1) { - _rpc_methods.push_back(nd); - } - } - } - - // Sort so we are 100% that they are always the same. - _rpc_methods.sort_custom<Multiplayer::SortRPCConfig>(); - - Array *signals = (Array *)&manifest.signals; - for (int i = 0; i < signals->size(); ++i) { - Variant v = (*signals)[i]; - MethodInfo mi = MethodInfo::from_dict(v); - _signals_info[mi.name] = mi; - } - Array *properties = (Array *)&manifest.properties; - for (int i = 0; i < properties->size(); ++i) { - Dictionary v = (*properties)[i]; - PropertyInfo pi = PropertyInfo::from_dict(v); - _properties_info[pi.name] = pi; - _properties_default_values[pi.name] = v["default_value"]; - } - - FREE_SCRIPT_MANIFEST(manifest); - return OK; -#undef FREE_SCRIPT_MANIFEST -} - -void PluginScript::get_script_method_list(List<MethodInfo> *r_methods) const { - ASSERT_SCRIPT_VALID(); - for (Map<StringName, MethodInfo>::Element *e = _methods_info.front(); e != nullptr; e = e->next()) { - r_methods->push_back(e->get()); - } -} - -void PluginScript::get_script_property_list(List<PropertyInfo> *r_properties) const { - ASSERT_SCRIPT_VALID(); - for (Map<StringName, PropertyInfo>::Element *e = _properties_info.front(); e != nullptr; e = e->next()) { - r_properties->push_back(e->get()); - } -} - -bool PluginScript::has_method(const StringName &p_method) const { - ASSERT_SCRIPT_VALID_V(false); - return _methods_info.has(p_method); -} - -MethodInfo PluginScript::get_method_info(const StringName &p_method) const { - ASSERT_SCRIPT_VALID_V(MethodInfo()); - const Map<StringName, MethodInfo>::Element *e = _methods_info.find(p_method); - if (e != nullptr) { - return e->get(); - } else { - return MethodInfo(); - } -} - -bool PluginScript::has_property(const StringName &p_method) const { - ASSERT_SCRIPT_VALID_V(false); - return _properties_info.has(p_method); -} - -PropertyInfo PluginScript::get_property_info(const StringName &p_property) const { - ASSERT_SCRIPT_VALID_V(PropertyInfo()); - const Map<StringName, PropertyInfo>::Element *e = _properties_info.find(p_property); - if (e != nullptr) { - return e->get(); - } else { - return PropertyInfo(); - } -} - -bool PluginScript::get_property_default_value(const StringName &p_property, Variant &r_value) const { - ASSERT_SCRIPT_VALID_V(false); -#ifdef TOOLS_ENABLED - const Map<StringName, Variant>::Element *e = _properties_default_values.find(p_property); - if (e != nullptr) { - r_value = e->get(); - return true; - } else { - return false; - } -#endif - return false; -} - -ScriptLanguage *PluginScript::get_language() const { - return _language; -} - -Error PluginScript::load_source_code(const String &p_path) { - Vector<uint8_t> sourcef; - Error err; - FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err); - ERR_FAIL_COND_V_MSG(err, err, "Cannot open file '" + p_path + "'."); - - uint64_t len = f->get_length(); - sourcef.resize(len + 1); - uint8_t *w = sourcef.ptrw(); - uint64_t r = f->get_buffer(w, len); - f->close(); - memdelete(f); - ERR_FAIL_COND_V(r != len, ERR_CANT_OPEN); - w[len] = 0; - - String s; - if (s.parse_utf8((const char *)w)) { - ERR_FAIL_V_MSG(ERR_INVALID_DATA, "Script '" + p_path + "' contains invalid unicode (UTF-8), so it was not loaded. Please ensure that scripts are saved in valid UTF-8 unicode."); - } - - _source = s; -#ifdef TOOLS_ENABLED -// source_changed_cache=true; -#endif - _path = p_path; - return OK; -} - -bool PluginScript::has_script_signal(const StringName &p_signal) const { - ASSERT_SCRIPT_VALID_V(false); - return _signals_info.has(p_signal); -} - -void PluginScript::get_script_signal_list(List<MethodInfo> *r_signals) const { - ASSERT_SCRIPT_VALID(); - for (Map<StringName, MethodInfo>::Element *e = _signals_info.front(); e != nullptr; e = e->next()) { - r_signals->push_back(e->get()); - } -} - -int PluginScript::get_member_line(const StringName &p_member) const { -#ifdef TOOLS_ENABLED - if (_member_lines.has(p_member)) { - return _member_lines[p_member]; - } -#endif - return -1; -} - -const Vector<Multiplayer::RPCConfig> PluginScript::get_rpc_methods() const { - return _rpc_methods; -} - -PluginScript::PluginScript() : - _script_list(this) { -} - -void PluginScript::init(PluginScriptLanguage *language) { - _desc = &language->_desc.script_desc; - _language = language; - -#ifdef DEBUG_ENABLED - _language->lock(); - _language->_script_list.add(&_script_list); - _language->unlock(); -#endif -} - -PluginScript::~PluginScript() { - if (_desc && _data) { - _desc->finish(_data); - } - -#ifdef DEBUG_ENABLED - if (_language) { - _language->lock(); - _language->_script_list.remove(&_script_list); - _language->unlock(); - } -#endif -} diff --git a/modules/gdnative/pluginscript/pluginscript_script.h b/modules/gdnative/pluginscript/pluginscript_script.h deleted file mode 100644 index 73c486f6d9..0000000000 --- a/modules/gdnative/pluginscript/pluginscript_script.h +++ /dev/null @@ -1,146 +0,0 @@ -/*************************************************************************/ -/* pluginscript_script.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef PLUGINSCRIPT_SCRIPT_H -#define PLUGINSCRIPT_SCRIPT_H - -// Godot imports - -#include "core/doc_data.h" -#include "core/object/script_language.h" -// PluginScript imports -#include "pluginscript_language.h" -#include <pluginscript/godot_pluginscript.h> - -class PluginScript : public Script { - GDCLASS(PluginScript, Script); - - friend class PluginScriptInstance; - friend class PluginScriptLanguage; - -private: - godot_pluginscript_script_data *_data = nullptr; - const godot_pluginscript_script_desc *_desc = nullptr; - PluginScriptLanguage *_language = nullptr; - bool _tool = false; - bool _valid = false; - - Ref<Script> _ref_base_parent; - StringName _native_parent; - SelfList<PluginScript> _script_list; - - Map<StringName, int> _member_lines; - Map<StringName, Variant> _properties_default_values; - Map<StringName, PropertyInfo> _properties_info; - Map<StringName, MethodInfo> _signals_info; - Map<StringName, MethodInfo> _methods_info; - Vector<Multiplayer::RPCConfig> _rpc_methods; - - Set<Object *> _instances; - //exported members - String _source; - String _path; - StringName _name; - String _icon_path; - -protected: - static void _bind_methods(); - - bool inherits_script(const Ref<Script> &p_script) const override; - - PluginScriptInstance *_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, Callable::CallError &r_error); - Variant _new(const Variant **p_args, int p_argcount, Callable::CallError &r_error); - -#ifdef TOOLS_ENABLED - Set<PlaceHolderScriptInstance *> placeholders; - //void _update_placeholder(PlaceHolderScriptInstance *p_placeholder); - virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder) override; -#endif -public: - String get_script_class_name() const { - return _name; - } - - String get_script_class_icon_path() const { - return _icon_path; - } - - virtual bool can_instantiate() const override; - - virtual Ref<Script> get_base_script() const override; //for script inheritance - - virtual StringName get_instance_base_type() const override; // this may not work in all scripts, will return empty if so - virtual ScriptInstance *instance_create(Object *p_this) override; - virtual bool instance_has(const Object *p_this) const override; - - virtual bool has_source_code() const override; - virtual String get_source_code() const override; - virtual void set_source_code(const String &p_code) override; - virtual Error reload(bool p_keep_state = false) override; - // TODO: load_source_code only allow utf-8 file, should handle bytecode as well ? - virtual Error load_source_code(const String &p_path); - -#ifdef TOOLS_ENABLED - virtual const Vector<DocData::ClassDoc> &get_documentation() const override { - static Vector<DocData::ClassDoc> docs; - return docs; - } -#endif // TOOLS_ENABLED - - virtual bool has_method(const StringName &p_method) const override; - virtual MethodInfo get_method_info(const StringName &p_method) const override; - - bool has_property(const StringName &p_method) const; - PropertyInfo get_property_info(const StringName &p_property) const; - - bool is_tool() const override { return _tool; } - bool is_valid() const override { return true; } - - virtual ScriptLanguage *get_language() const override; - - virtual bool has_script_signal(const StringName &p_signal) const override; - virtual void get_script_signal_list(List<MethodInfo> *r_signals) const override; - - virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const override; - - virtual void update_exports() override; - virtual void get_script_method_list(List<MethodInfo> *r_methods) const override; - virtual void get_script_property_list(List<PropertyInfo> *r_properties) const override; - - virtual int get_member_line(const StringName &p_member) const override; - - virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const override; - - PluginScript(); - void init(PluginScriptLanguage *language); - virtual ~PluginScript(); -}; - -#endif // PLUGINSCRIPT_SCRIPT_H diff --git a/modules/gdnative/pluginscript/register_types.cpp b/modules/gdnative/pluginscript/register_types.cpp deleted file mode 100644 index 39c8124c17..0000000000 --- a/modules/gdnative/pluginscript/register_types.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/*************************************************************************/ -/* register_types.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "register_types.h" - -#include "core/config/project_settings.h" -#include "core/io/dir_access.h" -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/os/os.h" -#include "scene/main/scene_tree.h" - -#include "pluginscript_language.h" -#include "pluginscript_script.h" -#include <pluginscript/godot_pluginscript.h> - -static List<PluginScriptLanguage *> pluginscript_languages; - -static Error _check_language_desc(const godot_pluginscript_language_desc *desc) { - ERR_FAIL_COND_V(!desc->name, ERR_BUG); - ERR_FAIL_COND_V(!desc->type, ERR_BUG); - ERR_FAIL_COND_V(!desc->extension, ERR_BUG); - ERR_FAIL_COND_V(!desc->recognized_extensions || !desc->recognized_extensions[0], ERR_BUG); - ERR_FAIL_COND_V(!desc->init, ERR_BUG); - ERR_FAIL_COND_V(!desc->finish, ERR_BUG); - - // desc->reserved_words is not mandatory - // desc->comment_delimiters is not mandatory - // desc->string_delimiters is not mandatory - - // desc->get_template_source_code is not mandatory - // desc->validate is not mandatory - - // desc->get_template_source_code is not mandatory - // desc->validate is not mandatory - // desc->find_function is not mandatory - // desc->make_function is not mandatory - // desc->complete_code is not mandatory - // desc->auto_indent_code is not mandatory - ERR_FAIL_COND_V(!desc->add_global_constant, ERR_BUG); - // desc->debug_get_error is not mandatory - // desc->debug_get_stack_level_count is not mandatory - // desc->debug_get_stack_level_line is not mandatory - // desc->debug_get_stack_level_function is not mandatory - // desc->debug_get_stack_level_source is not mandatory - // desc->debug_get_stack_level_locals is not mandatory - // desc->debug_get_stack_level_members is not mandatory - // desc->debug_get_globals is not mandatory - // desc->debug_parse_stack_level_expression is not mandatory - // desc->profiling_start is not mandatory - // desc->profiling_stop is not mandatory - // desc->profiling_get_accumulated_data is not mandatory - // desc->profiling_get_frame_data is not mandatory - // desc->profiling_frame is not mandatory - - ERR_FAIL_COND_V(!desc->script_desc.init, ERR_BUG); - ERR_FAIL_COND_V(!desc->script_desc.finish, ERR_BUG); - - ERR_FAIL_COND_V(!desc->script_desc.instance_desc.init, ERR_BUG); - ERR_FAIL_COND_V(!desc->script_desc.instance_desc.finish, ERR_BUG); - ERR_FAIL_COND_V(!desc->script_desc.instance_desc.set_prop, ERR_BUG); - ERR_FAIL_COND_V(!desc->script_desc.instance_desc.get_prop, ERR_BUG); - ERR_FAIL_COND_V(!desc->script_desc.instance_desc.call_method, ERR_BUG); - ERR_FAIL_COND_V(!desc->script_desc.instance_desc.notification, ERR_BUG); - // desc->script_desc.instance_desc.refcount_incremented is not mandatory - // desc->script_desc.instance_desc.refcount_decremented is not mandatory - return OK; -} - -void GDAPI godot_pluginscript_register_language(const godot_pluginscript_language_desc *language_desc) { - Error ret = _check_language_desc(language_desc); - if (ret) { - ERR_FAIL(); - } - PluginScriptLanguage *language = memnew(PluginScriptLanguage(language_desc)); - ScriptServer::register_language(language); - ResourceLoader::add_resource_format_loader(language->get_resource_loader()); - ResourceSaver::add_resource_format_saver(language->get_resource_saver()); - pluginscript_languages.push_back(language); -} - -void register_pluginscript_types() { - GDREGISTER_CLASS(PluginScript); -} - -void unregister_pluginscript_types() { - for (List<PluginScriptLanguage *>::Element *e = pluginscript_languages.front(); e; e = e->next()) { - PluginScriptLanguage *language = e->get(); - ScriptServer::unregister_language(language); - ResourceLoader::remove_resource_format_loader(language->get_resource_loader()); - ResourceSaver::remove_resource_format_saver(language->get_resource_saver()); - memdelete(language); - } -} diff --git a/modules/gdnative/pluginscript/register_types.h b/modules/gdnative/pluginscript/register_types.h deleted file mode 100644 index 49e7357a98..0000000000 --- a/modules/gdnative/pluginscript/register_types.h +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************/ -/* register_types.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef PLUGINSCRIPT_REGISTER_TYPES_H -#define PLUGINSCRIPT_REGISTER_TYPES_H - -void register_pluginscript_types(); -void unregister_pluginscript_types(); - -#endif // PLUGINSCRIPT_REGISTER_TYPES_H diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp deleted file mode 100644 index 1121fd0e03..0000000000 --- a/modules/gdnative/register_types.cpp +++ /dev/null @@ -1,360 +0,0 @@ -/*************************************************************************/ -/* register_types.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "register_types.h" - -#include "gdnative/gdnative.h" - -#include "gdnative.h" - -#include "nativescript/register_types.h" -#include "pluginscript/register_types.h" -#include "videodecoder/register_types.h" - -#include "core/config/engine.h" -#include "core/config/project_settings.h" -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/os/os.h" - -#ifdef TOOLS_ENABLED -#include "editor/editor_export.h" -#include "editor/editor_node.h" -#include "gdnative_library_editor_plugin.h" -#include "gdnative_library_singleton_editor.h" - -class GDNativeExportPlugin : public EditorExportPlugin { -protected: - virtual void _export_file(const String &p_path, const String &p_type, const Set<String> &p_features); -}; - -struct LibrarySymbol { - const char *name; - bool is_required; -}; - -void GDNativeExportPlugin::_export_file(const String &p_path, const String &p_type, const Set<String> &p_features) { - if (p_type != "GDNativeLibrary") { - return; - } - - Ref<GDNativeLibrary> lib = ResourceLoader::load(p_path); - - if (lib.is_null()) { - return; - } - - Ref<ConfigFile> config = lib->get_config_file(); - - { - List<String> entry_keys; - config->get_section_keys("entry", &entry_keys); - - for (const String &key : entry_keys) { - Vector<String> tags = key.split("."); - - bool skip = false; - for (int i = 0; i < tags.size(); i++) { - bool has_feature = p_features.has(tags[i]); - - if (!has_feature) { - skip = true; - break; - } - } - - if (skip) { - continue; - } - - String entry_lib_path = config->get_value("entry", key); - if (!entry_lib_path.begins_with("res://")) { - print_line("Skipping export of out-of-project library " + entry_lib_path); - continue; - } - - add_shared_object(entry_lib_path, tags); - } - } - - { - List<String> dependency_keys; - config->get_section_keys("dependencies", &dependency_keys); - - for (const String &key : dependency_keys) { - Vector<String> tags = key.split("."); - - bool skip = false; - for (int i = 0; i < tags.size(); i++) { - bool has_feature = p_features.has(tags[i]); - - if (!has_feature) { - skip = true; - break; - } - } - - if (skip) { - continue; - } - - Vector<String> dependency_paths = config->get_value("dependencies", key); - for (int i = 0; i < dependency_paths.size(); i++) { - if (!dependency_paths[i].begins_with("res://")) { - print_line("Skipping export of out-of-project library " + dependency_paths[i]); - continue; - } - add_shared_object(dependency_paths[i], tags); - } - } - } - - // Add symbols for statically linked libraries on iOS - if (p_features.has("iOS")) { - bool should_fake_dynamic = false; - - List<String> entry_keys; - config->get_section_keys("entry", &entry_keys); - - for (const String &key : entry_keys) { - Vector<String> tags = key.split("."); - - bool skip = false; - for (int i = 0; i < tags.size(); i++) { - bool has_feature = p_features.has(tags[i]); - - if (!has_feature) { - skip = true; - break; - } - } - - if (skip) { - continue; - } - - String entry_lib_path = config->get_value("entry", key); - if (entry_lib_path.begins_with("res://") && entry_lib_path.ends_with(".a")) { - // If we find static library that was used for export - // we should add a fake lookup table. - // In case of dynamic library being used, - // this symbols will not cause any issues with library loading. - should_fake_dynamic = true; - break; - } - } - - if (should_fake_dynamic) { - // Register symbols in the "fake" dynamic lookup table, because dlsym does not work well on iOS. - LibrarySymbol expected_symbols[] = { - { "gdnative_init", true }, - { "gdnative_terminate", false }, - { "nativescript_init", false }, - { "nativescript_frame", false }, - { "nativescript_thread_enter", false }, - { "nativescript_thread_exit", false }, - { "gdnative_singleton", false } - }; - String declare_pattern = "extern \"C\" void $name(void)$weak;\n"; - String additional_code = "extern void register_dynamic_symbol(char *name, void *address);\n" - "extern void add_ios_init_callback(void (*cb)());\n"; - String linker_flags = ""; - for (unsigned long i = 0; i < sizeof(expected_symbols) / sizeof(expected_symbols[0]); ++i) { - String full_name = lib->get_symbol_prefix() + expected_symbols[i].name; - String code = declare_pattern.replace("$name", full_name); - code = code.replace("$weak", expected_symbols[i].is_required ? "" : " __attribute__((weak))"); - additional_code += code; - - if (!expected_symbols[i].is_required) { - if (linker_flags.length() > 0) { - linker_flags += " "; - } - linker_flags += "-Wl,-U,_" + full_name; - } - } - - additional_code += String("void $prefixinit() {\n").replace("$prefix", lib->get_symbol_prefix()); - String register_pattern = " if (&$name) register_dynamic_symbol((char *)\"$name\", (void *)$name);\n"; - for (unsigned long i = 0; i < sizeof(expected_symbols) / sizeof(expected_symbols[0]); ++i) { - String full_name = lib->get_symbol_prefix() + expected_symbols[i].name; - additional_code += register_pattern.replace("$name", full_name); - } - additional_code += "}\n"; - additional_code += String("struct $prefixstruct {$prefixstruct() {add_ios_init_callback($prefixinit);}};\n").replace("$prefix", lib->get_symbol_prefix()); - additional_code += String("$prefixstruct $prefixstruct_instance;\n").replace("$prefix", lib->get_symbol_prefix()); - - add_ios_cpp_code(additional_code); - add_ios_linker_flags(linker_flags); - } - } -} - -static void editor_init_callback() { - GDNativeLibrarySingletonEditor *library_editor = memnew(GDNativeLibrarySingletonEditor); - library_editor->set_name(TTR("GDNative")); - ProjectSettingsEditor::get_singleton()->get_tabs()->add_child(library_editor); - - Ref<GDNativeExportPlugin> export_plugin; - export_plugin.instantiate(); - - EditorExport::get_singleton()->add_export_plugin(export_plugin); - - EditorNode::get_singleton()->add_editor_plugin(memnew(GDNativeLibraryEditorPlugin)); -} - -#endif - -static godot_variant cb_standard_varcall(void *p_procedure_handle, godot_array *p_args) { - godot_gdnative_procedure_fn proc; - proc = (godot_gdnative_procedure_fn)p_procedure_handle; - - return proc(p_args); -} - -GDNativeCallRegistry *GDNativeCallRegistry::singleton; - -Vector<Ref<GDNative>> singleton_gdnatives; - -Ref<GDNativeLibraryResourceLoader> resource_loader_gdnlib; -Ref<GDNativeLibraryResourceSaver> resource_saver_gdnlib; - -void register_gdnative_types() { -#ifdef TOOLS_ENABLED - - EditorNode::add_init_callback(editor_init_callback); -#endif - - GDREGISTER_CLASS(GDNativeLibrary); - GDREGISTER_CLASS(GDNative); - - resource_loader_gdnlib.instantiate(); - ResourceLoader::add_resource_format_loader(resource_loader_gdnlib); - - resource_saver_gdnlib.instantiate(); - ResourceSaver::add_resource_format_saver(resource_saver_gdnlib); - - GDNativeCallRegistry::singleton = memnew(GDNativeCallRegistry); - - GDNativeCallRegistry::singleton->register_native_call_type("standard_varcall", cb_standard_varcall); - - register_nativescript_types(); - register_pluginscript_types(); - register_videodecoder_types(); - - // run singletons - - Array singletons = Array(); - if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons")) { - singletons = ProjectSettings::get_singleton()->get("gdnative/singletons"); - } - Array excluded = Array(); - if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons_disabled")) { - excluded = ProjectSettings::get_singleton()->get("gdnative/singletons_disabled"); - } - - for (int i = 0; i < singletons.size(); i++) { - String path = singletons[i]; - - if (excluded.has(path)) { - continue; - } - - Ref<GDNativeLibrary> lib = ResourceLoader::load(path); - Ref<GDNative> singleton; - singleton.instantiate(); - singleton->set_library(lib); - - if (!singleton->initialize()) { - // Can't initialize. Don't make a native_call then - continue; - } - - void *proc_ptr; - Error err = singleton->get_symbol( - lib->get_symbol_prefix() + "gdnative_singleton", - proc_ptr); - - if (err != OK) { - ERR_PRINT("No " + lib->get_symbol_prefix() + "gdnative_singleton in \"" + singleton->get_library()->get_current_library_path() + "\" found"); - } else { - singleton_gdnatives.push_back(singleton); - ((void (*)())proc_ptr)(); - } - } -} - -void unregister_gdnative_types() { - for (int i = 0; i < singleton_gdnatives.size(); i++) { - if (singleton_gdnatives[i].is_null()) { - continue; - } - - if (!singleton_gdnatives[i]->is_initialized()) { - continue; - } - - singleton_gdnatives.write[i]->terminate(); - } - singleton_gdnatives.clear(); - - unregister_videodecoder_types(); - unregister_pluginscript_types(); - unregister_nativescript_types(); - - memdelete(GDNativeCallRegistry::singleton); - - ResourceLoader::remove_resource_format_loader(resource_loader_gdnlib); - resource_loader_gdnlib.unref(); - - ResourceSaver::remove_resource_format_saver(resource_saver_gdnlib); - resource_saver_gdnlib.unref(); - - // This is for printing out the sizes of the core types - - /* - print_line(String("array:\t") + itos(sizeof(Array))); - print_line(String("basis:\t") + itos(sizeof(Basis))); - print_line(String("color:\t") + itos(sizeof(Color))); - print_line(String("dict:\t" ) + itos(sizeof(Dictionary))); - print_line(String("node_path:\t") + itos(sizeof(NodePath))); - print_line(String("plane:\t") + itos(sizeof(Plane))); - print_line(String("poolarray:\t") + itos(sizeof(PackedByteArray))); - print_line(String("quat:\t") + itos(sizeof(Quat))); - print_line(String("rect2:\t") + itos(sizeof(Rect2))); - print_line(String("aabb:\t") + itos(sizeof(AABB))); - print_line(String("rid:\t") + itos(sizeof(RID))); - print_line(String("string:\t") + itos(sizeof(String))); - print_line(String("transform:\t") + itos(sizeof(Transform3D))); - print_line(String("transfo2D:\t") + itos(sizeof(Transform2D))); - print_line(String("variant:\t") + itos(sizeof(Variant))); - print_line(String("vector2:\t") + itos(sizeof(Vector2))); - print_line(String("vector3:\t") + itos(sizeof(Vector3))); - */ -} diff --git a/modules/gdnative/register_types.h b/modules/gdnative/register_types.h deleted file mode 100644 index 0e1cb46a55..0000000000 --- a/modules/gdnative/register_types.h +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************/ -/* register_types.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef GDNATIVE_REGISTER_TYPES_H -#define GDNATIVE_REGISTER_TYPES_H - -void register_gdnative_types(); -void unregister_gdnative_types(); - -#endif // GDNATIVE_REGISTER_TYPES_H diff --git a/modules/gdnative/tests/test_variant.h b/modules/gdnative/tests/test_variant.h deleted file mode 100644 index fb6537cf42..0000000000 --- a/modules/gdnative/tests/test_variant.h +++ /dev/null @@ -1,205 +0,0 @@ -/*************************************************************************/ -/* test_variant.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef TEST_GDNATIVE_VARIANT_H -#define TEST_GDNATIVE_VARIANT_H - -#include <gdnative/gdnative.h> -#include <gdnative/variant.h> - -#include "tests/test_macros.h" - -namespace TestGDNativeVariant { - -TEST_CASE("[GDNative Variant] New Variant with copy") { - godot_variant src; - godot_variant_new_int(&src, 42); - - godot_variant copy; - godot_variant_new_copy(©, &src); - - CHECK(godot_variant_as_int(©) == 42); - CHECK(godot_variant_get_type(©) == GODOT_VARIANT_TYPE_INT); - - godot_variant_destroy(&src); - godot_variant_destroy(©); -} - -TEST_CASE("[GDNative Variant] New Variant with Nil") { - godot_variant val; - godot_variant_new_nil(&val); - - CHECK(godot_variant_get_type(&val) == GODOT_VARIANT_TYPE_NIL); - - godot_variant_destroy(&val); -} - -TEST_CASE("[GDNative Variant] New Variant with bool") { - godot_variant val; - godot_variant_new_bool(&val, true); - - CHECK(godot_variant_as_bool(&val)); - CHECK(godot_variant_get_type(&val) == GODOT_VARIANT_TYPE_BOOL); - - godot_variant_destroy(&val); -} - -TEST_CASE("[GDNative Variant] New Variant with float") { - godot_variant val; - godot_variant_new_float(&val, 4.2); - - CHECK(godot_variant_as_float(&val) == 4.2); - CHECK(godot_variant_get_type(&val) == GODOT_VARIANT_TYPE_FLOAT); - - godot_variant_destroy(&val); -} - -TEST_CASE("[GDNative Variant] New Variant with String") { - String str = "something"; - - godot_variant val; - godot_variant_new_string(&val, (godot_string *)&str); - godot_string gd_str = godot_variant_as_string(&val); - String *result = (String *)&gd_str; - - CHECK(*result == String("something")); - CHECK(godot_variant_get_type(&val) == GODOT_VARIANT_TYPE_STRING); - - godot_variant_destroy(&val); - godot_string_destroy(&gd_str); -} - -TEST_CASE("[GDNative Variant] Variant call") { - String str("something"); - godot_variant self; - godot_variant_new_string(&self, (godot_string *)&str); - - godot_variant ret; - - godot_string_name method; - godot_string_name_new_with_latin1_chars(&method, "is_valid_identifier"); - - godot_variant_call_error error; - godot_variant_call(&self, &method, nullptr, 0, &ret, &error); - - CHECK(godot_variant_get_type(&ret) == GODOT_VARIANT_TYPE_BOOL); - CHECK(godot_variant_as_bool(&ret)); - - godot_variant_destroy(&ret); - godot_variant_destroy(&self); - godot_string_name_destroy(&method); -} - -TEST_CASE("[GDNative Variant] Variant evaluate") { - godot_variant one; - godot_variant_new_int(&one, 1); - godot_variant two; - godot_variant_new_int(&two, 2); - - godot_variant three; - godot_variant_new_nil(&three); - bool valid = false; - - godot_variant_evaluate(GODOT_VARIANT_OP_ADD, &one, &two, &three, &valid); - - CHECK(godot_variant_get_type(&three) == GODOT_VARIANT_TYPE_INT); - CHECK(godot_variant_as_int(&three) == 3); - CHECK(valid); - - godot_variant_destroy(&one); - godot_variant_destroy(&two); - godot_variant_destroy(&three); -} - -TEST_CASE("[GDNative Variant] Variant set/get named") { - godot_string_name x; - godot_string_name_new_with_latin1_chars(&x, "x"); - - Vector2 vec(0, 0); - godot_variant self; - godot_variant_new_vector2(&self, (godot_vector2 *)&vec); - - godot_variant set; - godot_variant_new_float(&set, 1.0); - - bool set_valid = false; - godot_variant_set_named(&self, &x, &set, &set_valid); - - bool get_valid = false; - godot_variant get = godot_variant_get_named(&self, &x, &get_valid); - - CHECK(get_valid); - CHECK(set_valid); - CHECK(godot_variant_get_type(&get) == GODOT_VARIANT_TYPE_FLOAT); - CHECK(godot_variant_as_float(&get) == 1.0); - - godot_string_name_destroy(&x); - godot_variant_destroy(&self); - godot_variant_destroy(&set); - godot_variant_destroy(&get); -} - -TEST_CASE("[GDNative Variant] Get utility function argument name") { - godot_string_name function; - godot_string_name_new_with_latin1_chars(&function, "pow"); - - godot_string arg_name = godot_variant_get_utility_function_argument_name(&function, 0); - - String *arg_name_str = (String *)&arg_name; - - CHECK(*arg_name_str == "base"); - - godot_string_destroy(&arg_name); - godot_string_name_destroy(&function); -} - -TEST_CASE("[GDNative Variant] Get utility function list") { - int count = godot_variant_get_utility_function_count(); - - godot_string_name *c_list = (godot_string_name *)godot_alloc(count * sizeof(godot_string_name)); - godot_variant_get_utility_function_list(c_list); - - List<StringName> cpp_list; - Variant::get_utility_function_list(&cpp_list); - - godot_string_name *cur = c_list; - - for (const StringName &E : cpp_list) { - const StringName &cpp_name = E; - StringName *c_name = (StringName *)cur++; - - CHECK(*c_name == cpp_name); - } - - godot_free(c_list); -} -} // namespace TestGDNativeVariant - -#endif // TEST_GDNATIVE_VARIANT_H diff --git a/modules/gdnative/videodecoder/SCsub b/modules/gdnative/videodecoder/SCsub deleted file mode 100644 index 5948b9a3dd..0000000000 --- a/modules/gdnative/videodecoder/SCsub +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env python - -Import("env") -Import("env_modules") - -env_vsdecoder_gdnative = env_modules.Clone() - -env_vsdecoder_gdnative.Prepend(CPPPATH=["#modules/gdnative/include/"]) -env_vsdecoder_gdnative.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/gdnative/videodecoder/register_types.cpp b/modules/gdnative/videodecoder/register_types.cpp deleted file mode 100644 index b28ff99bb8..0000000000 --- a/modules/gdnative/videodecoder/register_types.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************************************/ -/* register_types.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "register_types.h" - -#include "core/object/class_db.h" -#include "video_stream_gdnative.h" - -static Ref<ResourceFormatLoaderVideoStreamGDNative> resource_loader_vsgdnative; - -void register_videodecoder_types() { - resource_loader_vsgdnative.instantiate(); - ResourceLoader::add_resource_format_loader(resource_loader_vsgdnative, true); - - GDREGISTER_CLASS(VideoStreamGDNative); -} - -void unregister_videodecoder_types() { - ResourceLoader::remove_resource_format_loader(resource_loader_vsgdnative); - resource_loader_vsgdnative.unref(); -} diff --git a/modules/gdnative/videodecoder/register_types.h b/modules/gdnative/videodecoder/register_types.h deleted file mode 100644 index b261c36503..0000000000 --- a/modules/gdnative/videodecoder/register_types.h +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************/ -/* register_types.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef VIDEODECODER_REGISTER_TYPES_H -#define VIDEODECODER_REGISTER_TYPES_H - -void register_videodecoder_types(); -void unregister_videodecoder_types(); - -#endif // VIDEODECODER_REGISTER_TYPES_H diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.cpp b/modules/gdnative/videodecoder/video_stream_gdnative.cpp deleted file mode 100644 index d3d295c494..0000000000 --- a/modules/gdnative/videodecoder/video_stream_gdnative.cpp +++ /dev/null @@ -1,389 +0,0 @@ -/*************************************************************************/ -/* video_stream_gdnative.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "video_stream_gdnative.h" - -#include "core/config/project_settings.h" -#include "servers/audio_server.h" - -VideoDecoderServer *VideoDecoderServer::instance = nullptr; - -static VideoDecoderServer decoder_server; - -const int AUX_BUFFER_SIZE = 1024; // Buffer 1024 samples. - -// NOTE: Callbacks for the GDNative libraries. -extern "C" { -godot_int GDAPI godot_videodecoder_file_read(void *ptr, uint8_t *buf, int buf_size) { - // ptr is a FileAccess - FileAccess *file = reinterpret_cast<FileAccess *>(ptr); - - // if file exists - if (file) { - int64_t bytes_read = file->get_buffer(buf, buf_size); - return bytes_read; - } - return -1; -} - -int64_t GDAPI godot_videodecoder_file_seek(void *ptr, int64_t pos, int whence) { - // file - FileAccess *file = reinterpret_cast<FileAccess *>(ptr); - - if (file) { - int64_t len = file->get_length(); - switch (whence) { - case SEEK_SET: { - if (pos > len) { - return -1; - } - file->seek(pos); - return file->get_position(); - } break; - case SEEK_CUR: { - // Just in case it doesn't exist - if (pos < 0 && -pos > (int64_t)file->get_position()) { - return -1; - } - file->seek(file->get_position() + pos); - return file->get_position(); - } break; - case SEEK_END: { - // Just in case something goes wrong - if (-pos > len) { - return -1; - } - file->seek_end(pos); - return file->get_position(); - } break; - default: { - // Only 4 possible options, hence default = AVSEEK_SIZE - // Asks to return the length of file - return len; - } break; - } - } - // In case nothing works out. - return -1; -} - -void GDAPI godot_videodecoder_register_decoder(const godot_videodecoder_interface_gdnative *p_interface) { - decoder_server.register_decoder_interface(p_interface); -} -} - -// VideoStreamPlaybackGDNative starts here. - -bool VideoStreamPlaybackGDNative::open_file(const String &p_file) { - ERR_FAIL_COND_V(interface == nullptr, false); - file = FileAccess::open(p_file, FileAccess::READ); - bool file_opened = interface->open_file(data_struct, file); - - if (file_opened) { - num_channels = interface->get_channels(data_struct); - mix_rate = interface->get_mix_rate(data_struct); - - godot_vector2 vec = interface->get_texture_size(data_struct); - texture_size = *(Vector2 *)&vec; - // Only do memset if num_channels > 0 otherwise it will crash. - if (num_channels > 0) { - pcm = (float *)memalloc(num_channels * AUX_BUFFER_SIZE * sizeof(float)); - memset(pcm, 0, num_channels * AUX_BUFFER_SIZE * sizeof(float)); - } - - pcm_write_idx = -1; - samples_decoded = 0; - - Ref<Image> img; - img.instantiate(); - img->create((int)texture_size.width, false, (int)texture_size.height, Image::FORMAT_RGBA8); - - texture->create_from_image(img); - } - - return file_opened; -} - -void VideoStreamPlaybackGDNative::update(float p_delta) { - if (!playing || paused) { - return; - } - if (!file) { - return; - } - time += p_delta; - ERR_FAIL_COND(interface == nullptr); - interface->update(data_struct, p_delta); - - // Don't mix if there's no audio (num_channels == 0). - if (mix_callback && num_channels > 0) { - if (pcm_write_idx >= 0) { - // Previous remains - int mixed = mix_callback(mix_udata, pcm + pcm_write_idx * num_channels, samples_decoded); - if (mixed == samples_decoded) { - pcm_write_idx = -1; - } else { - samples_decoded -= mixed; - pcm_write_idx += mixed; - } - } - if (pcm_write_idx < 0) { - samples_decoded = interface->get_audioframe(data_struct, pcm, AUX_BUFFER_SIZE); - pcm_write_idx = mix_callback(mix_udata, pcm, samples_decoded); - if (pcm_write_idx == samples_decoded) { - pcm_write_idx = -1; - } else { - samples_decoded -= pcm_write_idx; - } - } - } - - if (seek_backward) { - update_texture(); - seek_backward = false; - } - - while (interface->get_playback_position(data_struct) < time && playing) { - update_texture(); - } -} - -void VideoStreamPlaybackGDNative::update_texture() { - PackedByteArray *pba = (PackedByteArray *)interface->get_videoframe(data_struct); - - if (pba == nullptr) { - playing = false; - return; - } - - Ref<Image> img = memnew(Image(texture_size.width, texture_size.height, 0, Image::FORMAT_RGBA8, *pba)); - - texture->update(img); -} - -// ctor and dtor - -VideoStreamPlaybackGDNative::VideoStreamPlaybackGDNative() : - texture(Ref<ImageTexture>(memnew(ImageTexture))) {} - -VideoStreamPlaybackGDNative::~VideoStreamPlaybackGDNative() { - cleanup(); -} - -void VideoStreamPlaybackGDNative::cleanup() { - if (data_struct) { - interface->destructor(data_struct); - } - if (pcm) { - memfree(pcm); - } - if (file) { - file->close(); - memdelete(file); - file = nullptr; - } - pcm = nullptr; - time = 0; - num_channels = -1; - interface = nullptr; - data_struct = nullptr; -} - -void VideoStreamPlaybackGDNative::set_interface(const godot_videodecoder_interface_gdnative *p_interface) { - ERR_FAIL_COND(p_interface == nullptr); - if (interface != nullptr) { - cleanup(); - } - interface = p_interface; - data_struct = interface->constructor((godot_object *)this); -} - -// controls - -bool VideoStreamPlaybackGDNative::is_playing() const { - return playing; -} - -bool VideoStreamPlaybackGDNative::is_paused() const { - return paused; -} - -void VideoStreamPlaybackGDNative::play() { - stop(); - - playing = true; - - delay_compensation = ProjectSettings::get_singleton()->get("audio/video/video_delay_compensation_ms"); - delay_compensation /= 1000.0; -} - -void VideoStreamPlaybackGDNative::stop() { - if (playing) { - seek(0); - } - playing = false; -} - -void VideoStreamPlaybackGDNative::seek(float p_time) { - ERR_FAIL_COND(interface == nullptr); - interface->seek(data_struct, p_time); - if (p_time < time) { - seek_backward = true; - } - time = p_time; - // reset audio buffers - memset(pcm, 0, num_channels * AUX_BUFFER_SIZE * sizeof(float)); - pcm_write_idx = -1; - samples_decoded = 0; -} - -void VideoStreamPlaybackGDNative::set_paused(bool p_paused) { - paused = p_paused; -} - -Ref<Texture2D> VideoStreamPlaybackGDNative::get_texture() const { - return texture; -} - -float VideoStreamPlaybackGDNative::get_length() const { - ERR_FAIL_COND_V(interface == nullptr, 0); - return interface->get_length(data_struct); -} - -float VideoStreamPlaybackGDNative::get_playback_position() const { - ERR_FAIL_COND_V(interface == nullptr, 0); - return interface->get_playback_position(data_struct); -} - -bool VideoStreamPlaybackGDNative::has_loop() const { - // TODO: Implement looping? - return false; -} - -void VideoStreamPlaybackGDNative::set_loop(bool p_enable) { - // Do nothing -} - -void VideoStreamPlaybackGDNative::set_audio_track(int p_idx) { - ERR_FAIL_COND(interface == nullptr); - interface->set_audio_track(data_struct, p_idx); -} - -void VideoStreamPlaybackGDNative::set_mix_callback(AudioMixCallback p_callback, void *p_userdata) { - mix_udata = p_userdata; - mix_callback = p_callback; -} - -int VideoStreamPlaybackGDNative::get_channels() const { - ERR_FAIL_COND_V(interface == nullptr, 0); - - return (num_channels > 0) ? num_channels : 0; -} - -int VideoStreamPlaybackGDNative::get_mix_rate() const { - ERR_FAIL_COND_V(interface == nullptr, 0); - - return mix_rate; -} - -/* --- NOTE VideoStreamGDNative starts here. ----- */ - -Ref<VideoStreamPlayback> VideoStreamGDNative::instance_playback() { - Ref<VideoStreamPlaybackGDNative> pb = memnew(VideoStreamPlaybackGDNative); - VideoDecoderGDNative *decoder = decoder_server.get_decoder(file.get_extension().to_lower()); - if (decoder == nullptr) { - return nullptr; - } - pb->set_interface(decoder->interface); - pb->set_audio_track(audio_track); - if (pb->open_file(file)) { - return pb; - } - return nullptr; -} - -void VideoStreamGDNative::set_file(const String &p_file) { - file = p_file; -} - -String VideoStreamGDNative::get_file() { - return file; -} - -void VideoStreamGDNative::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_file", "file"), &VideoStreamGDNative::set_file); - ClassDB::bind_method(D_METHOD("get_file"), &VideoStreamGDNative::get_file); - - ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "set_file", "get_file"); -} - -void VideoStreamGDNative::set_audio_track(int p_track) { - audio_track = p_track; -} - -/* --- NOTE ResourceFormatLoaderVideoStreamGDNative starts here. ----- */ - -RES ResourceFormatLoaderVideoStreamGDNative::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) { - FileAccess *f = FileAccess::open(p_path, FileAccess::READ); - if (!f) { - if (r_error) { - *r_error = ERR_CANT_OPEN; - } - return RES(); - } - memdelete(f); - VideoStreamGDNative *stream = memnew(VideoStreamGDNative); - stream->set_file(p_path); - Ref<VideoStreamGDNative> ogv_stream = Ref<VideoStreamGDNative>(stream); - if (r_error) { - *r_error = OK; - } - return ogv_stream; -} - -void ResourceFormatLoaderVideoStreamGDNative::get_recognized_extensions(List<String> *p_extensions) const { - Map<String, int>::Element *el = VideoDecoderServer::get_instance()->get_extensions().front(); - while (el) { - p_extensions->push_back(el->key()); - el = el->next(); - } -} - -bool ResourceFormatLoaderVideoStreamGDNative::handles_type(const String &p_type) const { - return ClassDB::is_parent_class(p_type, "VideoStream"); -} - -String ResourceFormatLoaderVideoStreamGDNative::get_resource_type(const String &p_path) const { - String el = p_path.get_extension().to_lower(); - if (VideoDecoderServer::get_instance()->get_extensions().has(el)) { - return "VideoStreamGDNative"; - } - return ""; -} diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.h b/modules/gdnative/videodecoder/video_stream_gdnative.h deleted file mode 100644 index b0a10242be..0000000000 --- a/modules/gdnative/videodecoder/video_stream_gdnative.h +++ /dev/null @@ -1,205 +0,0 @@ -/*************************************************************************/ -/* video_stream_gdnative.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef VIDEO_STREAM_GDNATIVE_H -#define VIDEO_STREAM_GDNATIVE_H - -#include "../gdnative.h" -#include "core/io/file_access.h" -#include "scene/resources/texture.h" -#include "scene/resources/video_stream.h" - -struct VideoDecoderGDNative { - const godot_videodecoder_interface_gdnative *interface = nullptr; - String plugin_name = "none"; - Vector<String> supported_extensions; - - VideoDecoderGDNative() {} - - VideoDecoderGDNative(const godot_videodecoder_interface_gdnative *p_interface) : - interface(p_interface), - plugin_name(p_interface->get_plugin_name()) { - _get_supported_extensions(); - } - -private: - void _get_supported_extensions() { - supported_extensions.clear(); - int num_ext; - const char **supported_ext = interface->get_supported_extensions(&num_ext); - for (int i = 0; i < num_ext; i++) { - supported_extensions.push_back(supported_ext[i]); - } - } -}; - -class VideoDecoderServer { -private: - Vector<VideoDecoderGDNative *> decoders; - Map<String, int> extensions; - - static VideoDecoderServer *instance; - -public: - static VideoDecoderServer *get_instance() { - return instance; - } - - const Map<String, int> &get_extensions() { - return extensions; - } - - void register_decoder_interface(const godot_videodecoder_interface_gdnative *p_interface) { - VideoDecoderGDNative *decoder = memnew(VideoDecoderGDNative(p_interface)); - int index = decoders.size(); - for (int i = 0; i < decoder->supported_extensions.size(); i++) { - extensions[decoder->supported_extensions[i]] = index; - } - decoders.push_back(decoder); - } - - VideoDecoderGDNative *get_decoder(const String &extension) { - if (extensions.size() == 0 || !extensions.has(extension)) { - return nullptr; - } - return decoders[extensions[extension]]; - } - - VideoDecoderServer() { - instance = this; - } - - ~VideoDecoderServer() { - for (int i = 0; i < decoders.size(); i++) { - memdelete(decoders[i]); - } - decoders.clear(); - instance = nullptr; - } -}; - -class VideoStreamPlaybackGDNative : public VideoStreamPlayback { - GDCLASS(VideoStreamPlaybackGDNative, VideoStreamPlayback); - - Ref<ImageTexture> texture; - bool playing = false; - bool paused = false; - - Vector2 texture_size; - - void *mix_udata = nullptr; - AudioMixCallback mix_callback = nullptr; - - int num_channels = -1; - float time = 0.0; - bool seek_backward = false; - int mix_rate = 0; - double delay_compensation = 0; - - float *pcm = nullptr; - int pcm_write_idx = 0; - int samples_decoded = 0; - - void cleanup(); - void update_texture(); - -protected: - String file_name; - - FileAccess *file = nullptr; - - const godot_videodecoder_interface_gdnative *interface = nullptr; - void *data_struct = nullptr; - -public: - VideoStreamPlaybackGDNative(); - ~VideoStreamPlaybackGDNative(); - - void set_interface(const godot_videodecoder_interface_gdnative *p_interface); - - bool open_file(const String &p_file); - - virtual void stop() override; - virtual void play() override; - - virtual bool is_playing() const override; - - virtual void set_paused(bool p_paused) override; - virtual bool is_paused() const override; - - virtual void set_loop(bool p_enable) override; - virtual bool has_loop() const override; - - virtual float get_length() const override; - - virtual float get_playback_position() const override; - virtual void seek(float p_time) override; - - virtual void set_audio_track(int p_idx) override; - - //virtual int mix(int16_t* p_buffer,int p_frames)=0; - - virtual Ref<Texture2D> get_texture() const override; - virtual void update(float p_delta) override; - - virtual void set_mix_callback(AudioMixCallback p_callback, void *p_userdata) override; - virtual int get_channels() const override; - virtual int get_mix_rate() const override; -}; - -class VideoStreamGDNative : public VideoStream { - GDCLASS(VideoStreamGDNative, VideoStream); - - String file; - int audio_track = 0; - -protected: - static void - _bind_methods(); - -public: - void set_file(const String &p_file); - String get_file(); - - virtual void set_audio_track(int p_track) override; - virtual Ref<VideoStreamPlayback> instance_playback() override; - - VideoStreamGDNative() {} -}; - -class ResourceFormatLoaderVideoStreamGDNative : public ResourceFormatLoader { -public: - virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE); - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String &p_type) const; - virtual String get_resource_type(const String &p_path) const; -}; - -#endif diff --git a/modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd b/modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd index d71f2592fe..cf6d68333d 100644 --- a/modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd +++ b/modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd @@ -34,5 +34,5 @@ func _get_output_port_name(port: int) -> String: func _get_output_port_type(port: int) -> int: return PORT_TYPE_SCALAR -func _get_code(input_vars: Array[String], output_vars: Array[String], mode: Shader.Mode, type: VisualShader.Type) -> String: +func _get_code(input_vars: Array[String], output_vars: Array[String], mode: int, type: int) -> String: return output_vars[0] + " = 0.0;" diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 8bf5fd1eda..c12c1a43a3 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -938,7 +938,7 @@ const Vector<Multiplayer::RPCConfig> GDScript::get_rpc_methods() const { return rpc_functions; } -Variant GDScript::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant GDScript::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { GDScript *top = this; while (top) { Map<StringName, GDScriptFunction *>::Element *E = top->member_functions.find(p_method); @@ -952,7 +952,7 @@ Variant GDScript::call(const StringName &p_method, const Variant **p_args, int p //none found, regular - return Script::call(p_method, p_args, p_argcount, r_error); + return Script::callp(p_method, p_args, p_argcount, r_error); } bool GDScript::_get(const StringName &p_name, Variant &r_ret) const { @@ -1273,7 +1273,7 @@ bool GDScriptInstance::set(const StringName &p_name, const Variant &p_value) { if (member->setter) { const Variant *val = &p_value; Callable::CallError err; - call(member->setter, &val, 1, err); + callp(member->setter, &val, 1, err); if (err.error == Callable::CallError::CALL_OK) { return true; //function exists, call was successful } else { @@ -1335,7 +1335,7 @@ bool GDScriptInstance::get(const StringName &p_name, Variant &r_ret) const { if (E) { if (E->get().getter) { Callable::CallError err; - r_ret = const_cast<GDScriptInstance *>(this)->call(E->get().getter, nullptr, 0, err); + r_ret = const_cast<GDScriptInstance *>(this)->callp(E->get().getter, nullptr, 0, err); if (err.error == Callable::CallError::CALL_OK) { return true; } @@ -1520,7 +1520,7 @@ bool GDScriptInstance::has_method(const StringName &p_method) const { return false; } -Variant GDScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant GDScriptInstance::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { GDScript *sptr = script.ptr(); while (sptr) { Map<StringName, GDScriptFunction *>::Element *E = sptr->member_functions.find(p_method); @@ -1555,7 +1555,7 @@ void GDScriptInstance::notification(int p_notification) { String GDScriptInstance::to_string(bool *r_valid) { if (has_method(CoreStringNames::get_singleton()->_to_string)) { Callable::CallError ce; - Variant ret = call(CoreStringNames::get_singleton()->_to_string, nullptr, 0, ce); + Variant ret = callp(CoreStringNames::get_singleton()->_to_string, nullptr, 0, ce); if (ce.error == Callable::CallError::CALL_OK) { if (ret.get_type() != Variant::STRING) { if (r_valid) { diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h index 2b43e6d21b..30e60e2b91 100644 --- a/modules/gdscript/gdscript.h +++ b/modules/gdscript/gdscript.h @@ -166,7 +166,7 @@ protected: bool _set(const StringName &p_name, const Variant &p_value); void _get_property_list(List<PropertyInfo> *p_properties) const; - Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; + Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; static void _bind_methods(); @@ -285,7 +285,7 @@ public: virtual void get_method_list(List<MethodInfo> *p_list) const; virtual bool has_method(const StringName &p_method) const; - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); Variant debug_get_member_by_index(int p_idx) const { return members[p_idx]; } diff --git a/modules/gdscript/gdscript_rpc_callable.cpp b/modules/gdscript/gdscript_rpc_callable.cpp index 07e5ed4171..07ef5aefcb 100644 --- a/modules/gdscript/gdscript_rpc_callable.cpp +++ b/modules/gdscript/gdscript_rpc_callable.cpp @@ -64,7 +64,7 @@ ObjectID GDScriptRPCCallable::get_object() const { } void GDScriptRPCCallable::call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, Callable::CallError &r_call_error) const { - r_return_value = object->call(method, p_arguments, p_argcount, r_call_error); + r_return_value = object->callp(method, p_arguments, p_argcount, r_call_error); } GDScriptRPCCallable::GDScriptRPCCallable(Object *p_object, const StringName &p_method) { diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp index 6964f27423..41c59c7703 100644 --- a/modules/gdscript/gdscript_vm.cpp +++ b/modules/gdscript/gdscript_vm.cpp @@ -1447,7 +1447,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a const StringName native_type = _global_names_ptr[native_type_idx]; Array array; - array.set_typed(builtin_type, native_type, script_type); + array.set_typed(builtin_type, native_type, *script_type); array.resize(argc); for (int i = 0; i < argc; i++) { @@ -1517,7 +1517,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a Callable::CallError err; if (call_ret) { GET_INSTRUCTION_ARG(ret, argc + 1); - base->call(*methodname, (const Variant **)argptrs, argc, *ret, err); + base->callp(*methodname, (const Variant **)argptrs, argc, *ret, err); #ifdef DEBUG_ENABLED if (!call_async && ret->get_type() == Variant::OBJECT) { // Check if getting a function state without await. @@ -1536,7 +1536,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a #endif } else { Variant ret; - base->call(*methodname, (const Variant **)argptrs, argc, ret, err); + base->callp(*methodname, (const Variant **)argptrs, argc, ret, err); } #ifdef DEBUG_ENABLED if (GDScriptLanguage::get_singleton()->profiling) { @@ -2340,7 +2340,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a } Array array; - array.set_typed(builtin_type, native_type, script_type); + array.set_typed(builtin_type, native_type, *script_type); #ifdef DEBUG_ENABLED bool valid = array.typed_assign(*VariantInternal::get_array(r)); @@ -2810,7 +2810,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a args[0] = &vref; Callable::CallError ce; - Variant has_next = obj->call(CoreStringNames::get_singleton()->_iter_init, (const Variant **)args, 1, ce); + Variant has_next = obj->callp(CoreStringNames::get_singleton()->_iter_init, (const Variant **)args, 1, ce); #ifdef DEBUG_ENABLED if (ce.error != Callable::CallError::CALL_OK) { @@ -2824,7 +2824,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a ip = jumpto; } else { GET_INSTRUCTION_ARG(iterator, 2); - *iterator = obj->call(CoreStringNames::get_singleton()->_iter_get, (const Variant **)args, 1, ce); + *iterator = obj->callp(CoreStringNames::get_singleton()->_iter_get, (const Variant **)args, 1, ce); #ifdef DEBUG_ENABLED if (ce.error != Callable::CallError::CALL_OK) { err_text = vformat(R"(There was an error calling "_iter_get" on iterator object of type %s.)", *container); @@ -3141,7 +3141,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a args[0] = &vref; Callable::CallError ce; - Variant has_next = obj->call(CoreStringNames::get_singleton()->_iter_next, (const Variant **)args, 1, ce); + Variant has_next = obj->callp(CoreStringNames::get_singleton()->_iter_next, (const Variant **)args, 1, ce); #ifdef DEBUG_ENABLED if (ce.error != Callable::CallError::CALL_OK) { @@ -3155,7 +3155,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a ip = jumpto; } else { GET_INSTRUCTION_ARG(iterator, 2); - *iterator = obj->call(CoreStringNames::get_singleton()->_iter_get, (const Variant **)args, 1, ce); + *iterator = obj->callp(CoreStringNames::get_singleton()->_iter_get, (const Variant **)args, 1, ce); #ifdef DEBUG_ENABLED if (ce.error != Callable::CallError::CALL_OK) { err_text = vformat(R"(There was an error calling "_iter_get" on iterator object of type %s.)", *container); diff --git a/modules/gdscript/tests/gdscript_test_runner.cpp b/modules/gdscript/tests/gdscript_test_runner.cpp index c2bb2caa29..e8ddf90836 100644 --- a/modules/gdscript/tests/gdscript_test_runner.cpp +++ b/modules/gdscript/tests/gdscript_test_runner.cpp @@ -573,7 +573,7 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) { // Call test function. Callable::CallError call_err; - instance->call(GDScriptTestRunner::test_function_name, nullptr, 0, call_err); + instance->callp(GDScriptTestRunner::test_function_name, nullptr, 0, call_err); // Tear down output handlers. remove_print_handler(&_print_handler); diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index c0b0d63600..7ed0422236 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -1893,7 +1893,7 @@ bool CSharpInstance::has_method(const StringName &p_method) const { return false; } -Variant CSharpInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant CSharpInstance::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { ERR_FAIL_COND_V(!script.is_valid(), Variant()); GD_MONO_SCOPE_THREAD_ATTACH; @@ -2908,7 +2908,7 @@ int CSharpScript::_try_get_member_export_hint(IMonoClassMember *p_member, Manage } #endif -Variant CSharpScript::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant CSharpScript::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { if (unlikely(GDMono::get_singleton() == nullptr)) { // Probably not the best error but eh. r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL; @@ -2936,7 +2936,7 @@ Variant CSharpScript::call(const StringName &p_method, const Variant **p_args, i } // No static method found. Try regular instance calls - return Script::call(p_method, p_args, p_argcount, r_error); + return Script::callp(p_method, p_args, p_argcount, r_error); } void CSharpScript::_resource_path_changed() { diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h index d6cd9e6e57..3b97d2acc4 100644 --- a/modules/mono/csharp_script.h +++ b/modules/mono/csharp_script.h @@ -184,7 +184,7 @@ private: protected: static void _bind_methods(); - Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; + Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; void _resource_path_changed() override; bool _get(const StringName &p_name, Variant &r_ret) const; bool _set(const StringName &p_name, const Variant &p_value); @@ -295,7 +295,7 @@ public: void get_method_list(List<MethodInfo> *p_list) const override; bool has_method(const StringName &p_method) const override; - Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; + Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; void mono_object_disposed(MonoObject *p_obj); diff --git a/modules/mono/editor/GodotTools/GodotTools/Build/BuildOutputView.cs b/modules/mono/editor/GodotTools/GodotTools/Build/BuildOutputView.cs index 56fca6b5cb..bfc807c01a 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Build/BuildOutputView.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Build/BuildOutputView.cs @@ -350,7 +350,7 @@ namespace GodotTools.Build if (_issuesListContextMenu.ItemCount > 0) { - _issuesListContextMenu.Position = (Vector2i)(_issuesList.RectGlobalPosition + atPosition); + _issuesListContextMenu.Position = (Vector2i)(_issuesList.GlobalPosition + atPosition); _issuesListContextMenu.Popup(); } } diff --git a/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs b/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs index 2dbc78ab77..9e8f7ef1b1 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs @@ -126,7 +126,7 @@ namespace GodotTools.Build { base._Ready(); - RectMinSize = new Vector2(0, 228) * EditorScale; + MinimumSize = new Vector2(0, 228) * EditorScale; SizeFlagsVertical = (int)SizeFlags.ExpandFill; var toolBarHBox = new HBoxContainer { SizeFlagsHorizontal = (int)SizeFlags.ExpandFill }; diff --git a/modules/mono/editor/code_completion.cpp b/modules/mono/editor/code_completion.cpp index 095fd831a3..3a41b3f6f5 100644 --- a/modules/mono/editor/code_completion.cpp +++ b/modules/mono/editor/code_completion.cpp @@ -120,7 +120,7 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr } break; case CompletionKind::NODE_PATHS: { { - // AutoLoads + // Autoloads. OrderedHashMap<StringName, ProjectSettings::AutoloadInfo> autoloads = ProjectSettings::get_singleton()->get_autoload_list(); for (OrderedHashMap<StringName, ProjectSettings::AutoloadInfo>::Element E = autoloads.front(); E; E = E.next()) { diff --git a/modules/mono/glue/base_object_glue.cpp b/modules/mono/glue/base_object_glue.cpp index 8e7b125ed5..b5f2c98af5 100644 --- a/modules/mono/glue/base_object_glue.cpp +++ b/modules/mono/glue/base_object_glue.cpp @@ -199,7 +199,7 @@ MonoBoolean godot_icall_DynamicGodotObject_InvokeMember(Object *p_ptr, MonoStrin } Callable::CallError error; - Variant result = p_ptr->call(StringName(name), args.ptr(), argc, error); + Variant result = p_ptr->callp(StringName(name), args.ptr(), argc, error); *r_result = GDMonoMarshal::variant_to_mono_object(result); diff --git a/modules/navigation/rvo_agent.cpp b/modules/navigation/rvo_agent.cpp index c967d0bf98..a6a5660c0c 100644 --- a/modules/navigation/rvo_agent.cpp +++ b/modules/navigation/rvo_agent.cpp @@ -75,5 +75,5 @@ void RvoAgent::dispatch_callback() { const Variant *vp[2] = { &callback.new_velocity, &callback.udata }; int argc = (callback.udata.get_type() == Variant::NIL) ? 1 : 2; - obj->call(callback.method, vp, argc, responseCallError); + obj->callp(callback.method, vp, argc, responseCallError); } diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp index a9652cbba1..0a4ad96d97 100644 --- a/modules/theora/video_stream_theora.cpp +++ b/modules/theora/video_stream_theora.cpp @@ -604,7 +604,7 @@ float VideoStreamPlaybackTheora::get_playback_position() const { }; void VideoStreamPlaybackTheora::seek(float p_time) { - WARN_PRINT_ONCE("Seeking in Theora videos is not implemented yet (it's only supported for GDNative-provided video streams)."); + WARN_PRINT_ONCE("Seeking in Theora videos is not implemented yet (it's only supported for GDExtension-provided video streams)."); } void VideoStreamPlaybackTheora::set_mix_callback(AudioMixCallback p_callback, void *p_userdata) { diff --git a/modules/visual_script/editor/visual_script_editor.cpp b/modules/visual_script/editor/visual_script_editor.cpp index 813902b54e..6fae049056 100644 --- a/modules/visual_script/editor/visual_script_editor.cpp +++ b/modules/visual_script/editor/visual_script_editor.cpp @@ -1621,7 +1621,7 @@ void VisualScriptEditor::_remove_output_port(int p_id, int p_port) { conn_map.get_key_list(&keys); for (const int &E : keys) { for (const Set<int>::Element *F = conn_map[E].front(); F; F = F->next()) { - undo_redo->add_undo_method(script.ptr(), "data_connect", p_id, p_port, E, F); + undo_redo->add_undo_method(script.ptr(), "data_connect", p_id, p_port, E, F->get()); } } diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp index 9549137aef..e8c44e2556 100644 --- a/modules/visual_script/visual_script.cpp +++ b/modules/visual_script/visual_script.cpp @@ -1705,7 +1705,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p return return_value; } -Variant VisualScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant VisualScriptInstance::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { r_error.error = Callable::CallError::CALL_OK; //ok by default Map<StringName, Function>::Element *F = functions.find(p_method); @@ -1798,13 +1798,13 @@ void VisualScriptInstance::notification(int p_notification) { Variant what = p_notification; const Variant *whatp = &what; Callable::CallError ce; - call(VisualScriptLanguage::singleton->notification, &whatp, 1, ce); // Do as call. + callp(VisualScriptLanguage::singleton->notification, &whatp, 1, ce); // Do as call. } String VisualScriptInstance::to_string(bool *r_valid) { if (has_method(CoreStringNames::get_singleton()->_to_string)) { Callable::CallError ce; - Variant ret = call(CoreStringNames::get_singleton()->_to_string, nullptr, 0, ce); + Variant ret = callp(CoreStringNames::get_singleton()->_to_string, nullptr, 0, ce); if (ce.error == Callable::CallError::CALL_OK) { if (ret.get_type() != Variant::STRING) { if (r_valid) { diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h index e5c8ab48ee..d4dffdfc7a 100644 --- a/modules/visual_script/visual_script.h +++ b/modules/visual_script/visual_script.h @@ -410,7 +410,7 @@ public: virtual void get_method_list(List<MethodInfo> *p_list) const; virtual bool has_method(const StringName &p_method) const; - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); virtual void notification(int p_notification); String to_string(bool *r_valid); diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp index e8942b9788..a79e6df521 100644 --- a/modules/visual_script/visual_script_expression.cpp +++ b/modules/visual_script/visual_script_expression.cpp @@ -1500,7 +1500,7 @@ public: argp.write[i] = &arr[i]; } - base.call(call->method, (const Variant **)argp.ptr(), argp.size(), r_ret, ce); + base.callp(call->method, (const Variant **)argp.ptr(), argp.size(), r_ret, ce); if (ce.error != Callable::CallError::CALL_OK) { r_error_str = "On call to '" + String(call->method) + "':"; diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index ef6c1ecdb9..a63f3edc0d 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -772,9 +772,9 @@ public: if (rpc_mode) { call_rpc(object, p_inputs, input_args); } else if (returns) { - *p_outputs[0] = object->call(function, p_inputs, input_args, r_error); + *p_outputs[0] = object->callp(function, p_inputs, input_args, r_error); } else { - object->call(function, p_inputs, input_args, r_error); + object->callp(function, p_inputs, input_args, r_error); } } break; case VisualScriptFunctionCall::CALL_MODE_NODE_PATH: { @@ -795,9 +795,9 @@ public: if (rpc_mode) { call_rpc(node, p_inputs, input_args); } else if (returns) { - *p_outputs[0] = another->call(function, p_inputs, input_args, r_error); + *p_outputs[0] = another->callp(function, p_inputs, input_args, r_error); } else { - another->call(function, p_inputs, input_args, r_error); + another->callp(function, p_inputs, input_args, r_error); } } break; @@ -813,21 +813,21 @@ public: } else if (returns) { if (call_mode == VisualScriptFunctionCall::CALL_MODE_INSTANCE) { if (returns >= 2) { - v.call(function, p_inputs + 1, input_args, *p_outputs[1], r_error); + v.callp(function, p_inputs + 1, input_args, *p_outputs[1], r_error); } else if (returns == 1) { Variant ret; - v.call(function, p_inputs + 1, input_args, ret, r_error); + v.callp(function, p_inputs + 1, input_args, ret, r_error); } else { r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error_str = "Invalid returns count for call_mode == CALL_MODE_INSTANCE"; return 0; } } else { - v.call(function, p_inputs + 1, input_args, *p_outputs[0], r_error); + v.callp(function, p_inputs + 1, input_args, *p_outputs[0], r_error); } } else { Variant ret; - v.call(function, p_inputs + 1, input_args, ret, r_error); + v.callp(function, p_inputs + 1, input_args, ret, r_error); } if (call_mode == VisualScriptFunctionCall::CALL_MODE_INSTANCE) { @@ -846,9 +846,9 @@ public: if (rpc_mode) { call_rpc(object, p_inputs, input_args); } else if (returns) { - *p_outputs[0] = object->call(function, p_inputs, input_args, r_error); + *p_outputs[0] = object->callp(function, p_inputs, input_args, r_error); } else { - object->call(function, p_inputs, input_args, r_error); + object->callp(function, p_inputs, input_args, r_error); } } break; } @@ -2373,7 +2373,7 @@ public: virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) { Object *obj = instance->get_owner_ptr(); - obj->emit_signal(name, p_inputs, argcount); + obj->emit_signalp(name, p_inputs, argcount); return 0; } diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp index e672267b00..204b416c7d 100644 --- a/modules/visual_script/visual_script_nodes.cpp +++ b/modules/visual_script/visual_script_nodes.cpp @@ -3174,7 +3174,7 @@ public: r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; return 0; } - *p_outputs[0] = subcall->call(VisualScriptLanguage::singleton->_subcall, p_inputs, input_args, r_error); + *p_outputs[0] = subcall->callp(VisualScriptLanguage::singleton->_subcall, p_inputs, input_args, r_error); return 0; } }; diff --git a/platform/android/api/api.cpp b/platform/android/api/api.cpp index f544f29b10..f80f1e3051 100644 --- a/platform/android/api/api.cpp +++ b/platform/android/api/api.cpp @@ -64,14 +64,14 @@ void JavaClassWrapper::_bind_methods() { #if !defined(ANDROID_ENABLED) -Variant JavaClass::call(const StringName &, const Variant **, int, Callable::CallError &) { +Variant JavaClass::callp(const StringName &, const Variant **, int, Callable::CallError &) { return Variant(); } JavaClass::JavaClass() { } -Variant JavaObject::call(const StringName &, const Variant **, int, Callable::CallError &) { +Variant JavaObject::callp(const StringName &, const Variant **, int, Callable::CallError &) { return Variant(); } diff --git a/platform/android/api/java_class_wrapper.h b/platform/android/api/java_class_wrapper.h index d4d1208757..96b7b48e48 100644 --- a/platform/android/api/java_class_wrapper.h +++ b/platform/android/api/java_class_wrapper.h @@ -179,7 +179,7 @@ class JavaClass : public RefCounted { #endif public: - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; JavaClass(); }; @@ -195,7 +195,7 @@ class JavaObject : public RefCounted { #endif public: - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override; #ifdef ANDROID_ENABLED JavaObject(const Ref<JavaClass> &p_base, jobject *p_instance); diff --git a/platform/android/api/jni_singleton.h b/platform/android/api/jni_singleton.h index 57d08ac83e..74ca10e5e2 100644 --- a/platform/android/api/jni_singleton.h +++ b/platform/android/api/jni_singleton.h @@ -52,7 +52,7 @@ class JNISingleton : public Object { #endif public: - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override { + virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override { #ifdef ANDROID_ENABLED Map<StringName, MethodData>::Element *E = method_map.find(p_method); @@ -70,7 +70,7 @@ public: if (call_error) { // The method is not in this map, defaulting to the regular instance calls. - return Object::call(p_method, p_args, p_argcount, r_error); + return Object::callp(p_method, p_args, p_argcount, r_error); } ERR_FAIL_COND_V(!instance, Variant()); @@ -176,7 +176,7 @@ public: #else // ANDROID_ENABLED // Defaulting to the regular instance calls. - return Object::call(p_method, p_args, p_argcount, r_error); + return Object::callp(p_method, p_args, p_argcount, r_error); #endif } diff --git a/platform/android/java/nativeSrcsConfigs/CMakeLists.txt b/platform/android/java/nativeSrcsConfigs/CMakeLists.txt index 34925684da..966c02f7d7 100644 --- a/platform/android/java/nativeSrcsConfigs/CMakeLists.txt +++ b/platform/android/java/nativeSrcsConfigs/CMakeLists.txt @@ -15,5 +15,4 @@ file(GLOB_RECURSE HEADERS ${GODOT_ROOT_DIR}/*.h**) add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - ${GODOT_ROOT_DIR} - ${GODOT_ROOT_DIR}/modules/gdnative/include) + ${GODOT_ROOT_DIR}) diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp index 7c788b4dc4..1805807f90 100644 --- a/platform/android/java_class_wrapper.cpp +++ b/platform/android/java_class_wrapper.cpp @@ -485,14 +485,14 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method, return success; } -Variant JavaClass::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant JavaClass::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { Variant ret; bool found = _call_method(nullptr, p_method, p_args, p_argcount, r_error, ret); if (found) { return ret; } - return RefCounted::call(p_method, p_args, p_argcount, r_error); + return RefCounted::callp(p_method, p_args, p_argcount, r_error); } JavaClass::JavaClass() { @@ -500,7 +500,7 @@ JavaClass::JavaClass() { ///////////////////// -Variant JavaObject::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { +Variant JavaObject::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { return Variant(); } diff --git a/platform/android/java_godot_lib_jni.cpp b/platform/android/java_godot_lib_jni.cpp index dd4fa9de7b..249717921f 100644 --- a/platform/android/java_godot_lib_jni.cpp +++ b/platform/android/java_godot_lib_jni.cpp @@ -446,7 +446,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_callobject(JNIEnv *en } Callable::CallError err; - obj->call(str_method, (const Variant **)vptr, count, err); + obj->callp(str_method, (const Variant **)vptr, count, err); // something env->PopLocalFrame(nullptr); @@ -462,18 +462,20 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv * String str_method = jstring_to_string(method, env); int count = env->GetArrayLength(params); - Variant args[VARIANT_ARG_MAX]; - for (int i = 0; i < MIN(count, VARIANT_ARG_MAX); i++) { + Variant *args = (Variant *)alloca(sizeof(Variant) * count); + const Variant **argptrs = (const Variant **)alloca(sizeof(Variant *) * count); + + for (int i = 0; i < count; i++) { jobject obj = env->GetObjectArrayElement(params, i); if (obj) { args[i] = _jobject_to_variant(env, obj); } env->DeleteLocalRef(obj); + argptrs[i] = &args[i]; } - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - obj->call_deferred(str_method, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]); + MessageQueue::get_singleton()->push_callp(obj, str_method, (const Variant **)argptrs, count); // something env->PopLocalFrame(nullptr); } diff --git a/platform/android/plugin/godot_plugin_jni.cpp b/platform/android/plugin/godot_plugin_jni.cpp index 48aeb3d070..158512803a 100644 --- a/platform/android/plugin/godot_plugin_jni.cpp +++ b/platform/android/plugin/godot_plugin_jni.cpp @@ -114,10 +114,9 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_plugin_GodotPlugin_nativeEmitS String signal_name = jstring_to_string(j_signal_name, env); int count = env->GetArrayLength(j_signal_params); - ERR_FAIL_COND_MSG(count > VARIANT_ARG_MAX, "Maximum argument count exceeded!"); - Variant variant_params[VARIANT_ARG_MAX]; - const Variant *args[VARIANT_ARG_MAX]; + Variant *variant_params = (Variant *)alloca(sizeof(Variant) * count); + const Variant **args = (const Variant **)alloca(sizeof(Variant *) * count); for (int i = 0; i < count; i++) { jobject j_param = env->GetObjectArrayElement(j_signal_params, i); @@ -126,7 +125,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_plugin_GodotPlugin_nativeEmitS env->DeleteLocalRef(j_param); }; - singleton->emit_signal(StringName(signal_name), args, count); + singleton->emit_signalp(StringName(signal_name), args, count); } JNIEXPORT void JNICALL Java_org_godotengine_godot_plugin_GodotPlugin_nativeRegisterGDNativeLibraries(JNIEnv *env, jclass clazz, jobjectArray gdnlib_paths) { diff --git a/platform/javascript/javascript_singleton.cpp b/platform/javascript/javascript_singleton.cpp index eb5c02822f..c9c4d6e1b9 100644 --- a/platform/javascript/javascript_singleton.cpp +++ b/platform/javascript/javascript_singleton.cpp @@ -81,7 +81,7 @@ protected: public: Variant getvar(const Variant &p_key, bool *r_valid = nullptr) const override; void setvar(const Variant &p_key, const Variant &p_value, bool *r_valid = nullptr) override; - Variant call(const StringName &p_method, const Variant **p_args, int p_argc, Callable::CallError &r_error) override; + Variant callp(const StringName &p_method, const Variant **p_args, int p_argc, Callable::CallError &r_error) override; JavaScriptObjectImpl() {} JavaScriptObjectImpl(int p_id) { _js_id = p_id; } ~JavaScriptObjectImpl() { @@ -231,7 +231,7 @@ int JavaScriptObjectImpl::_variant2js(const void **p_args, int p_pos, godot_js_w return type; } -Variant JavaScriptObjectImpl::call(const StringName &p_method, const Variant **p_args, int p_argc, Callable::CallError &r_error) { +Variant JavaScriptObjectImpl::callp(const StringName &p_method, const Variant **p_args, int p_argc, Callable::CallError &r_error) { godot_js_wrapper_ex exchange; const String method = p_method; void *lock = nullptr; diff --git a/platform/linuxbsd/os_linuxbsd.cpp b/platform/linuxbsd/os_linuxbsd.cpp index d876932a83..6461a3d9fe 100644 --- a/platform/linuxbsd/os_linuxbsd.cpp +++ b/platform/linuxbsd/os_linuxbsd.cpp @@ -32,6 +32,7 @@ #include "core/io/dir_access.h" #include "main/main.h" +#include "servers/display_server.h" #ifdef X11_ENABLED #include "display_server_x11.h" diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp index c1f5ab1d32..47baa9e023 100644 --- a/scene/3d/physics_body_3d.cpp +++ b/scene/3d/physics_body_3d.cpp @@ -1425,7 +1425,7 @@ void CharacterBody3D::_move_and_slide_grounded(double p_delta, bool p_was_on_flo const PhysicsServer3D::MotionCollision &collision = result.collisions[0]; Vector3 slide_motion = result.remainder.slide(collision.normal); - if (collision_state.floor && !collision_state.wall) { + if (collision_state.floor && !collision_state.wall && !motion_slide_up.is_equal_approx(Vector3())) { // Slide using the intersection between the motion plane and the floor plane, // in order to keep the direction intact. real_t motion_length = slide_motion.length(); diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index e243915c13..402418e5a9 100644 --- a/scene/animation/animation_player.cpp +++ b/scene/animation/animation_player.cpp @@ -401,6 +401,22 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov } } +static void _call_object(Object *p_object, const StringName &p_method, const Vector<Variant> &p_params, bool p_deferred) { + // Separate function to use alloca() more efficiently + const Variant **argptrs = (const Variant **)alloca(sizeof(const Variant **) * p_params.size()); + const Variant *args = p_params.ptr(); + uint32_t argcount = p_params.size(); + for (uint32_t i = 0; i < argcount; i++) { + argptrs[i] = &args[i]; + } + if (p_deferred) { + MessageQueue::get_singleton()->push_callp(p_object, p_method, argptrs, argcount); + } else { + Callable::CallError ce; + p_object->callp(p_method, argptrs, argcount, ce); + } +} + void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double p_time, double p_delta, float p_interp, bool p_is_current, bool p_seeked, bool p_started, int p_pingponged) { _ensure_node_caches(p_anim); ERR_FAIL_COND(p_anim->node_cache.size() != p_anim->animation->get_track_count()); @@ -677,41 +693,14 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double StringName method = a->method_track_get_name(i, E); Vector<Variant> params = a->method_track_get_params(i, E); - int s = params.size(); - - ERR_CONTINUE(s > VARIANT_ARG_MAX); #ifdef DEBUG_ENABLED if (!nc->node->has_method(method)) { ERR_PRINT("Invalid method call '" + method + "'. '" + a->get_name() + "' at node '" + get_path() + "'."); } #endif - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); if (can_call) { - if (method_call_mode == ANIMATION_METHOD_CALL_DEFERRED) { - MessageQueue::get_singleton()->push_call( - nc->node, - method, - s >= 1 ? params[0] : Variant(), - s >= 2 ? params[1] : Variant(), - s >= 3 ? params[2] : Variant(), - s >= 4 ? params[3] : Variant(), - s >= 5 ? params[4] : Variant(), - s >= 6 ? params[5] : Variant(), - s >= 7 ? params[6] : Variant(), - s >= 8 ? params[7] : Variant()); - } else { - nc->node->call( - method, - s >= 1 ? params[0] : Variant(), - s >= 2 ? params[1] : Variant(), - s >= 3 ? params[2] : Variant(), - s >= 4 ? params[3] : Variant(), - s >= 5 ? params[4] : Variant(), - s >= 6 ? params[5] : Variant(), - s >= 7 ? params[6] : Variant(), - s >= 8 ? params[7] : Variant()); - } + _call_object(nc->node, method, params, method_call_mode == ANIMATION_METHOD_CALL_DEFERRED); } } @@ -754,7 +743,7 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double Ref<AudioStream> stream = a->audio_track_get_key_stream(i, idx); if (!stream.is_valid()) { - nc->node->call("stop"); + nc->node->call(SNAME("stop")); nc->audio_playing = false; playing_caches.erase(nc); } else { @@ -764,14 +753,14 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double float len = stream->get_length(); if (start_ofs > len - end_ofs) { - nc->node->call("stop"); + nc->node->call(SNAME("stop")); nc->audio_playing = false; playing_caches.erase(nc); continue; } - nc->node->call("set_stream", stream); - nc->node->call("play", start_ofs); + nc->node->call(SNAME("set_stream"), stream); + nc->node->call(SNAME("play"), start_ofs); nc->audio_playing = true; playing_caches.insert(nc); @@ -793,7 +782,7 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double Ref<AudioStream> stream = a->audio_track_get_key_stream(i, idx); if (!stream.is_valid()) { - nc->node->call("stop"); + nc->node->call(SNAME("stop")); nc->audio_playing = false; playing_caches.erase(nc); } else { @@ -801,8 +790,8 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double float end_ofs = a->audio_track_get_key_end_offset(i, idx); float len = stream->get_length(); - nc->node->call("set_stream", stream); - nc->node->call("play", start_ofs); + nc->node->call(SNAME("set_stream"), stream); + nc->node->call(SNAME("play"), start_ofs); nc->audio_playing = true; playing_caches.insert(nc); @@ -833,7 +822,7 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double if (stop) { //time to stop - nc->node->call("stop"); + nc->node->call(SNAME("stop")); nc->audio_playing = false; playing_caches.erase(nc); } @@ -1544,7 +1533,7 @@ void AnimationPlayer::_animation_changed() { void AnimationPlayer::_stop_playing_caches() { for (Set<TrackNodeCache *>::Element *E = playing_caches.front(); E; E = E->next()) { if (E->get()->node && E->get()->audio_playing) { - E->get()->node->call("stop"); + E->get()->node->call(SNAME("stop")); } if (E->get()->node && E->get()->animation_playing) { AnimationPlayer *player = Object::cast_to<AnimationPlayer>(E->get()->node); diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp index a50618182d..e0e94d8632 100644 --- a/scene/animation/animation_tree.cpp +++ b/scene/animation/animation_tree.cpp @@ -490,7 +490,7 @@ void AnimationTree::set_active(bool p_active) { if (!active && is_inside_tree()) { for (Set<TrackCache *>::Element *E = playing_caches.front(); E; E = E->next()) { if (ObjectDB::get_instance(E->get()->object_id)) { - E->get()->object->call("stop"); + E->get()->object->call(SNAME("stop")); } } @@ -796,6 +796,21 @@ void AnimationTree::_clear_caches() { cache_valid = false; } +static void _call_object(Object *p_object, const StringName &p_method, const Vector<Variant> &p_params, bool p_deferred) { + // Separate function to use alloca() more efficiently + const Variant **argptrs = (const Variant **)alloca(sizeof(const Variant **) * p_params.size()); + const Variant *args = p_params.ptr(); + uint32_t argcount = p_params.size(); + for (uint32_t i = 0; i < argcount; i++) { + argptrs[i] = &args[i]; + } + if (p_deferred) { + MessageQueue::get_singleton()->push_callp(p_object, p_method, argptrs, argcount); + } else { + Callable::CallError ce; + p_object->callp(p_method, argptrs, argcount, ce); + } +} void AnimationTree::_process_graph(double p_delta) { _update_properties(); //if properties need updating, update them @@ -1286,25 +1301,10 @@ void AnimationTree::_process_graph(double p_delta) { for (int &F : indices) { StringName method = a->method_track_get_name(i, F); Vector<Variant> params = a->method_track_get_params(i, F); - - int s = params.size(); - - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - ERR_CONTINUE(s > VARIANT_ARG_MAX); if (can_call) { - t->object->call_deferred( - method, - s >= 1 ? params[0] : Variant(), - s >= 2 ? params[1] : Variant(), - s >= 3 ? params[2] : Variant(), - s >= 4 ? params[3] : Variant(), - s >= 5 ? params[4] : Variant(), - s >= 6 ? params[5] : Variant(), - s >= 7 ? params[6] : Variant(), - s >= 8 ? params[7] : Variant()); + _call_object(t->object, method, params, true); } } - } break; case Animation::TYPE_BEZIER: { TrackCacheBezier *t = static_cast<TrackCacheBezier *>(track); @@ -1331,7 +1331,7 @@ void AnimationTree::_process_graph(double p_delta) { Ref<AudioStream> stream = a->audio_track_get_key_stream(i, idx); if (!stream.is_valid()) { - t->object->call("stop"); + t->object->call(SNAME("stop")); t->playing = false; playing_caches.erase(t); } else { @@ -1341,14 +1341,14 @@ void AnimationTree::_process_graph(double p_delta) { double len = stream->get_length(); if (start_ofs > len - end_ofs) { - t->object->call("stop"); + t->object->call(SNAME("stop")); t->playing = false; playing_caches.erase(t); continue; } - t->object->call("set_stream", stream); - t->object->call("play", start_ofs); + t->object->call(SNAME("set_stream"), stream); + t->object->call(SNAME("play"), start_ofs); t->playing = true; playing_caches.insert(t); @@ -1370,7 +1370,7 @@ void AnimationTree::_process_graph(double p_delta) { Ref<AudioStream> stream = a->audio_track_get_key_stream(i, idx); if (!stream.is_valid()) { - t->object->call("stop"); + t->object->call(SNAME("stop")); t->playing = false; playing_caches.erase(t); } else { @@ -1378,8 +1378,8 @@ void AnimationTree::_process_graph(double p_delta) { double end_ofs = a->audio_track_get_key_end_offset(i, idx); double len = stream->get_length(); - t->object->call("set_stream", stream); - t->object->call("play", start_ofs); + t->object->call(SNAME("set_stream"), stream); + t->object->call(SNAME("play"), start_ofs); t->playing = true; playing_caches.insert(t); @@ -1416,7 +1416,7 @@ void AnimationTree::_process_graph(double p_delta) { if (stop) { //time to stop - t->object->call("stop"); + t->object->call(SNAME("stop")); t->playing = false; playing_caches.erase(t); } @@ -1424,10 +1424,10 @@ void AnimationTree::_process_graph(double p_delta) { } real_t db = Math::linear2db(MAX(blend, 0.00001)); - if (t->object->has_method("set_unit_db")) { - t->object->call("set_unit_db", db); + if (t->object->has_method(SNAME("set_unit_db"))) { + t->object->call(SNAME("set_unit_db"), db); } else { - t->object->call("set_volume_db", db); + t->object->call(SNAME("set_volume_db"), db); } } break; case Animation::TYPE_ANIMATION: { diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp index e5b81f9d8d..ac0d017a23 100644 --- a/scene/debugger/scene_debugger.cpp +++ b/scene/debugger/scene_debugger.cpp @@ -34,6 +34,7 @@ #include "core/debugger/engine_profiler.h" #include "core/io/marshalls.h" #include "core/object/script_language.h" +#include "core/templates/local_vector.h" #include "scene/main/scene_tree.h" #include "scene/main/window.h" #include "scene/resources/packed_scene.h" @@ -236,12 +237,28 @@ Error SceneDebugger::parse_message(void *p_user, const String &p_msg, const Arra live_editor->_res_set_func(p_args[0], p_args[1], p_args[2]); } else if (p_msg == "live_node_call") { - ERR_FAIL_COND_V(p_args.size() < 10, ERR_INVALID_DATA); - live_editor->_node_call_func(p_args[0], p_args[1], p_args[2], p_args[3], p_args[4], p_args[5], p_args[6], p_args[7], p_args[8], p_args[9]); + LocalVector<Variant> args; + LocalVector<Variant *> argptrs; + args.resize(p_args.size() - 2); + argptrs.resize(args.size()); + for (uint32_t i = 0; i < args.size(); i++) { + args[i] = p_args[i + 2]; + argptrs[i] = &args[i]; + } + live_editor->_node_call_func(p_args[0], p_args[1], (const Variant **)argptrs.ptr(), argptrs.size()); } else if (p_msg == "live_res_call") { ERR_FAIL_COND_V(p_args.size() < 10, ERR_INVALID_DATA); - live_editor->_res_call_func(p_args[0], p_args[1], p_args[2], p_args[3], p_args[4], p_args[5], p_args[6], p_args[7], p_args[8], p_args[9]); + + LocalVector<Variant> args; + LocalVector<Variant *> argptrs; + args.resize(p_args.size() - 2); + argptrs.resize(args.size()); + for (uint32_t i = 0; i < args.size(); i++) { + args[i] = p_args[i + 2]; + argptrs[i] = &args[i]; + } + live_editor->_res_call_func(p_args[0], p_args[1], (const Variant **)argptrs.ptr(), argptrs.size()); } else if (p_msg == "live_create_node") { ERR_FAIL_COND_V(p_args.size() < 3, ERR_INVALID_DATA); @@ -636,7 +653,7 @@ void LiveEditor::_node_set_res_func(int p_id, const StringName &p_prop, const St _node_set_func(p_id, p_prop, r); } -void LiveEditor::_node_call_func(int p_id, const StringName &p_method, VARIANT_ARG_DECLARE) { +void LiveEditor::_node_call_func(int p_id, const StringName &p_method, const Variant **p_args, int p_argcount) { SceneTree *scene_tree = SceneTree::get_singleton(); if (!scene_tree) { return; @@ -668,7 +685,8 @@ void LiveEditor::_node_call_func(int p_id, const StringName &p_method, VARIANT_A } Node *n2 = n->get_node(np); - n2->call(p_method, VARIANT_ARG_PASS); + Callable::CallError ce; + n2->callp(p_method, p_args, p_argcount, ce); } } @@ -699,7 +717,7 @@ void LiveEditor::_res_set_res_func(int p_id, const StringName &p_prop, const Str _res_set_func(p_id, p_prop, r); } -void LiveEditor::_res_call_func(int p_id, const StringName &p_method, VARIANT_ARG_DECLARE) { +void LiveEditor::_res_call_func(int p_id, const StringName &p_method, const Variant **p_args, int p_argcount) { if (!live_edit_resource_cache.has(p_id)) { return; } @@ -715,7 +733,8 @@ void LiveEditor::_res_call_func(int p_id, const StringName &p_method, VARIANT_AR return; } - r->call(p_method, VARIANT_ARG_PASS); + Callable::CallError ce; + r->callp(p_method, p_args, p_argcount, ce); } void LiveEditor::_root_func(const NodePath &p_scene_path, const String &p_scene_from) { diff --git a/scene/debugger/scene_debugger.h b/scene/debugger/scene_debugger.h index dd0a17c2dc..29d7da7d11 100644 --- a/scene/debugger/scene_debugger.h +++ b/scene/debugger/scene_debugger.h @@ -148,10 +148,10 @@ private: void _node_set_func(int p_id, const StringName &p_prop, const Variant &p_value); void _node_set_res_func(int p_id, const StringName &p_prop, const String &p_value); - void _node_call_func(int p_id, const StringName &p_method, VARIANT_ARG_DECLARE); + void _node_call_func(int p_id, const StringName &p_method, const Variant **p_args, int p_argcount); void _res_set_func(int p_id, const StringName &p_prop, const Variant &p_value); void _res_set_res_func(int p_id, const StringName &p_prop, const String &p_value); - void _res_call_func(int p_id, const StringName &p_method, VARIANT_ARG_DECLARE); + void _res_call_func(int p_id, const StringName &p_method, const Variant **p_args, int p_argcount); void _root_func(const NodePath &p_scene_path, const String &p_scene_from); void _create_node_func(const NodePath &p_parent, const String &p_type, const String &p_name); diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 3c712a89bb..2866a5ad6c 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -190,10 +190,10 @@ String Control::properties_managed_by_container[] = { "anchor_top", "anchor_right", "anchor_bottom", - "rect_position", - "rect_rotation", - "rect_scale", - "rect_size" + "position", + "rotation", + "scale", + "size" }; void Control::accept_event() { @@ -490,7 +490,7 @@ void Control::_validate_property(PropertyInfo &property) const { } else if (Object::cast_to<Container>(parent_node)) { // If the parent is a container, display only container-related properties. if (property.name.begins_with("anchor_") || property.name.begins_with("offset_") || property.name.begins_with("grow_") || property.name == "anchors_preset" || - (property.name.begins_with("rect_") && property.name != "rect_min_size" && property.name != "rect_clip_content" && property.name != "rect_global_position")) { + property.name == "position" || property.name == "rotation" || property.name == "scale" || property.name == "size" || property.name == "pivot_offset") { property.usage ^= PROPERTY_USAGE_EDITOR; } else if (property.name == "layout_mode") { @@ -2663,6 +2663,11 @@ void Control::set_default_cursor_shape(CursorShape p_shape) { ERR_FAIL_INDEX(int(p_shape), CURSOR_MAX); data.default_cursor = p_shape; + + if (!is_inside_tree()) { + return; + } + get_viewport()->get_base_window()->update_mouse_cursor_shape(); } Control::CursorShape Control::get_default_cursor_shape() const { @@ -3342,8 +3347,8 @@ void Control::_bind_methods() { ClassDB::bind_method(D_METHOD("is_auto_translating"), &Control::is_auto_translating); ADD_GROUP("Layout", ""); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rect_clip_content"), "set_clip_contents", "is_clipping_contents"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_min_size"), "set_custom_minimum_size", "get_custom_minimum_size"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clip_contents"), "set_clip_contents", "is_clipping_contents"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "minimum_size"), "set_custom_minimum_size", "get_custom_minimum_size"); ADD_PROPERTY(PropertyInfo(Variant::INT, "layout_direction", PROPERTY_HINT_ENUM, "Inherited,Locale,Left-to-Right,Right-to-Left"), "set_layout_direction", "get_layout_direction"); ADD_PROPERTY(PropertyInfo(Variant::INT, "layout_mode", PROPERTY_HINT_ENUM, "Position,Anchors,Container,Uncontrolled", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_layout_mode", "_get_layout_mode"); ADD_PROPERTY_DEFAULT("layout_mode", LayoutMode::LAYOUT_MODE_POSITION); @@ -3372,15 +3377,13 @@ void Control::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "grow_horizontal", PROPERTY_HINT_ENUM, "Left,Right,Both"), "set_h_grow_direction", "get_h_grow_direction"); ADD_PROPERTY(PropertyInfo(Variant::INT, "grow_vertical", PROPERTY_HINT_ENUM, "Top,Bottom,Both"), "set_v_grow_direction", "get_v_grow_direction"); - ADD_SUBGROUP("Rectangle", "rect_"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_position", "get_position"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_global_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "_set_global_position", "get_global_position"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_size", "get_size"); - - ADD_SUBGROUP("Transform", "rect_"); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rect_rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians"), "set_rotation", "get_rotation"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_scale"), "set_scale", "get_scale"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_pivot_offset"), "set_pivot_offset", "get_pivot_offset"); + ADD_SUBGROUP("Transform", ""); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_size", "get_size"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_position", "get_position"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "global_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "_set_global_position", "get_global_position"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians"), "set_rotation", "get_rotation"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale"), "set_scale", "get_scale"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "pivot_offset"), "set_pivot_offset", "get_pivot_offset"); ADD_SUBGROUP("Container Sizing", "size_flags_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "size_flags_horizontal", PROPERTY_HINT_FLAGS, "Fill:1,Expand:2,Shrink Center:4,Shrink End:8"), "set_h_size_flags", "get_h_size_flags"); diff --git a/scene/gui/tab_bar.cpp b/scene/gui/tab_bar.cpp index 2f5df9b756..af314b9545 100644 --- a/scene/gui/tab_bar.cpp +++ b/scene/gui/tab_bar.cpp @@ -827,78 +827,52 @@ void TabBar::_update_cache() { int limit_minus_buttons = limit - incr->get_width() - decr->get_width(); int w = 0; - int mw = 0; - int size_fixed = 0; - int count_resize = 0; + + max_drawn_tab = tabs.size() - 1; for (int i = 0; i < tabs.size(); i++) { - tabs.write[i].size_text = Math::ceil(tabs[i].text_buf->get_size().x); tabs.write[i].text_buf->set_width(-1); - - tabs.write[i].ofs_cache = 0; + tabs.write[i].size_text = Math::ceil(tabs[i].text_buf->get_size().x); tabs.write[i].size_cache = get_tab_width(i); - if (!tabs[i].hidden) { - mw += tabs[i].size_cache; + if (max_width > 0 && tabs[i].size_cache > max_width) { + int size_textless = tabs[i].size_cache - tabs[i].size_text; + int mw = MAX(size_textless, max_width); - if (tabs[i].size_cache <= min_width || i == current) { - size_fixed += tabs[i].size_cache; - } else { - count_resize++; - } + tabs.write[i].size_text = MAX(mw - size_textless, 1); + tabs.write[i].text_buf->set_width(tabs[i].size_text); + tabs.write[i].size_cache = size_textless + tabs[i].size_text; } - } - - int m_width = min_width; - if (count_resize > 0) { - m_width = MAX((limit_minus_buttons - size_fixed) / count_resize, min_width); - } - - for (int i = offset; i < tabs.size(); i++) { - if (tabs[i].hidden) { - tabs.write[i].ofs_cache = w; - max_drawn_tab = i; + if (i < offset || i > max_drawn_tab) { + tabs.write[i].ofs_cache = 0; continue; } - int lsize = tabs[i].size_cache; - int slen = tabs[i].size_text; + tabs.write[i].ofs_cache = w; - // FIXME: This is completely broken. - if (min_width > 0 && (mw > limit || (offset > 0 && mw > limit_minus_buttons)) && i != current && lsize > m_width) { - slen = MAX(m_width - tabs[i].size_cache + tabs[i].size_text, 1); - lsize = m_width; + if (tabs[i].hidden) { + continue; } - tabs.write[i].ofs_cache = w; - tabs.write[i].size_cache = lsize; - tabs.write[i].size_text = slen; - tabs.write[i].text_buf->set_width(slen); - - w += lsize; - max_drawn_tab = i; + w += tabs[i].size_cache; // Check if all tabs would fit inside the area. if (clip_tabs && i > offset && (w > limit || (offset > 0 && w > limit_minus_buttons))) { tabs.write[i].ofs_cache = 0; - tabs.write[i].text_buf->set_width(-1); w -= tabs[i].size_cache; - max_drawn_tab--; + max_drawn_tab = i - 1; while (w > limit_minus_buttons && max_drawn_tab > offset) { tabs.write[max_drawn_tab].ofs_cache = 0; if (!tabs[max_drawn_tab].hidden) { - tabs.write[max_drawn_tab].text_buf->set_width(-1); w -= tabs[max_drawn_tab].size_cache; } max_drawn_tab--; } - - break; } } @@ -938,12 +912,11 @@ void TabBar::_on_mouse_exited() { void TabBar::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) { Tab t; t.text = p_str; - t.xl_text = atr(p_str); t.text_buf->set_direction(is_layout_rtl() ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR); - t.text_buf->add_string(t.xl_text, get_theme_font(SNAME("font")), get_theme_font_size(SNAME("font_size")), Dictionary(), TranslationServer::get_singleton()->get_tool_locale()); t.icon = p_icon; tabs.push_back(t); + _shape(tabs.size() - 1); _update_cache(); if (scroll_to_selected) { ensure_tab_visible(current); @@ -1379,8 +1352,21 @@ TabBar::CloseButtonDisplayPolicy TabBar::get_tab_close_display_policy() const { return cb_displaypolicy; } -void TabBar::set_min_width(int p_width) { - min_width = p_width; +void TabBar::set_max_tab_width(int p_width) { + ERR_FAIL_COND(p_width < 0); + max_width = p_width; + + _update_cache(); + _ensure_no_over_offset(); + if (scroll_to_selected) { + ensure_tab_visible(current); + } + update(); + update_minimum_size(); +} + +int TabBar::get_max_tab_width() const { + return max_width; } void TabBar::set_scrolling_enabled(bool p_enabled) { @@ -1515,6 +1501,8 @@ void TabBar::_bind_methods() { ClassDB::bind_method(D_METHOD("move_tab", "from", "to"), &TabBar::move_tab); ClassDB::bind_method(D_METHOD("set_tab_close_display_policy", "policy"), &TabBar::set_tab_close_display_policy); ClassDB::bind_method(D_METHOD("get_tab_close_display_policy"), &TabBar::get_tab_close_display_policy); + ClassDB::bind_method(D_METHOD("set_max_tab_width", "width"), &TabBar::set_max_tab_width); + ClassDB::bind_method(D_METHOD("get_max_tab_width"), &TabBar::get_max_tab_width); ClassDB::bind_method(D_METHOD("set_scrolling_enabled", "enabled"), &TabBar::set_scrolling_enabled); ClassDB::bind_method(D_METHOD("get_scrolling_enabled"), &TabBar::get_scrolling_enabled); ClassDB::bind_method(D_METHOD("set_drag_to_rearrange_enabled", "enabled"), &TabBar::set_drag_to_rearrange_enabled); @@ -1539,6 +1527,7 @@ void TabBar::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_alignment", PROPERTY_HINT_ENUM, "Left,Center,Right"), "set_tab_alignment", "get_tab_alignment"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clip_tabs"), "set_clip_tabs", "get_clip_tabs"); ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_close_display_policy", PROPERTY_HINT_ENUM, "Show Never,Show Active Only,Show Always"), "set_tab_close_display_policy", "get_tab_close_display_policy"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "max_tab_width", PROPERTY_HINT_RANGE, "0,99999,1"), "set_max_tab_width", "get_max_tab_width"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scrolling_enabled"), "set_scrolling_enabled", "get_scrolling_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "drag_to_rearrange_enabled"), "set_drag_to_rearrange_enabled", "get_drag_to_rearrange_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "tabs_rearrange_group"), "set_tabs_rearrange_group", "get_tabs_rearrange_group"); diff --git a/scene/gui/tab_bar.h b/scene/gui/tab_bar.h index 82ae8bce3f..0f2184aca7 100644 --- a/scene/gui/tab_bar.h +++ b/scene/gui/tab_bar.h @@ -98,7 +98,7 @@ private: CloseButtonDisplayPolicy cb_displaypolicy = CLOSE_BUTTON_SHOW_NEVER; int hover = -1; // Hovered tab. - int min_width = 0; + int max_width = 0; bool scrolling_enabled = true; bool drag_to_rearrange_enabled = false; bool scroll_to_selected = true; @@ -198,7 +198,9 @@ public: bool get_select_with_rmb() const; void ensure_tab_visible(int p_idx); - void set_min_width(int p_width); + + void set_max_tab_width(int p_width); + int get_max_tab_width() const; Rect2 get_tab_rect(int p_tab) const; Size2 get_minimum_size() const override; diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 5afc37061b..ff8d2b88b1 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -1186,7 +1186,7 @@ void recursive_call_aux(TreeItem *p_item, const StringName &p_method, const Vari if (!p_item) { return; } - p_item->call(p_method, p_args, p_argcount, r_error); + p_item->callp(p_method, p_args, p_argcount, r_error); TreeItem *c = p_item->get_first_child(); while (c) { recursive_call_aux(c, p_method, p_args, p_argcount, r_error); diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 211667ce38..208bbe4d72 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -211,7 +211,7 @@ void Node::_propagate_enter_tree() { if (data.parent) { Variant c = this; const Variant *cptr = &c; - data.parent->emit_signal(SNAME("child_entered_tree"), &cptr, 1); + data.parent->emit_signalp(SNAME("child_entered_tree"), &cptr, 1); } data.blocked++; @@ -287,7 +287,7 @@ void Node::_propagate_exit_tree() { if (data.parent) { Variant c = this; const Variant *cptr = &c; - data.parent->emit_signal(SNAME("child_exited_tree"), &cptr, 1); + data.parent->emit_signalp(SNAME("child_exited_tree"), &cptr, 1); } // exit groups @@ -582,34 +582,6 @@ uint16_t Node::rpc_config(const StringName &p_method, Multiplayer::RPCMode p_rpc /***** RPC FUNCTIONS ********/ -void Node::rpc(const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - - int argc = 0; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - rpcp(0, p_method, argptr, argc); -} - -void Node::rpc_id(int p_peer_id, const StringName &p_method, VARIANT_ARG_DECLARE) { - VARIANT_ARGPTRS; - - int argc = 0; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - argc++; - } - - rpcp(p_peer_id, p_method, argptr, argc); -} - Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) { if (p_argcount < 1) { r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; @@ -2389,42 +2361,6 @@ void Node::_replace_connections_target(Node *p_new_target) { } } -Vector<Variant> Node::make_binds(VARIANT_ARG_DECLARE) { - Vector<Variant> ret; - - if (p_arg1.get_type() == Variant::NIL) { - return ret; - } else { - ret.push_back(p_arg1); - } - - if (p_arg2.get_type() == Variant::NIL) { - return ret; - } else { - ret.push_back(p_arg2); - } - - if (p_arg3.get_type() == Variant::NIL) { - return ret; - } else { - ret.push_back(p_arg3); - } - - if (p_arg4.get_type() == Variant::NIL) { - return ret; - } else { - ret.push_back(p_arg4); - } - - if (p_arg5.get_type() == Variant::NIL) { - return ret; - } else { - ret.push_back(p_arg5); - } - - return ret; -} - bool Node::has_node_and_resource(const NodePath &p_path) const { if (!has_node(p_path)) { return false; diff --git a/scene/main/node.h b/scene/main/node.h index 8e49f871a7..f5fbcf6587 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -420,7 +420,11 @@ public: void set_scene_instance_load_placeholder(bool p_enable); bool get_scene_instance_load_placeholder() const; - static Vector<Variant> make_binds(VARIANT_ARG_LIST); + template <typename... VarArgs> + Vector<Variant> make_binds(VarArgs... p_args) { + Vector<Variant> binds = { p_args... }; + return binds; + } void replace_by(Node *p_node, bool p_keep_data = false); @@ -472,8 +476,26 @@ public: uint16_t rpc_config(const StringName &p_method, Multiplayer::RPCMode p_rpc_mode, bool p_call_local = false, Multiplayer::TransferMode p_transfer_mode = Multiplayer::TRANSFER_MODE_RELIABLE, int p_channel = 0); // config a local method for RPC Vector<Multiplayer::RPCConfig> get_node_rpc_methods() const; - void rpc(const StringName &p_method, VARIANT_ARG_LIST); // RPC, honors RPCMode, TransferMode, channel - void rpc_id(int p_peer_id, const StringName &p_method, VARIANT_ARG_LIST); // RPC to specific peer(s), honors RPCMode, TransferMode, channel + template <typename... VarArgs> + void rpc(const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + rpcp(0, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + + template <typename... VarArgs> + void rpc_id(int p_peer_id, const StringName &p_method, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + rpcp(p_peer_id, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + void rpcp(int p_peer_id, const StringName &p_method, const Variant **p_arg, int p_argcount); Ref<MultiplayerAPI> get_multiplayer() const; diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index d1e8b477a6..c497718eda 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -175,13 +175,13 @@ void SceneTree::_flush_ugc() { while (unique_group_calls.size()) { Map<UGCall, Vector<Variant>>::Element *E = unique_group_calls.front(); - Variant v[VARIANT_ARG_MAX]; + const Variant **argptrs = (const Variant **)alloca(E->get().size() * sizeof(Variant *)); + for (int i = 0; i < E->get().size(); i++) { - v[i] = E->get()[i]; + argptrs[i] = &E->get()[i]; } - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - call_group_flags(GROUP_CALL_REALTIME, E->key().group, E->key().call, v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); + call_group_flagsp(GROUP_CALL_REALTIME, E->key().group, E->key().call, argptrs, E->get().size()); unique_group_calls.erase(E); } @@ -210,7 +210,7 @@ void SceneTree::_update_group_order(Group &g, bool p_use_priority) { g.changed = false; } -void SceneTree::call_group_flags(uint32_t p_call_flags, const StringName &p_group, const StringName &p_function, VARIANT_ARG_DECLARE) { +void SceneTree::call_group_flagsp(uint32_t p_call_flags, const StringName &p_group, const StringName &p_function, const Variant **p_args, int p_argcount) { Map<StringName, Group>::Element *E = group_map.find(p_group); if (!E) { return; @@ -231,14 +231,9 @@ void SceneTree::call_group_flags(uint32_t p_call_flags, const StringName &p_grou return; } - VARIANT_ARGPTRS; - Vector<Variant> args; - for (int i = 0; i < VARIANT_ARG_MAX; i++) { - if (argptr[i]->get_type() == Variant::NIL) { - break; - } - args.push_back(*argptr[i]); + for (int i = 0; i < p_argcount; i++) { + args.push_back(*p_args[i]); } unique_group_calls[ug] = args; @@ -260,9 +255,10 @@ void SceneTree::call_group_flags(uint32_t p_call_flags, const StringName &p_grou } if (p_call_flags & GROUP_CALL_REALTIME) { - nodes[i]->call(p_function, VARIANT_ARG_PASS); + Callable::CallError ce; + nodes[i]->callp(p_function, p_args, p_argcount, ce); } else { - MessageQueue::get_singleton()->push_call(nodes[i], p_function, VARIANT_ARG_PASS); + MessageQueue::get_singleton()->push_callp(nodes[i], p_function, p_args, p_argcount); } } @@ -273,9 +269,10 @@ void SceneTree::call_group_flags(uint32_t p_call_flags, const StringName &p_grou } if (p_call_flags & GROUP_CALL_REALTIME) { - nodes[i]->call(p_function, VARIANT_ARG_PASS); + Callable::CallError ce; + nodes[i]->callp(p_function, p_args, p_argcount, ce); } else { - MessageQueue::get_singleton()->push_call(nodes[i], p_function, VARIANT_ARG_PASS); + MessageQueue::get_singleton()->push_callp(nodes[i], p_function, p_args, p_argcount); } } } @@ -388,10 +385,6 @@ void SceneTree::set_group_flags(uint32_t p_call_flags, const StringName &p_group } } -void SceneTree::call_group(const StringName &p_group, const StringName &p_function, VARIANT_ARG_DECLARE) { - call_group_flags(0, p_group, p_function, VARIANT_ARG_PASS); -} - void SceneTree::notify_group(const StringName &p_group, int p_notification) { notify_group_flags(0, p_group, p_notification); } @@ -930,14 +923,8 @@ Variant SceneTree::_call_group_flags(const Variant **p_args, int p_argcount, Cal int flags = *p_args[0]; StringName group = *p_args[1]; StringName method = *p_args[2]; - Variant v[VARIANT_ARG_MAX]; - - for (int i = 0; i < MIN(p_argcount - 3, 5); i++) { - v[i] = *p_args[i + 3]; - } - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - call_group_flags(flags, group, method, v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); + call_group_flagsp(flags, group, method, p_args + 3, p_argcount - 3); return Variant(); } @@ -950,14 +937,8 @@ Variant SceneTree::_call_group(const Variant **p_args, int p_argcount, Callable: StringName group = *p_args[0]; StringName method = *p_args[1]; - Variant v[VARIANT_ARG_MAX]; - - for (int i = 0; i < MIN(p_argcount - 2, 5); i++) { - v[i] = *p_args[i + 2]; - } - static_assert(VARIANT_ARG_MAX == 8, "This code needs to be updated if VARIANT_ARG_MAX != 8"); - call_group_flags(0, group, method, v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); + call_group_flagsp(0, group, method, p_args + 2, p_argcount - 2); return Variant(); } @@ -1087,6 +1068,7 @@ void SceneTree::_change_scene(Node *p_to) { if (p_to) { current_scene = p_to; root->add_child(p_to); + root->update_mouse_cursor_shape(); } } diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h index 5f7c1729e8..6197e52fc1 100644 --- a/scene/main/scene_tree.h +++ b/scene/main/scene_tree.h @@ -229,14 +229,33 @@ public: _FORCE_INLINE_ Window *get_root() const { return root; } - void call_group_flags(uint32_t p_call_flags, const StringName &p_group, const StringName &p_function, VARIANT_ARG_LIST); + void call_group_flagsp(uint32_t p_call_flags, const StringName &p_group, const StringName &p_function, const Variant **p_args, int p_argcount); void notify_group_flags(uint32_t p_call_flags, const StringName &p_group, int p_notification); void set_group_flags(uint32_t p_call_flags, const StringName &p_group, const String &p_name, const Variant &p_value); - void call_group(const StringName &p_group, const StringName &p_function, VARIANT_ARG_LIST); void notify_group(const StringName &p_group, int p_notification); void set_group(const StringName &p_group, const String &p_name, const Variant &p_value); + template <typename... VarArgs> + void call_group(const StringName &p_group, const StringName &p_function, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + call_group_flagsp(0, p_group, p_function, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + + template <typename... VarArgs> + void call_group_flags(uint32_t p_flags, const StringName &p_group, const StringName &p_function, VarArgs... p_args) { + Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported. + const Variant *argptrs[sizeof...(p_args) + 1]; + for (uint32_t i = 0; i < sizeof...(p_args); i++) { + argptrs[i] = &args[i]; + } + call_group_flagsp(p_flags, p_group, p_function, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args)); + } + void flush_transform_notifications(); virtual void initialize() override; diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index de6aa2b139..0082e7b061 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1551,7 +1551,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { gui.drag_preview_id = ObjectID(); } _propagate_viewport_notification(this, NOTIFICATION_DRAG_END); - // Change mouse accordingly. + get_base_window()->update_mouse_cursor_shape(); } _gui_cancel_tooltip(); @@ -1572,7 +1572,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { gui.dragging = false; gui.drag_mouse_over = nullptr; _propagate_viewport_notification(this, NOTIFICATION_DRAG_END); - // Change mouse accordingly. + get_base_window()->update_mouse_cursor_shape(); } gui.mouse_focus_mask &= ~mouse_button_to_mask(mb->get_button_index()); // Remove from mask. diff --git a/scene/main/window.cpp b/scene/main/window.cpp index 6837fcae21..a1124274d8 100644 --- a/scene/main/window.cpp +++ b/scene/main/window.cpp @@ -378,6 +378,18 @@ void Window::_event_callback(DisplayServer::WindowEvent p_event) { } } +void Window::update_mouse_cursor_shape() { + // The default shape is set in Viewport::_gui_input_event. To instantly + // see the shape in the viewport we need to trigger a mouse motion event. + Ref<InputEventMouseMotion> mm; + Vector2 pos = get_mouse_position(); + Transform2D xform = get_global_canvas_transform().affine_inverse(); + mm.instantiate(); + mm->set_position(pos); + mm->set_global_position(xform.xform(pos)); + push_input(mm); +} + void Window::show() { set_visible(true); } diff --git a/scene/main/window.h b/scene/main/window.h index 3d8e337b4a..27a02b837f 100644 --- a/scene/main/window.h +++ b/scene/main/window.h @@ -205,6 +205,8 @@ public: void set_visible(bool p_visible); bool is_visible() const; + void update_mouse_cursor_shape(); + void show(); void hide(); diff --git a/scene/multiplayer/scene_rpc_interface.cpp b/scene/multiplayer/scene_rpc_interface.cpp index 2239a5d81c..84700a82f3 100644 --- a/scene/multiplayer/scene_rpc_interface.cpp +++ b/scene/multiplayer/scene_rpc_interface.cpp @@ -278,7 +278,7 @@ void SceneRPCInterface::_process_rpc(Node *p_node, const uint16_t p_rpc_method_i Callable::CallError ce; - p_node->call(config.name, (const Variant **)argp.ptr(), argc, ce); + p_node->callp(config.name, (const Variant **)argp.ptr(), argc, ce); if (ce.error != Callable::CallError::CALL_OK) { String error = Variant::get_call_error_text(p_node, config.name, (const Variant **)argp.ptr(), argc, ce); error = "RPC - " + error; @@ -480,7 +480,7 @@ void SceneRPCInterface::rpcp(Object *p_obj, int p_peer_id, const StringName &p_m Callable::CallError ce; multiplayer->set_remote_sender_override(peer->get_unique_id()); - node->call(p_method, p_arg, p_argcount, ce); + node->callp(p_method, p_arg, p_argcount, ce); multiplayer->set_remote_sender_override(0); if (ce.error != Callable::CallError::CALL_OK) { @@ -496,7 +496,7 @@ void SceneRPCInterface::rpcp(Object *p_obj, int p_peer_id, const StringName &p_m ce.error = Callable::CallError::CALL_OK; multiplayer->set_remote_sender_override(peer->get_unique_id()); - node->get_script_instance()->call(p_method, p_arg, p_argcount, ce); + node->get_script_instance()->callp(p_method, p_arg, p_argcount, ce); multiplayer->set_remote_sender_override(0); if (ce.error != Callable::CallError::CALL_OK) { diff --git a/servers/camera/camera_feed.cpp b/servers/camera/camera_feed.cpp index 3aab995857..624c06ecf1 100644 --- a/servers/camera/camera_feed.cpp +++ b/servers/camera/camera_feed.cpp @@ -33,7 +33,7 @@ #include "servers/rendering_server.h" void CameraFeed::_bind_methods() { - // The setters prefixed with _ are only exposed so we can have feeds through GDNative! + // The setters prefixed with _ are only exposed so we can have feeds through GDExtension! // They should not be called by the end user. ClassDB::bind_method(D_METHOD("get_id"), &CameraFeed::get_id); diff --git a/servers/xr/xr_interface.h b/servers/xr/xr_interface.h index 6e105ffc26..62eba2f00b 100644 --- a/servers/xr/xr_interface.h +++ b/servers/xr/xr_interface.h @@ -45,7 +45,7 @@ struct BlitToScreen; If the user wants to enable AR/VR the choose the interface they want to use and initialize it. - Note that we may make this into a fully instantiable class for GDNative support. + Note that we may make this into a fully instantiable class for GDExtension support. */ class XRInterface : public RefCounted { diff --git a/tests/SCsub b/tests/SCsub index 31466fffc1..25b06f2312 100644 --- a/tests/SCsub +++ b/tests/SCsub @@ -6,10 +6,6 @@ env.tests_sources = [] env_tests = env.Clone() -# Include GDNative headers. -if env["module_gdnative_enabled"]: - env_tests.Append(CPPPATH=["#modules/gdnative/include"]) - # We must disable the THREAD_LOCAL entirely in doctest to prevent crashes on debugging # Since we link with /MT thread_local is always expired when the header is used # So the debugger crashes the engine and it causes weird errors diff --git a/tests/core/object/test_object.h b/tests/core/object/test_object.h index f9158eccec..e44b93bb66 100644 --- a/tests/core/object/test_object.h +++ b/tests/core/object/test_object.h @@ -87,7 +87,7 @@ public: bool has_method(const StringName &p_method) const override { return false; } - Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override { + Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override { return Variant(); } void notification(int p_notification) override { |