diff options
398 files changed, 11237 insertions, 5219 deletions
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index 31f51c2854..011514ef04 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -128,7 +128,7 @@ License: Expat Files: ./thirdparty/doctest/ Comment: doctest -Copyright: 2016-2019, Viktor Kirilov +Copyright: 2016-2020, Viktor Kirilov License: Expat Files: ./thirdparty/enet/ diff --git a/core/config/engine.cpp b/core/config/engine.cpp index b0037ffb37..8e2ab094b0 100644 --- a/core/config/engine.cpp +++ b/core/config/engine.cpp @@ -219,3 +219,13 @@ Engine *Engine::get_singleton() { Engine::Engine() { singleton = this; } + +Engine::Singleton::Singleton(const StringName &p_name, Object *p_ptr) : + name(p_name), + ptr(p_ptr) { +#ifdef DEBUG_ENABLED + if (Object::cast_to<Reference>(p_ptr)) { + ERR_PRINT("A class intended to be used as a singleton must *not* inherit from Reference."); + } +#endif +} diff --git a/core/config/engine.h b/core/config/engine.h index 1d3d963b39..0d9aa02f28 100644 --- a/core/config/engine.h +++ b/core/config/engine.h @@ -41,10 +41,7 @@ public: struct Singleton { StringName name; Object *ptr; - Singleton(const StringName &p_name = StringName(), Object *p_ptr = nullptr) : - name(p_name), - ptr(p_ptr) { - } + Singleton(const StringName &p_name = StringName(), Object *p_ptr = nullptr); }; private: diff --git a/core/core_bind.h b/core/core_bind.h index 7794750387..4a642c47ce 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -83,7 +83,6 @@ protected: public: enum SaverFlags { - FLAG_RELATIVE_PATHS = 1, FLAG_BUNDLE_RESOURCES = 2, FLAG_CHANGE_PATH = 4, @@ -361,7 +360,6 @@ protected: public: enum ModeFlags { - READ = 1, WRITE = 2, READ_WRITE = 3, @@ -561,7 +559,6 @@ protected: public: enum Priority { - PRIORITY_LOW, PRIORITY_NORMAL, PRIORITY_HIGH, diff --git a/core/core_constants.cpp b/core/core_constants.cpp index 4229436e84..64bfff1c58 100644 --- a/core/core_constants.cpp +++ b/core/core_constants.cpp @@ -409,7 +409,7 @@ void register_global_constants() { BIND_CORE_ENUM_CONSTANT(BUTTON_MASK_XBUTTON2); // Joypad buttons - BIND_CORE_ENUM_CONSTANT(JOY_INVALID_BUTTON); + BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_INVALID); BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_A); BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_B); BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_X); @@ -425,51 +425,18 @@ void register_global_constants() { BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_DPAD_DOWN); BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_DPAD_LEFT); BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_DPAD_RIGHT); - BIND_CORE_ENUM_CONSTANT(JOY_SDL_BUTTONS); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_X); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_CROSS); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_CIRCLE); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_SQUARE); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_TRIANGLE); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_SELECT); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_START); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_PS); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_L1); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_R1); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_L3); - BIND_CORE_ENUM_CONSTANT(JOY_SONY_R3); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_A); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_B); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_X); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_Y); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_BACK); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_START); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_HOME); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_LS); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_RS); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_LB); - BIND_CORE_ENUM_CONSTANT(JOY_XBOX_RB); + BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_SDL_MAX); BIND_CORE_ENUM_CONSTANT(JOY_BUTTON_MAX); // Joypad axes - BIND_CORE_ENUM_CONSTANT(JOY_INVALID_AXIS); + BIND_CORE_ENUM_CONSTANT(JOY_AXIS_INVALID); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_LEFT_X); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_LEFT_Y); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_RIGHT_X); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_RIGHT_Y); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_TRIGGER_LEFT); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_TRIGGER_RIGHT); - BIND_CORE_ENUM_CONSTANT(JOY_SDL_AXES); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_0_X); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_0_Y); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_1_X); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_1_Y); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_2_X); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_2_Y); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_3_X); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_3_Y); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_4_X); - BIND_CORE_ENUM_CONSTANT(JOY_AXIS_4_Y); + BIND_CORE_ENUM_CONSTANT(JOY_AXIS_SDL_MAX); BIND_CORE_ENUM_CONSTANT(JOY_AXIS_MAX); // midi diff --git a/core/input/input.cpp b/core/input/input.cpp index ee66bf94cb..00a7e63a73 100644 --- a/core/input/input.cpp +++ b/core/input/input.cpp @@ -39,7 +39,7 @@ #include "editor/editor_settings.h" #endif -static const char *_joy_buttons[JOY_SDL_BUTTONS + 1] = { +static const char *_joy_buttons[JOY_BUTTON_SDL_MAX] = { "a", "b", "x", @@ -55,69 +55,15 @@ static const char *_joy_buttons[JOY_SDL_BUTTONS + 1] = { "dpdown", "dpleft", "dpright", - nullptr }; -static const char *_joy_button_names[JOY_BUTTON_MAX] = { - "Face Bottom", - "Face Right", - "Face Left", - "Face Top", - "Select", - "Guide", - "Start", - "Left Stick", - "Right Stick", - "Left Shoulder", - "Right Shoulder", - "D-Pad Up", - "D-Pad Down", - "D-Pad Left", - "D-Pad Right", - "Button 15", - "Button 16", - "Button 17", - "Button 18", - "Button 19", - "Button 20", - "Button 21", - "Button 22", - "Button 23", - "Button 24", - "Button 25", - "Button 26", - "Button 27", - "Button 28", - "Button 29", - "Button 30", - "Button 31", - "Button 32", - "Button 33", - "Button 34", - "Button 35" -}; - -static const char *_joy_axes[JOY_SDL_AXES + 1] = { +static const char *_joy_axes[JOY_AXIS_SDL_MAX] = { "leftx", "lefty", "rightx", "righty", "lefttrigger", "righttrigger", - nullptr -}; - -static const char *_joy_axis_names[JOY_AXIS_MAX] = { - "Left Stick X", - "Left Stick Y", - "Right Stick X", - "Right Stick Y", - "Left Trigger", - "Right Trigger", - "Joystick 3 Stick X", - "Joystick 3 Stick Y", - "Joystick 4 Stick X", - "Joystick 4 Stick Y" }; Input *Input::singleton = nullptr; @@ -149,6 +95,9 @@ void Input::_bind_methods() { ClassDB::bind_method(D_METHOD("is_action_just_pressed", "action"), &Input::is_action_just_pressed); ClassDB::bind_method(D_METHOD("is_action_just_released", "action"), &Input::is_action_just_released); ClassDB::bind_method(D_METHOD("get_action_strength", "action"), &Input::get_action_strength); + ClassDB::bind_method(D_METHOD("get_action_raw_strength", "action"), &Input::get_action_strength); + ClassDB::bind_method(D_METHOD("get_axis", "negative_action", "positive_action"), &Input::get_axis); + ClassDB::bind_method(D_METHOD("get_vector", "negative_x", "positive_x", "negative_y", "positive_y", "deadzone"), &Input::get_vector, DEFVAL(-1.0f)); ClassDB::bind_method(D_METHOD("add_joy_mapping", "mapping", "update_existing"), &Input::add_joy_mapping, DEFVAL(false)); ClassDB::bind_method(D_METHOD("remove_joy_mapping", "guid"), &Input::remove_joy_mapping); ClassDB::bind_method(D_METHOD("joy_connection_changed", "device", "connected", "name", "guid"), &Input::joy_connection_changed); @@ -159,10 +108,6 @@ void Input::_bind_methods() { ClassDB::bind_method(D_METHOD("get_connected_joypads"), &Input::get_connected_joypads); ClassDB::bind_method(D_METHOD("get_joy_vibration_strength", "device"), &Input::get_joy_vibration_strength); ClassDB::bind_method(D_METHOD("get_joy_vibration_duration", "device"), &Input::get_joy_vibration_duration); - ClassDB::bind_method(D_METHOD("get_joy_button_string", "button_index"), &Input::get_joy_button_string); - ClassDB::bind_method(D_METHOD("get_joy_button_index_from_string", "button"), &Input::get_joy_button_index_from_string); - ClassDB::bind_method(D_METHOD("get_joy_axis_string", "axis_index"), &Input::get_joy_axis_string); - ClassDB::bind_method(D_METHOD("get_joy_axis_index_from_string", "axis"), &Input::get_joy_axis_index_from_string); ClassDB::bind_method(D_METHOD("start_joy_vibration", "device", "weak_magnitude", "strong_magnitude", "duration"), &Input::start_joy_vibration, DEFVAL(0)); ClassDB::bind_method(D_METHOD("stop_joy_vibration", "device"), &Input::stop_joy_vibration); ClassDB::bind_method(D_METHOD("vibrate_handheld", "duration_ms"), &Input::vibrate_handheld, DEFVAL(500)); @@ -215,7 +160,9 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", 0) ? "'" : "\""; String pf = p_function; - if (p_idx == 0 && (pf == "is_action_pressed" || pf == "action_press" || pf == "action_release" || pf == "is_action_just_pressed" || pf == "is_action_just_released" || pf == "get_action_strength")) { + if (p_idx == 0 && (pf == "is_action_pressed" || pf == "action_press" || pf == "action_release" || + pf == "is_action_just_pressed" || pf == "is_action_just_released" || + pf == "get_action_strength" || pf == "get_axis" || pf == "get_vector")) { List<PropertyInfo> pinfo; ProjectSettings::get_singleton()->get_property_list(&pinfo); @@ -326,6 +273,46 @@ float Input::get_action_strength(const StringName &p_action) const { return E->get().strength; } +float Input::get_action_raw_strength(const StringName &p_action) const { + const Map<StringName, Action>::Element *E = action_state.find(p_action); + if (!E) { + return 0.0f; + } + + return E->get().raw_strength; +} + +float Input::get_axis(const StringName &p_negative_action, const StringName &p_positive_action) const { + return get_action_strength(p_positive_action) - get_action_strength(p_negative_action); +} + +Vector2 Input::get_vector(const StringName &p_negative_x, const StringName &p_positive_x, const StringName &p_negative_y, const StringName &p_positive_y, float p_deadzone) const { + Vector2 vector = Vector2( + get_action_raw_strength(p_positive_x) - get_action_raw_strength(p_negative_x), + get_action_raw_strength(p_positive_y) - get_action_raw_strength(p_negative_y)); + + if (p_deadzone < 0.0f) { + // If the deadzone isn't specified, get it from the average of the actions. + p_deadzone = (InputMap::get_singleton()->action_get_deadzone(p_positive_x) + + InputMap::get_singleton()->action_get_deadzone(p_negative_x) + + InputMap::get_singleton()->action_get_deadzone(p_positive_y) + + InputMap::get_singleton()->action_get_deadzone(p_negative_y)) / + 4; + } + + // Circular length limiting and deadzone. + float length = vector.length(); + if (length <= p_deadzone) { + return Vector2(); + } else if (length > 1.0f) { + return vector / length; + } else { + // Inverse lerp length to map (p_deadzone, 1) to (0, 1). + return vector * (Math::inverse_lerp(p_deadzone, 1.0f, length) / length); + } + return vector; +} + float Input::get_joy_axis(int p_device, int p_axis) const { _THREAD_SAFE_METHOD_ int c = _combine_device(p_axis, p_device); @@ -603,10 +590,12 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em action.physics_frame = Engine::get_singleton()->get_physics_frames(); action.idle_frame = Engine::get_singleton()->get_idle_frames(); action.pressed = p_event->is_action_pressed(E->key()); - action.strength = 0.f; + action.strength = 0.0f; + action.raw_strength = 0.0f; action_state[E->key()] = action; } action_state[E->key()].strength = p_event->get_action_strength(E->key()); + action_state[E->key()].raw_strength = p_event->get_action_raw_strength(E->key()); } } @@ -890,14 +879,6 @@ void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) { return; } - if (p_value.value > joy.last_axis[p_axis]) { - if (p_value.value < joy.last_axis[p_axis] + joy.filter) { - return; - } - } else if (p_value.value > joy.last_axis[p_axis] - joy.filter) { - return; - } - //when changing direction quickly, insert fake event to release pending inputmap actions float last = joy.last_axis[p_axis]; if (p_value.min == 0 && (last < 0.25 || last > 0.75) && (last - 0.5) * (p_value.value - 0.5) < 0) { @@ -1187,21 +1168,21 @@ void Input::_get_mapped_hat_events(const JoyDeviceMapping &mapping, int p_hat, J } JoyButtonList Input::_get_output_button(String output) { - for (int i = 0; _joy_buttons[i]; i++) { + for (int i = 0; i < JOY_BUTTON_SDL_MAX; i++) { if (output == _joy_buttons[i]) { return JoyButtonList(i); } } - return JoyButtonList::JOY_INVALID_BUTTON; + return JoyButtonList::JOY_BUTTON_INVALID; } JoyAxisList Input::_get_output_axis(String output) { - for (int i = 0; _joy_axes[i]; i++) { + for (int i = 0; i < JOY_AXIS_SDL_MAX; i++) { if (output == _joy_axes[i]) { return JoyAxisList(i); } } - return JoyAxisList::JOY_INVALID_AXIS; + return JoyAxisList::JOY_AXIS_INVALID; } void Input::parse_mapping(String p_mapping) { @@ -1261,16 +1242,16 @@ void Input::parse_mapping(String p_mapping) { JoyButtonList output_button = _get_output_button(output); JoyAxisList output_axis = _get_output_axis(output); - ERR_CONTINUE_MSG(output_button == JOY_INVALID_BUTTON && output_axis == JOY_INVALID_AXIS, + ERR_CONTINUE_MSG(output_button == JOY_BUTTON_INVALID && output_axis == JOY_AXIS_INVALID, String(entry[idx] + "\nUnrecognised output string: " + output)); - ERR_CONTINUE_MSG(output_button != JOY_INVALID_BUTTON && output_axis != JOY_INVALID_AXIS, + ERR_CONTINUE_MSG(output_button != JOY_BUTTON_INVALID && output_axis != JOY_AXIS_INVALID, String("BUG: Output string matched both button and axis: " + output)); JoyBinding binding; - if (output_button != JOY_INVALID_BUTTON) { + if (output_button != JOY_BUTTON_INVALID) { binding.outputType = TYPE_BUTTON; binding.output.button = output_button; - } else if (output_axis != JOY_INVALID_AXIS) { + } else if (output_axis != JOY_AXIS_INVALID) { binding.outputType = TYPE_AXIS; binding.output.axis.axis = output_axis; binding.output.axis.range = output_range; @@ -1362,20 +1343,6 @@ Array Input::get_connected_joypads() { return ret; } -String Input::get_joy_button_string(int p_button) { - ERR_FAIL_INDEX_V(p_button, JOY_BUTTON_MAX, "Invalid button"); - return _joy_button_names[p_button]; -} - -int Input::get_joy_button_index_from_string(String p_button) { - for (int i = 0; i < JOY_BUTTON_MAX; i++) { - if (p_button == _joy_button_names[i]) { - return i; - } - } - ERR_FAIL_V(JOY_INVALID_BUTTON); -} - int Input::get_unused_joy_id() { for (int i = 0; i < JOYPADS_MAX; i++) { if (!joy_names.has(i) || !joy_names[i].connected) { @@ -1385,20 +1352,6 @@ int Input::get_unused_joy_id() { return -1; } -String Input::get_joy_axis_string(int p_axis) { - ERR_FAIL_INDEX_V(p_axis, JOY_AXIS_MAX, "Invalid axis"); - return _joy_axis_names[p_axis]; -} - -int Input::get_joy_axis_index_from_string(String p_axis) { - for (int i = 0; i < JOY_AXIS_MAX; i++) { - if (p_axis == _joy_axis_names[i]) { - return i; - } - } - ERR_FAIL_V(JOY_INVALID_AXIS); -} - Input::Input() { singleton = this; diff --git a/core/input/input.h b/core/input/input.h index 98bbff6441..1b2df49ac0 100644 --- a/core/input/input.h +++ b/core/input/input.h @@ -117,6 +117,7 @@ private: uint64_t idle_frame; bool pressed; float strength; + float raw_strength; }; Map<StringName, Action> action_state; @@ -146,7 +147,6 @@ private: bool connected = false; bool last_buttons[JOY_BUTTON_MAX] = { false }; float last_axis[JOY_AXIS_MAX] = { 0.0f }; - float filter = 0.01f; int last_hat = HAT_MASK_CENTER; int mapping = -1; int hat_current = 0; @@ -223,7 +223,6 @@ private: JoyAxisList _get_output_axis(String output); void _button_event(int p_device, int p_index, bool p_pressed); void _axis_event(int p_device, int p_axis, float p_value); - float _handle_deadzone(int p_device, int p_axis, float p_value); void _parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_emulated); @@ -266,6 +265,10 @@ public: bool is_action_just_pressed(const StringName &p_action) const; bool is_action_just_released(const StringName &p_action) const; float get_action_strength(const StringName &p_action) const; + float get_action_raw_strength(const StringName &p_action) const; + + float get_axis(const StringName &p_negative_action, const StringName &p_positive_action) const; + Vector2 get_vector(const StringName &p_negative_x, const StringName &p_positive_x, const StringName &p_negative_y, const StringName &p_positive_y, float p_deadzone = -1.0f) const; float get_joy_axis(int p_device, int p_axis) const; String get_joy_name(int p_idx); @@ -327,11 +330,6 @@ public: void add_joy_mapping(String p_mapping, bool p_update_existing = false); void remove_joy_mapping(String p_guid); - String get_joy_button_string(int p_button); - String get_joy_axis_string(int p_axis); - int get_joy_axis_index_from_string(String p_axis); - int get_joy_button_index_from_string(String p_button); - int get_unused_joy_id(); bool is_joy_known(int p_device); diff --git a/core/input/input_event.cpp b/core/input/input_event.cpp index 6ba082f86f..41bc5e84b0 100644 --- a/core/input/input_event.cpp +++ b/core/input/input_event.cpp @@ -61,12 +61,17 @@ bool InputEvent::is_action_released(const StringName &p_action) const { } float InputEvent::get_action_strength(const StringName &p_action) const { - bool pressed; float strength; - bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, &pressed, &strength); + bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, nullptr, &strength); return valid ? strength : 0.0f; } +float InputEvent::get_action_raw_strength(const StringName &p_action) const { + float raw_strength; + bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, nullptr, nullptr, &raw_strength); + return valid ? raw_strength : 0.0f; +} + bool InputEvent::is_pressed() const { return false; } @@ -83,7 +88,7 @@ String InputEvent::as_text() const { return String(); } -bool InputEvent::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { +bool InputEvent::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const { return false; } @@ -138,6 +143,14 @@ int64_t InputEventFromWindow::get_window_id() const { /////////////////////////////////// +void InputEventWithModifiers::set_store_command(bool p_enabled) { + store_command = p_enabled; +} + +bool InputEventWithModifiers::is_storing_command() const { + return store_command; +} + void InputEventWithModifiers::set_shift(bool p_enabled) { shift = p_enabled; } @@ -186,6 +199,9 @@ void InputEventWithModifiers::set_modifiers_from_event(const InputEventWithModif } void InputEventWithModifiers::_bind_methods() { + ClassDB::bind_method(D_METHOD("set_store_command", "enable"), &InputEventWithModifiers::set_store_command); + ClassDB::bind_method(D_METHOD("is_storing_command"), &InputEventWithModifiers::is_storing_command); + ClassDB::bind_method(D_METHOD("set_alt", "enable"), &InputEventWithModifiers::set_alt); ClassDB::bind_method(D_METHOD("get_alt"), &InputEventWithModifiers::get_alt); @@ -201,6 +217,7 @@ void InputEventWithModifiers::_bind_methods() { ClassDB::bind_method(D_METHOD("set_command", "enable"), &InputEventWithModifiers::set_command); ClassDB::bind_method(D_METHOD("get_command"), &InputEventWithModifiers::get_command); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "store_command"), "set_store_command", "is_storing_command"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "alt"), "set_alt", "get_alt"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shift"), "set_shift", "get_shift"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "control"), "set_control", "get_control"); @@ -208,6 +225,28 @@ void InputEventWithModifiers::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "command"), "set_command", "get_command"); } +void InputEventWithModifiers::_validate_property(PropertyInfo &property) const { + if (store_command) { + // If we only want to Store "Command". +#ifdef APPLE_STYLE_KEYS + // Don't store "Meta" on Mac. + if (property.name == "meta") { + property.usage ^= PROPERTY_USAGE_STORAGE; + } +#else + // Don't store "Control". + if (property.name == "control") { + property.usage ^= PROPERTY_USAGE_STORAGE; + } +#endif + } else { + // We don't want to store command, only control or meta (on mac). + if (property.name == "command") { + property.usage ^= PROPERTY_USAGE_STORAGE; + } + } +} + /////////////////////////////////// void InputEventKey::set_pressed(bool p_pressed) { @@ -307,7 +346,7 @@ String InputEventKey::as_text() const { return kc; } -bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { +bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const { Ref<InputEventKey> key = p_event; if (key.is_null()) { return false; @@ -329,8 +368,12 @@ bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool *p_pressed if (p_pressed != nullptr) { *p_pressed = key->is_pressed(); } + float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; if (p_strength != nullptr) { - *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + *p_strength = strength; + } + if (p_raw_strength != nullptr) { + *p_raw_strength = strength; } } return match; @@ -470,7 +513,7 @@ Ref<InputEvent> InputEventMouseButton::xformed_by(const Transform2D &p_xform, co return mb; } -bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { +bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const { Ref<InputEventMouseButton> mb = p_event; if (mb.is_null()) { return false; @@ -481,8 +524,12 @@ bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event, bool *p if (p_pressed != nullptr) { *p_pressed = mb->is_pressed(); } + float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; if (p_strength != nullptr) { - *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + *p_strength = strength; + } + if (p_raw_strength != nullptr) { + *p_raw_strength = strength; } } @@ -713,7 +760,7 @@ bool InputEventJoypadMotion::is_pressed() const { return Math::abs(axis_value) >= 0.5f; } -bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { +bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const { Ref<InputEventJoypadMotion> jm = p_event; if (jm.is_null()) { return false; @@ -721,8 +768,9 @@ bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool * bool match = (axis == jm->axis); // Matches even if not in the same direction, but returns a "not pressed" event. if (match) { + float jm_abs_axis_value = Math::abs(jm->get_axis_value()); bool same_direction = (((axis_value < 0) == (jm->axis_value < 0)) || jm->axis_value == 0); - bool pressed = same_direction ? Math::abs(jm->get_axis_value()) >= p_deadzone : false; + bool pressed = same_direction && jm_abs_axis_value >= p_deadzone; if (p_pressed != nullptr) { *p_pressed = pressed; } @@ -731,12 +779,19 @@ bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool * if (p_deadzone == 1.0f) { *p_strength = 1.0f; } else { - *p_strength = CLAMP(Math::inverse_lerp(p_deadzone, 1.0f, Math::abs(jm->get_axis_value())), 0.0f, 1.0f); + *p_strength = CLAMP(Math::inverse_lerp(p_deadzone, 1.0f, jm_abs_axis_value), 0.0f, 1.0f); } } else { *p_strength = 0.0f; } } + if (p_raw_strength != nullptr) { + if (same_direction) { // NOT pressed, because we want to ignore the deadzone. + *p_raw_strength = jm_abs_axis_value; + } else { + *p_raw_strength = 0.0f; + } + } } return match; } @@ -782,7 +837,7 @@ float InputEventJoypadButton::get_pressure() const { return pressure; } -bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { +bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const { Ref<InputEventJoypadButton> jb = p_event; if (jb.is_null()) { return false; @@ -793,8 +848,12 @@ bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool * if (p_pressed != nullptr) { *p_pressed = jb->is_pressed(); } + float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; if (p_strength != nullptr) { - *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + *p_strength = strength; + } + if (p_raw_strength != nullptr) { + *p_raw_strength = strength; } } @@ -997,7 +1056,7 @@ bool InputEventAction::is_action(const StringName &p_action) const { return action == p_action; } -bool InputEventAction::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { +bool InputEventAction::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const { Ref<InputEventAction> act = p_event; if (act.is_null()) { return false; @@ -1008,8 +1067,12 @@ bool InputEventAction::action_match(const Ref<InputEvent> &p_event, bool *p_pres if (p_pressed != nullptr) { *p_pressed = act->pressed; } + float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; if (p_strength != nullptr) { - *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + *p_strength = strength; + } + if (p_raw_strength != nullptr) { + *p_raw_strength = strength; } } return match; diff --git a/core/input/input_event.h b/core/input/input_event.h index 8b58cf08c2..0eae3a2bbe 100644 --- a/core/input/input_event.h +++ b/core/input/input_event.h @@ -60,10 +60,7 @@ enum ButtonList { }; enum JoyButtonList { - - JOY_INVALID_BUTTON = -1, - - // SDL Buttons + JOY_BUTTON_INVALID = -1, JOY_BUTTON_A = 0, JOY_BUTTON_B = 1, JOY_BUTTON_X = 2, @@ -79,64 +76,20 @@ enum JoyButtonList { JOY_BUTTON_DPAD_DOWN = 12, JOY_BUTTON_DPAD_LEFT = 13, JOY_BUTTON_DPAD_RIGHT = 14, - JOY_SDL_BUTTONS = 15, - - // Sony Buttons - JOY_SONY_X = JOY_BUTTON_A, - JOY_SONY_CROSS = JOY_BUTTON_A, - JOY_SONY_CIRCLE = JOY_BUTTON_B, - JOY_SONY_SQUARE = JOY_BUTTON_X, - JOY_SONY_TRIANGLE = JOY_BUTTON_Y, - JOY_SONY_SELECT = JOY_BUTTON_BACK, - JOY_SONY_START = JOY_BUTTON_START, - JOY_SONY_PS = JOY_BUTTON_GUIDE, - JOY_SONY_L1 = JOY_BUTTON_LEFT_SHOULDER, - JOY_SONY_R1 = JOY_BUTTON_RIGHT_SHOULDER, - JOY_SONY_L3 = JOY_BUTTON_LEFT_STICK, - JOY_SONY_R3 = JOY_BUTTON_RIGHT_STICK, - - // Xbox Buttons - JOY_XBOX_A = JOY_BUTTON_A, - JOY_XBOX_B = JOY_BUTTON_B, - JOY_XBOX_X = JOY_BUTTON_X, - JOY_XBOX_Y = JOY_BUTTON_Y, - JOY_XBOX_BACK = JOY_BUTTON_BACK, - JOY_XBOX_START = JOY_BUTTON_START, - JOY_XBOX_HOME = JOY_BUTTON_GUIDE, - JOY_XBOX_LS = JOY_BUTTON_LEFT_STICK, - JOY_XBOX_RS = JOY_BUTTON_RIGHT_STICK, - JOY_XBOX_LB = JOY_BUTTON_LEFT_SHOULDER, - JOY_XBOX_RB = JOY_BUTTON_RIGHT_SHOULDER, - - JOY_BUTTON_MAX = 36 // Apparently Android supports up to 36 buttons. + JOY_BUTTON_SDL_MAX = 15, + JOY_BUTTON_MAX = 36, // Android supports up to 36 buttons. }; enum JoyAxisList { - - JOY_INVALID_AXIS = -1, - - // SDL Axes + JOY_AXIS_INVALID = -1, JOY_AXIS_LEFT_X = 0, JOY_AXIS_LEFT_Y = 1, JOY_AXIS_RIGHT_X = 2, JOY_AXIS_RIGHT_Y = 3, JOY_AXIS_TRIGGER_LEFT = 4, JOY_AXIS_TRIGGER_RIGHT = 5, - JOY_SDL_AXES = 6, - - // Joystick axes. - JOY_AXIS_0_X = 0, - JOY_AXIS_0_Y = 1, - JOY_AXIS_1_X = 2, - JOY_AXIS_1_Y = 3, - JOY_AXIS_2_X = 4, - JOY_AXIS_2_Y = 5, - JOY_AXIS_3_X = 6, - JOY_AXIS_3_Y = 7, - JOY_AXIS_4_X = 8, - JOY_AXIS_4_Y = 9, - - JOY_AXIS_MAX = 10 // OpenVR supports up to 5 Joysticks making a total of 10 axes. + JOY_AXIS_SDL_MAX = 6, + JOY_AXIS_MAX = 10, // OpenVR supports up to 5 Joysticks making a total of 10 axes. }; enum MidiMessageList { @@ -173,6 +126,7 @@ public: bool is_action_pressed(const StringName &p_action, bool p_allow_echo = false) const; bool is_action_released(const StringName &p_action) const; float get_action_strength(const StringName &p_action) const; + float get_action_raw_strength(const StringName &p_action) const; // To be removed someday, since they do not make sense for all events virtual bool is_pressed() const; @@ -182,7 +136,7 @@ public: virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const; - virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const; + virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const; virtual bool shortcut_match(const Ref<InputEvent> &p_event) const; virtual bool is_action_type() const; @@ -209,6 +163,8 @@ public: class InputEventWithModifiers : public InputEventFromWindow { GDCLASS(InputEventWithModifiers, InputEventFromWindow); + bool store_command = true; + bool shift = false; bool alt = false; #ifdef APPLE_STYLE_KEYS @@ -228,8 +184,12 @@ class InputEventWithModifiers : public InputEventFromWindow { protected: static void _bind_methods(); + virtual void _validate_property(PropertyInfo &property) const override; public: + void set_store_command(bool p_enabled); + bool is_storing_command() const; + void set_shift(bool p_enabled); bool get_shift() const; @@ -283,7 +243,7 @@ public: uint32_t get_keycode_with_modifiers() const; uint32_t get_physical_keycode_with_modifiers() const; - virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const override; + virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const override; virtual bool shortcut_match(const Ref<InputEvent> &p_event) const override; virtual bool is_action_type() const override { return true; } @@ -342,7 +302,7 @@ public: bool is_doubleclick() const; virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const override; - virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const override; + virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const override; virtual bool is_action_type() const override { return true; } virtual String as_text() const override; @@ -399,7 +359,7 @@ public: virtual bool is_pressed() const override; - virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const override; + virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const override; virtual bool is_action_type() const override { return true; } virtual String as_text() const override; @@ -426,7 +386,7 @@ public: void set_pressure(float p_pressure); float get_pressure() const; - virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const override; + virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const override; virtual bool shortcut_match(const Ref<InputEvent> &p_event) const override; virtual bool is_action_type() const override { return true; } @@ -511,7 +471,7 @@ public: virtual bool is_action(const StringName &p_action) const; - virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const override; + virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength, float p_deadzone) const override; virtual bool shortcut_match(const Ref<InputEvent> &p_event) const override; virtual bool is_action_type() const override { return true; } diff --git a/core/input/input_map.cpp b/core/input/input_map.cpp index ba1de3c58d..979809c7af 100644 --- a/core/input/input_map.cpp +++ b/core/input/input_map.cpp @@ -31,6 +31,7 @@ #include "input_map.h" #include "core/config/project_settings.h" +#include "core/input/input.h" #include "core/os/keyboard.h" InputMap *InputMap::singleton = nullptr; @@ -50,7 +51,7 @@ void InputMap::_bind_methods() { ClassDB::bind_method(D_METHOD("action_erase_events", "action"), &InputMap::action_erase_events); ClassDB::bind_method(D_METHOD("action_get_events", "action"), &InputMap::_action_get_events); ClassDB::bind_method(D_METHOD("event_is_action", "event", "action"), &InputMap::event_is_action); - ClassDB::bind_method(D_METHOD("load_from_globals"), &InputMap::load_from_globals); + ClassDB::bind_method(D_METHOD("load_from_project_settings"), &InputMap::load_from_project_settings); } void InputMap::add_action(const StringName &p_action, float p_deadzone) { @@ -94,7 +95,7 @@ List<StringName> InputMap::get_actions() const { return actions; } -List<Ref<InputEvent>>::Element *InputMap::_find_event(Action &p_action, const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength) const { +List<Ref<InputEvent>>::Element *InputMap::_find_event(Action &p_action, const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float *p_raw_strength) const { ERR_FAIL_COND_V(!p_event.is_valid(), nullptr); for (List<Ref<InputEvent>>::Element *E = p_action.inputs.front(); E; E = E->next()) { @@ -105,7 +106,7 @@ List<Ref<InputEvent>>::Element *InputMap::_find_event(Action &p_action, const Re int device = e->get_device(); if (device == ALL_DEVICES || device == p_event->get_device()) { - if (e->action_match(p_event, p_pressed, p_strength, p_action.deadzone)) { + if (e->action_match(p_event, p_pressed, p_strength, p_raw_strength, p_action.deadzone)) { return E; } } @@ -118,6 +119,12 @@ bool InputMap::has_action(const StringName &p_action) const { return input_map.has(p_action); } +float InputMap::action_get_deadzone(const StringName &p_action) { + ERR_FAIL_COND_V_MSG(!input_map.has(p_action), 0.0f, "Request for nonexistent InputMap action '" + String(p_action) + "'."); + + return input_map[p_action].deadzone; +} + void InputMap::action_set_deadzone(const StringName &p_action, float p_deadzone) { ERR_FAIL_COND_MSG(!input_map.has(p_action), "Request for nonexistent InputMap action '" + String(p_action) + "'."); @@ -145,6 +152,9 @@ void InputMap::action_erase_event(const StringName &p_action, const Ref<InputEve List<Ref<InputEvent>>::Element *E = _find_event(input_map[p_action], p_event); if (E) { input_map[p_action].inputs.erase(E); + if (Input::get_singleton()->is_action_pressed(p_action)) { + Input::get_singleton()->action_release(p_action); + } } } @@ -179,7 +189,7 @@ bool InputMap::event_is_action(const Ref<InputEvent> &p_event, const StringName return event_get_action_status(p_event, p_action); } -bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const StringName &p_action, bool *p_pressed, float *p_strength) const { +bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const StringName &p_action, bool *p_pressed, float *p_strength, float *p_raw_strength) const { Map<StringName, Action>::Element *E = input_map.find(p_action); ERR_FAIL_COND_V_MSG(!E, false, "Request for nonexistent InputMap action '" + String(p_action) + "'."); @@ -196,7 +206,8 @@ bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const Str bool pressed; float strength; - List<Ref<InputEvent>>::Element *event = _find_event(E->get(), p_event, &pressed, &strength); + float raw_strength; + List<Ref<InputEvent>>::Element *event = _find_event(E->get(), p_event, &pressed, &strength, &raw_strength); if (event != nullptr) { if (p_pressed != nullptr) { *p_pressed = pressed; @@ -204,6 +215,9 @@ bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const Str if (p_strength != nullptr) { *p_strength = strength; } + if (p_raw_strength != nullptr) { + *p_raw_strength = raw_strength; + } return true; } else { return false; @@ -214,7 +228,7 @@ const Map<StringName, InputMap::Action> &InputMap::get_action_map() const { return input_map; } -void InputMap::load_from_globals() { +void InputMap::load_from_project_settings() { input_map.clear(); List<PropertyInfo> pinfo; diff --git a/core/input/input_map.h b/core/input/input_map.h index 35c65d0881..948d78ebdd 100644 --- a/core/input/input_map.h +++ b/core/input/input_map.h @@ -54,7 +54,7 @@ private: mutable Map<StringName, Action> input_map; - List<Ref<InputEvent>>::Element *_find_event(Action &p_action, const Ref<InputEvent> &p_event, bool *p_pressed = nullptr, float *p_strength = nullptr) const; + List<Ref<InputEvent>>::Element *_find_event(Action &p_action, const Ref<InputEvent> &p_event, bool *p_pressed = nullptr, float *p_strength = nullptr, float *p_raw_strength = nullptr) const; Array _action_get_events(const StringName &p_action); Array _get_actions(); @@ -70,6 +70,7 @@ public: void add_action(const StringName &p_action, float p_deadzone = 0.5); void erase_action(const StringName &p_action); + float action_get_deadzone(const StringName &p_action); void action_set_deadzone(const StringName &p_action, float p_deadzone); void action_add_event(const StringName &p_action, const Ref<InputEvent> &p_event); bool action_has_event(const StringName &p_action, const Ref<InputEvent> &p_event); @@ -78,10 +79,10 @@ public: const List<Ref<InputEvent>> *action_get_events(const StringName &p_action); bool event_is_action(const Ref<InputEvent> &p_event, const StringName &p_action) const; - bool event_get_action_status(const Ref<InputEvent> &p_event, const StringName &p_action, bool *p_pressed = nullptr, float *p_strength = nullptr) const; + bool event_get_action_status(const Ref<InputEvent> &p_event, const StringName &p_action, bool *p_pressed = nullptr, float *p_strength = nullptr, float *p_raw_strength = nullptr) const; const Map<StringName, Action> &get_action_map() const; - void load_from_globals(); + void load_from_project_settings(); void load_default(); InputMap(); diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp index ce402fe8ed..1163c409bc 100644 --- a/core/io/file_access_zip.cpp +++ b/core/io/file_access_zip.cpp @@ -102,7 +102,6 @@ static voidpf godot_alloc(voidpf opaque, uInt items, uInt size) { static void godot_free(voidpf opaque, voidpf address) { memfree(address); } - } // extern "C" void ZipArchive::close_handle(unzFile p_file) const { diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp index a25413b21b..768fcdbb14 100644 --- a/core/io/http_client.cpp +++ b/core/io/http_client.cpp @@ -109,24 +109,41 @@ Ref<StreamPeer> HTTPClient::get_connection() const { return connection; } +static bool _check_request_url(HTTPClient::Method p_method, const String &p_url) { + switch (p_method) { + case HTTPClient::METHOD_CONNECT: { + // Authority in host:port format, as in RFC7231 + int pos = p_url.find_char(':'); + return 0 < pos && pos < p_url.length() - 1; + } + case HTTPClient::METHOD_OPTIONS: { + if (p_url == "*") { + return true; + } + [[fallthrough]]; + } + default: + // Absolute path or absolute URL + return p_url.begins_with("/") || p_url.begins_with("http://") || p_url.begins_with("https://"); + } +} + Error HTTPClient::request_raw(Method p_method, const String &p_url, const Vector<String> &p_headers, const Vector<uint8_t> &p_body) { ERR_FAIL_INDEX_V(p_method, METHOD_MAX, ERR_INVALID_PARAMETER); - ERR_FAIL_COND_V(!p_url.begins_with("/"), ERR_INVALID_PARAMETER); + ERR_FAIL_COND_V(!_check_request_url(p_method, p_url), ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(status != STATUS_CONNECTED, ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(connection.is_null(), ERR_INVALID_DATA); String request = String(_methods[p_method]) + " " + p_url + " HTTP/1.1\r\n"; - if ((ssl && conn_port == PORT_HTTPS) || (!ssl && conn_port == PORT_HTTP)) { - // Don't append the standard ports - request += "Host: " + conn_host + "\r\n"; - } else { - request += "Host: " + conn_host + ":" + itos(conn_port) + "\r\n"; - } + bool add_host = true; bool add_clen = p_body.size() > 0; bool add_uagent = true; bool add_accept = true; for (int i = 0; i < p_headers.size(); i++) { request += p_headers[i] + "\r\n"; + if (add_host && p_headers[i].findn("Host:") == 0) { + add_host = false; + } if (add_clen && p_headers[i].findn("Content-Length:") == 0) { add_clen = false; } @@ -137,6 +154,14 @@ Error HTTPClient::request_raw(Method p_method, const String &p_url, const Vector add_accept = false; } } + if (add_host) { + if ((ssl && conn_port == PORT_HTTPS) || (!ssl && conn_port == PORT_HTTP)) { + // Don't append the standard ports + request += "Host: " + conn_host + "\r\n"; + } else { + request += "Host: " + conn_host + ":" + itos(conn_port) + "\r\n"; + } + } if (add_clen) { request += "Content-Length: " + itos(p_body.size()) + "\r\n"; // Should it add utf8 encoding? @@ -178,22 +203,20 @@ Error HTTPClient::request_raw(Method p_method, const String &p_url, const Vector Error HTTPClient::request(Method p_method, const String &p_url, const Vector<String> &p_headers, const String &p_body) { ERR_FAIL_INDEX_V(p_method, METHOD_MAX, ERR_INVALID_PARAMETER); - ERR_FAIL_COND_V(!p_url.begins_with("/"), ERR_INVALID_PARAMETER); + ERR_FAIL_COND_V(!_check_request_url(p_method, p_url), ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(status != STATUS_CONNECTED, ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(connection.is_null(), ERR_INVALID_DATA); String request = String(_methods[p_method]) + " " + p_url + " HTTP/1.1\r\n"; - if ((ssl && conn_port == PORT_HTTPS) || (!ssl && conn_port == PORT_HTTP)) { - // Don't append the standard ports - request += "Host: " + conn_host + "\r\n"; - } else { - request += "Host: " + conn_host + ":" + itos(conn_port) + "\r\n"; - } + bool add_host = true; bool add_uagent = true; bool add_accept = true; bool add_clen = p_body.length() > 0; for (int i = 0; i < p_headers.size(); i++) { request += p_headers[i] + "\r\n"; + if (add_host && p_headers[i].findn("Host:") == 0) { + add_host = false; + } if (add_clen && p_headers[i].findn("Content-Length:") == 0) { add_clen = false; } @@ -204,6 +227,14 @@ Error HTTPClient::request(Method p_method, const String &p_url, const Vector<Str add_accept = false; } } + if (add_host) { + if ((ssl && conn_port == PORT_HTTPS) || (!ssl && conn_port == PORT_HTTP)) { + // Don't append the standard ports + request += "Host: " + conn_host + "\r\n"; + } else { + request += "Host: " + conn_host + ":" + itos(conn_port) + "\r\n"; + } + } if (add_clen) { request += "Content-Length: " + itos(p_body.utf8().length()) + "\r\n"; // Should it add utf8 encoding? diff --git a/core/io/http_client.h b/core/io/http_client.h index ece7e1924b..3d9fe321ba 100644 --- a/core/io/http_client.h +++ b/core/io/http_client.h @@ -41,7 +41,6 @@ class HTTPClient : public Reference { public: enum ResponseCode { - // 1xx informational RESPONSE_CONTINUE = 100, RESPONSE_SWITCHING_PROTOCOLS = 101, @@ -116,7 +115,6 @@ public: }; enum Method { - METHOD_GET, METHOD_HEAD, METHOD_POST, @@ -131,7 +129,6 @@ public: }; enum Status { - STATUS_DISCONNECTED, STATUS_RESOLVING, // Resolving hostname (if passed a hostname) STATUS_CANT_RESOLVE, @@ -150,7 +147,6 @@ private: static const int HOST_MIN_LEN = 4; enum Port { - PORT_HTTP = 80, PORT_HTTPS = 443, diff --git a/core/io/image.cpp b/core/io/image.cpp index 005fd481e8..f3c87a0f2d 100644 --- a/core/io/image.cpp +++ b/core/io/image.cpp @@ -80,7 +80,6 @@ const char *Image::format_names[Image::FORMAT_MAX] = { "ETC2_RGB8A1", "ETC2_RA_AS_RG", "FORMAT_DXT5_RA_AS_RG", - }; SavePNGFunc Image::save_png_func = nullptr; diff --git a/core/io/image.h b/core/io/image.h index fecb90cab0..c5ec74f02f 100644 --- a/core/io/image.h +++ b/core/io/image.h @@ -66,7 +66,6 @@ public: }; enum Format { - FORMAT_L8, //luminance FORMAT_LA8, //luminance-alpha FORMAT_R8, @@ -111,7 +110,6 @@ public: static const char *format_names[FORMAT_MAX]; enum Interpolation { - INTERPOLATE_NEAREST, INTERPOLATE_BILINEAR, INTERPOLATE_CUBIC, diff --git a/core/io/ip.h b/core/io/ip.h index d434d02f9b..32572b8eb2 100644 --- a/core/io/ip.h +++ b/core/io/ip.h @@ -42,7 +42,6 @@ class IP : public Object { public: enum ResolverStatus { - RESOLVER_STATUS_NONE, RESOLVER_STATUS_WAITING, RESOLVER_STATUS_DONE, @@ -50,7 +49,6 @@ public: }; enum Type { - TYPE_NONE = 0, TYPE_IPV4 = 1, TYPE_IPV6 = 2, diff --git a/core/io/ip_address.cpp b/core/io/ip_address.cpp index d0fb63b958..7d730e5ae8 100644 --- a/core/io/ip_address.cpp +++ b/core/io/ip_address.cpp @@ -31,7 +31,6 @@ #include "ip_address.h" /* IP_Address::operator Variant() const { - return operator String(); }*/ diff --git a/core/io/json.h b/core/io/json.h index 2854d956ec..431b252e55 100644 --- a/core/io/json.h +++ b/core/io/json.h @@ -49,7 +49,6 @@ class JSON { }; enum Expecting { - EXPECT_OBJECT, EXPECT_OBJECT_KEY, EXPECT_COLON, diff --git a/core/io/multiplayer_api.h b/core/io/multiplayer_api.h index e0ce1c8ca4..5b30c2e680 100644 --- a/core/io/multiplayer_api.h +++ b/core/io/multiplayer_api.h @@ -102,7 +102,6 @@ public: }; enum RPCMode { - RPC_MODE_DISABLED, // No rpc for this method, calls to this will be blocked (default) RPC_MODE_REMOTE, // Using rpc() on it will call method / set property in all remote peers RPC_MODE_MASTER, // Using rpc() on it will call method on wherever the master is, be it local or remote diff --git a/core/io/resource.cpp b/core/io/resource.cpp index 5b249f7af3..58ab9a8cde 100644 --- a/core/io/resource.cpp +++ b/core/io/resource.cpp @@ -147,8 +147,8 @@ Ref<Resource> Resource::duplicate_for_local_scene(Node *p_for_scene, Map<Ref<Res List<PropertyInfo> plist; get_property_list(&plist); - Resource *r = Object::cast_to<Resource>(ClassDB::instance(get_class())); - ERR_FAIL_COND_V(!r, Ref<Resource>()); + Ref<Resource> r = Object::cast_to<Resource>(ClassDB::instance(get_class())); + ERR_FAIL_COND_V(r.is_null(), Ref<Resource>()); r->local_scene = p_for_scene; @@ -175,9 +175,7 @@ Ref<Resource> Resource::duplicate_for_local_scene(Node *p_for_scene, Map<Ref<Res r->set(E->get().name, p); } - RES res = Ref<Resource>(r); - - return res; + return r; } void Resource::configure_for_local_scene(Node *p_for_scene, Map<Ref<Resource>, Ref<Resource>> &remap_cache) { @@ -209,8 +207,8 @@ Ref<Resource> Resource::duplicate(bool p_subresources) const { List<PropertyInfo> plist; get_property_list(&plist); - Resource *r = (Resource *)ClassDB::instance(get_class()); - ERR_FAIL_COND_V(!r, Ref<Resource>()); + Ref<Resource> r = (Resource *)ClassDB::instance(get_class()); + ERR_FAIL_COND_V(r.is_null(), Ref<Resource>()); for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) { if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) { @@ -230,7 +228,7 @@ Ref<Resource> Resource::duplicate(bool p_subresources) const { } } - return Ref<Resource>(r); + return r; } void Resource::_set_path(const String &p_path) { diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index c67e68e4fc..aeb859aabd 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -41,7 +41,6 @@ #define print_bl(m_what) (void)(m_what) enum { - //numbering must be different from variant, in case new variant types are added (variant must be always contiguous for jumptable optimization) VARIANT_NIL = 1, VARIANT_BOOL = 2, @@ -90,7 +89,6 @@ enum { FORMAT_VERSION = 3, FORMAT_VERSION_CAN_RENAME_DEPS = 1, FORMAT_VERSION_NO_NODEPATH_PROPERTY = 3, - }; void ResourceLoaderBinary::_advance_padding(uint32_t p_len) { diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h index 2e2950af53..c724c4a6e5 100644 --- a/core/io/resource_saver.h +++ b/core/io/resource_saver.h @@ -63,7 +63,6 @@ class ResourceSaver { public: enum SaverFlags { - FLAG_RELATIVE_PATHS = 1, FLAG_BUNDLE_RESOURCES = 2, FLAG_CHANGE_PATH = 4, diff --git a/core/io/stream_peer_tcp.h b/core/io/stream_peer_tcp.h index 45205866b4..173f92e2b6 100644 --- a/core/io/stream_peer_tcp.h +++ b/core/io/stream_peer_tcp.h @@ -42,7 +42,6 @@ class StreamPeerTCP : public StreamPeer { public: enum Status { - STATUS_NONE, STATUS_CONNECTING, STATUS_CONNECTED, diff --git a/core/math/geometry_3d.cpp b/core/math/geometry_3d.cpp index 56353de783..ccb6648561 100644 --- a/core/math/geometry_3d.cpp +++ b/core/math/geometry_3d.cpp @@ -241,7 +241,6 @@ Vector<Vector<Face3>> Geometry3D::separate_objects(Vector<Face3> p_array) { /*** GEOMETRY WRAPPER ***/ enum _CellFlags { - _CELL_SOLID = 1, _CELL_EXTERIOR = 2, _CELL_STEP_MASK = 0x1C, @@ -262,7 +261,6 @@ enum _CellFlags { _CELL_PREV_Z_POS = 5 << 5, _CELL_PREV_Z_NEG = 6 << 5, _CELL_PREV_FIRST = 7 << 5, - }; static inline void _plot_face(uint8_t ***p_cell_status, int x, int y, int z, int len_x, int len_y, int len_z, const Vector3 &voxelsize, const Face3 &p_face) { diff --git a/core/math/math_defs.h b/core/math/math_defs.h index 4928c96abd..5192722839 100644 --- a/core/math/math_defs.h +++ b/core/math/math_defs.h @@ -66,27 +66,23 @@ enum ClockDirection { }; enum Orientation { - HORIZONTAL, VERTICAL }; enum HAlign { - HALIGN_LEFT, HALIGN_CENTER, HALIGN_RIGHT }; enum VAlign { - VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM }; enum Margin { - MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, @@ -94,7 +90,6 @@ enum Margin { }; enum Corner { - CORNER_TOP_LEFT, CORNER_TOP_RIGHT, CORNER_BOTTOM_RIGHT, diff --git a/core/math/math_fieldwise.cpp b/core/math/math_fieldwise.cpp index ef2a0c5339..221c6812c1 100644 --- a/core/math/math_fieldwise.cpp +++ b/core/math/math_fieldwise.cpp @@ -47,9 +47,7 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const /* clang-format off */ switch (p_source.get_type()) { - case Variant::VECTOR2: { - SETUP_TYPE(Vector2) /**/ TRY_TRANSFER_FIELD("x", x) @@ -59,7 +57,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::RECT2: { - SETUP_TYPE(Rect2) /**/ TRY_TRANSFER_FIELD("x", position.x) @@ -71,7 +68,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::VECTOR3: { - SETUP_TYPE(Vector3) /**/ TRY_TRANSFER_FIELD("x", x) @@ -82,7 +78,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::PLANE: { - SETUP_TYPE(Plane) /**/ TRY_TRANSFER_FIELD("x", normal.x) @@ -94,7 +89,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::QUAT: { - SETUP_TYPE(Quat) /**/ TRY_TRANSFER_FIELD("x", x) @@ -106,7 +100,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::AABB: { - SETUP_TYPE(AABB) /**/ TRY_TRANSFER_FIELD("px", position.x) @@ -120,7 +113,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::TRANSFORM2D: { - SETUP_TYPE(Transform2D) /**/ TRY_TRANSFER_FIELD("xx", elements[0][0]) @@ -134,7 +126,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::BASIS: { - SETUP_TYPE(Basis) /**/ TRY_TRANSFER_FIELD("xx", elements[0][0]) @@ -151,7 +142,6 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const } case Variant::TRANSFORM: { - SETUP_TYPE(Transform) /**/ TRY_TRANSFER_FIELD("xx", basis.elements[0][0]) diff --git a/core/math/octree.h b/core/math/octree.h index 40201f99b1..be1e7d6a61 100644 --- a/core/math/octree.h +++ b/core/math/octree.h @@ -379,7 +379,6 @@ void Octree<T, use_pairs, AL>::_insert_element(Element *p_element, Octant *p_oct if (p_octant->aabb.size.x / OCTREE_DIVISOR < element_size) { //if (p_octant->aabb.size.x*0.5 < element_size) { - /* at smallest possible size for the element */ typename Element::OctantOwner owner; owner.octant = p_octant; diff --git a/core/object/callable_method_pointer.h b/core/object/callable_method_pointer.h index ee6da6a8db..68990dcb72 100644 --- a/core/object/callable_method_pointer.h +++ b/core/object/callable_method_pointer.h @@ -114,7 +114,6 @@ Callable create_custom_callable_function_pointer(T *p_instance, const char *p_func_text, #endif void (T::*p_method)(P...)) { - typedef CallableCustomMethodPointer<T, P...> CCMP; // Messes with memnew otherwise. CCMP *ccmp = memnew(CCMP(p_instance, p_method)); #ifdef DEBUG_METHODS_ENABLED @@ -170,7 +169,6 @@ Callable create_custom_callable_function_pointer(T *p_instance, const char *p_func_text, #endif R (T::*p_method)(P...)) { - typedef CallableCustomMethodPointerRet<T, R, P...> CCMP; // Messes with memnew otherwise. CCMP *ccmp = memnew(CCMP(p_instance, p_method)); #ifdef DEBUG_METHODS_ENABLED @@ -226,7 +224,6 @@ Callable create_custom_callable_function_pointer(T *p_instance, const char *p_func_text, #endif R (T::*p_method)(P...) const) { - typedef CallableCustomMethodPointerRetC<T, R, P...> CCMP; // Messes with memnew otherwise. CCMP *ccmp = memnew(CCMP(p_instance, p_method)); #ifdef DEBUG_METHODS_ENABLED diff --git a/core/object/method_bind.h b/core/object/method_bind.h index ab4ba90b94..ddd6ab6baa 100644 --- a/core/object/method_bind.h +++ b/core/object/method_bind.h @@ -34,7 +34,6 @@ #include "core/variant/binder_common.h" enum MethodFlags { - METHOD_FLAG_NORMAL = 1, METHOD_FLAG_EDITOR = 2, METHOD_FLAG_NOSCRIPT = 4, diff --git a/core/object/object.cpp b/core/object/object.cpp index c3f49856ca..96a41d6852 100644 --- a/core/object/object.cpp +++ b/core/object/object.cpp @@ -597,9 +597,6 @@ void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) cons _get_property_listv(p_list, p_reversed); if (!is_class("Script")) { // can still be set, but this is for userfriendlyness -#ifdef TOOLS_ENABLED - p_list->push_back(PropertyInfo(Variant::NIL, "Script", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_GROUP)); -#endif p_list->push_back(PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, "Script", PROPERTY_USAGE_DEFAULT)); } if (!metadata.empty()) { diff --git a/core/object/object.h b/core/object/object.h index c79745cf74..0bcfa42e3d 100644 --- a/core/object/object.h +++ b/core/object/object.h @@ -98,7 +98,6 @@ enum PropertyHint { }; enum PropertyUsageFlags { - PROPERTY_USAGE_STORAGE = 1, PROPERTY_USAGE_EDITOR = 2, PROPERTY_USAGE_NETWORK = 4, @@ -406,7 +405,6 @@ class ScriptInstance; class Object { public: enum ConnectFlags { - CONNECT_DEFERRED = 1, CONNECT_PERSIST = 2, // hint for scene to save this connection CONNECT_ONESHOT = 4, diff --git a/core/object/script_language.h b/core/object/script_language.h index 447216f14f..3fd56c2f15 100644 --- a/core/object/script_language.h +++ b/core/object/script_language.h @@ -57,7 +57,6 @@ struct SortNetData { class ScriptServer { enum { - MAX_LANGUAGES = 16 }; diff --git a/core/os/file_access.h b/core/os/file_access.h index 39b977a4d9..777c82bbd7 100644 --- a/core/os/file_access.h +++ b/core/os/file_access.h @@ -81,7 +81,6 @@ public: virtual void _set_access_type(AccessType p_access); enum ModeFlags { - READ = 1, WRITE = 2, READ_WRITE = 3, diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp index d088151a6d..ef341987dc 100644 --- a/core/os/keyboard.cpp +++ b/core/os/keyboard.cpp @@ -38,7 +38,6 @@ struct _KeyCodeText { }; static const _KeyCodeText _keycodes[] = { - /* clang-format off */ {KEY_ESCAPE ,"Escape"}, {KEY_TAB ,"Tab"}, diff --git a/core/os/keyboard.h b/core/os/keyboard.h index 92664aff8f..67c60a2dbe 100644 --- a/core/os/keyboard.h +++ b/core/os/keyboard.h @@ -294,11 +294,9 @@ enum KeyList { KEY_DIVISION = 0x00F7, KEY_YDIAERESIS = 0x00FF, - }; enum KeyModifierMask { - KEY_CODE_MASK = ((1 << 25) - 1), ///< Apply this mask to any keycode to remove modifiers. KEY_MODIFIER_MASK = (0xFF << 24), ///< Apply this mask to isolate modifiers. KEY_MASK_SHIFT = (1 << 25), @@ -314,7 +312,6 @@ enum KeyModifierMask { KEY_MASK_KPAD = (1 << 29), KEY_MASK_GROUP_SWITCH = (1 << 30) // bit 31 can't be used because variant uses regular 32 bits int as datatype - }; String keycode_get_string(uint32_t p_code); diff --git a/core/os/os.h b/core/os/os.h index a1e75b5ee9..40104b479b 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -77,7 +77,6 @@ public: typedef bool (*HasServerFeatureCallback)(const String &p_feature); enum RenderThreadMode { - RENDER_THREAD_UNSAFE, RENDER_THREAD_SAFE, RENDER_SEPARATE_THREAD diff --git a/core/os/pool_allocator.h b/core/os/pool_allocator.h index 7d77af6266..c67b4d7fa2 100644 --- a/core/os/pool_allocator.h +++ b/core/os/pool_allocator.h @@ -43,7 +43,6 @@ */ enum { - POOL_ALLOCATOR_INVALID_ID = -1 ///< default invalid value. use INVALID_ID( id ) to test }; diff --git a/core/os/thread.h b/core/os/thread.h index d68476e683..b87ec84313 100644 --- a/core/os/thread.h +++ b/core/os/thread.h @@ -39,7 +39,6 @@ typedef void (*ThreadCreateCallback)(void *p_userdata); class Thread { public: enum Priority { - PRIORITY_LOW, PRIORITY_NORMAL, PRIORITY_HIGH diff --git a/core/string/string_name.h b/core/string/string_name.h index e6b46506c3..320f63bf68 100644 --- a/core/string/string_name.h +++ b/core/string/string_name.h @@ -44,7 +44,6 @@ struct StaticCString { class StringName { enum { - STRING_TABLE_BITS = 12, STRING_TABLE_LEN = 1 << STRING_TABLE_BITS, STRING_TABLE_MASK = STRING_TABLE_LEN - 1 diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp index b5758bddf3..213578485e 100644 --- a/core/string/ustring.cpp +++ b/core/string/ustring.cpp @@ -3864,7 +3864,6 @@ String String::xml_escape(bool p_escape_quotes) const { } /* for (int i=1;i<32;i++) { - char chr[2]={i,0}; str=str.replace(chr,"&#"+String::num(i)+";"); }*/ diff --git a/core/string/ustring.h b/core/string/ustring.h index b46733ab66..bfae16fe64 100644 --- a/core/string/ustring.h +++ b/core/string/ustring.h @@ -198,7 +198,6 @@ class String { public: enum { - npos = -1 ///<for "some" compatibility with std::string (npos is a huge value in std::string) }; diff --git a/core/templates/sort_array.h b/core/templates/sort_array.h index a4326ac565..ece5e72e51 100644 --- a/core/templates/sort_array.h +++ b/core/templates/sort_array.h @@ -54,7 +54,6 @@ struct _DefaultComparator { template <class T, class Comparator = _DefaultComparator<T>, bool Validate = SORT_ARRAY_VALIDATE_ENABLED> class SortArray { enum { - INTROSORT_THRESHOLD = 16 }; diff --git a/core/variant/variant.h b/core/variant/variant.h index 1a684eeea0..093daf0c6f 100644 --- a/core/variant/variant.h +++ b/core/variant/variant.h @@ -426,7 +426,6 @@ public: // If this changes the table in variant_op must be updated enum Operator { - //comparison OP_EQUAL, OP_NOT_EQUAL, diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp index 4cb8457ccd..f6fe642493 100644 --- a/core/variant/variant_call.cpp +++ b/core/variant/variant_call.cpp @@ -123,6 +123,31 @@ static _FORCE_INLINE_ void vc_ptrcall(void (T::*method)(P...) const, void *p_bas } template <class R, class T, class... P> +static _FORCE_INLINE_ void vc_change_return_type(R (T::*method)(P...), Variant *v) { + TypeAdjust<R>::adjust(v); +} + +template <class R, class T, class... P> +static _FORCE_INLINE_ void vc_change_return_type(R (T::*method)(P...) const, Variant *v) { + TypeAdjust<R>::adjust(v); +} + +template <class T, class... P> +static _FORCE_INLINE_ void vc_change_return_type(void (T::*method)(P...), Variant *v) { + VariantInternal::clear(v); +} + +template <class T, class... P> +static _FORCE_INLINE_ void vc_change_return_type(void (T::*method)(P...) const, Variant *v) { + VariantInternal::clear(v); +} + +template <class R, class... P> +static _FORCE_INLINE_ void vc_change_return_type(R (*method)(P...), Variant *v) { + TypeAdjust<R>::adjust(v); +} + +template <class R, class T, class... P> static _FORCE_INLINE_ int vc_get_argument_count(R (T::*method)(P...)) { return sizeof...(P); } @@ -258,7 +283,7 @@ static _FORCE_INLINE_ Variant::Type vc_get_base_type(void (T::*method)(P...) con vc_method_call(m_method_ptr, base, p_args, p_argcount, r_ret, p_defvals, r_error); \ } \ static void validated_call(Variant *base, const Variant **p_args, int p_argcount, Variant *r_ret) { \ - TypeAdjust<m_class>::adjust(r_ret); \ + vc_change_return_type(m_method_ptr, r_ret); \ vc_validated_call(m_method_ptr, base, p_args, r_ret); \ } \ static void ptrcall(void *p_base, const void **p_args, void *r_ret, int p_argcount) { \ @@ -301,7 +326,7 @@ static _FORCE_INLINE_ void vc_ptrcall(R (*method)(T *, P...), void *p_base, cons call_with_variant_args_retc_static_helper_dv(VariantGetInternalPtr<m_class>::get_ptr(base), m_method_ptr, p_args, p_argcount, r_ret, p_defvals, r_error); \ } \ static void validated_call(Variant *base, const Variant **p_args, int p_argcount, Variant *r_ret) { \ - TypeAdjust<m_class>::adjust(r_ret); \ + vc_change_return_type(m_method_ptr, r_ret); \ call_with_validated_variant_args_static_retc(base, m_method_ptr, p_args, r_ret); \ } \ static void ptrcall(void *p_base, const void **p_args, void *r_ret, int p_argcount) { \ @@ -607,7 +632,6 @@ void Variant::call(const StringName &p_method, const Variant **p_args, int p_arg r_ret = _get_obj().obj->call(p_method, p_args, p_argcount, r_error); //else if (type==Variant::METHOD) { - } else { r_error.error = Callable::CallError::CALL_OK; diff --git a/core/variant/variant_op.cpp b/core/variant/variant_op.cpp index 8e55c1d6cd..74ecbfb8d1 100644 --- a/core/variant/variant_op.cpp +++ b/core/variant/variant_op.cpp @@ -2159,7 +2159,6 @@ static const char *_op_names[Variant::OP_MAX] = { "xor", "not", "in" - }; String Variant::get_operator_name(Operator p_op) { diff --git a/core/variant/variant_parser.h b/core/variant/variant_parser.h index 59d18a8b9f..cf1941a40e 100644 --- a/core/variant/variant_parser.h +++ b/core/variant/variant_parser.h @@ -100,7 +100,6 @@ public: }; enum Expecting { - EXPECT_OBJECT, EXPECT_OBJECT_KEY, EXPECT_COLON, diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp index 91a1b0262c..70edcd48c2 100644 --- a/core/variant/variant_utility.cpp +++ b/core/variant/variant_utility.cpp @@ -40,12 +40,15 @@ struct VariantUtilityFunctions { // Math + static inline double sin(double arg) { return Math::sin(arg); } + static inline double cos(double arg) { return Math::cos(arg); } + static inline double tan(double arg) { return Math::tan(arg); } @@ -53,9 +56,11 @@ struct VariantUtilityFunctions { static inline double sinh(double arg) { return Math::sinh(arg); } + static inline double cosh(double arg) { return Math::cosh(arg); } + static inline double tanh(double arg) { return Math::tanh(arg); } @@ -63,9 +68,11 @@ struct VariantUtilityFunctions { static inline double asin(double arg) { return Math::asin(arg); } + static inline double acos(double arg) { return Math::acos(arg); } + static inline double atan(double arg) { return Math::atan(arg); } @@ -173,6 +180,7 @@ struct VariantUtilityFunctions { static inline double pow(double x, double y) { return Math::pow(x, y); } + static inline double log(double x) { return Math::log(x); } @@ -181,24 +189,24 @@ struct VariantUtilityFunctions { return Math::exp(x); } - static inline double is_nan(double x) { + static inline bool is_nan(double x) { return Math::is_nan(x); } - static inline double is_inf(double x) { + static inline bool is_inf(double x) { return Math::is_inf(x); } - static inline double is_equal_approx(double x, double y) { + static inline bool is_equal_approx(double x, double y) { return Math::is_equal_approx(x, y); } - static inline double is_zero_approx(double x) { + static inline bool is_zero_approx(double x) { return Math::is_zero_approx(x); } - static inline double ease(float x, float c) { - return Math::ease(x, c); + static inline double ease(float x, float curve) { + return Math::ease(x, curve); } static inline int step_decimals(float step) { @@ -268,6 +276,7 @@ struct VariantUtilityFunctions { static inline int64_t wrapi(int64_t value, int64_t min, int64_t max) { return Math::wrapi(value, min, max); } + static inline double wrapf(double value, double min, double max) { return Math::wrapf(value, min, max); } @@ -695,9 +704,9 @@ struct VariantUtilityFunctions { return p_arr.hash(); } - static inline Variant instance_from_id(int64_t p_id) { + static inline Object *instance_from_id(int64_t p_id) { ObjectID id = ObjectID((uint64_t)p_id); - Variant ret = ObjectDB::get_instance(id); + Object *ret = ObjectDB::get_instance(id); return ret; } @@ -829,22 +838,18 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { static void call(Variant *r_ret, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { \ call_helperr(VariantUtilityFunctions::m_func, r_ret, p_args, r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ validated_call_helperr(VariantUtilityFunctions::m_func, r_ret, p_args); \ } \ static void ptrcall(void *ret, const void **p_args, int p_argcount) { \ ptr_call_helperr(VariantUtilityFunctions::m_func, ret, p_args); \ } \ - \ static int get_argument_count() { \ return get_arg_count_helperr(VariantUtilityFunctions::m_func); \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return get_arg_type_helperr(VariantUtilityFunctions::m_func, p_arg); \ } \ - \ static Variant::Type get_return_type() { \ return get_ret_type_helperr(VariantUtilityFunctions::m_func); \ } \ @@ -863,7 +868,6 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { r_error.error = Callable::CallError::CALL_OK; \ *r_ret = VariantUtilityFunctions::m_func(*p_args[0], r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ Callable::CallError ce; \ *r_ret = VariantUtilityFunctions::m_func(*p_args[0], ce); \ @@ -872,15 +876,12 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { Callable::CallError ce; \ PtrToArg<Variant>::encode(VariantUtilityFunctions::m_func(PtrToArg<Variant>::convert(p_args[0]), ce), ret); \ } \ - \ static int get_argument_count() { \ return 1; \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return Variant::NIL; \ } \ - \ static Variant::Type get_return_type() { \ return Variant::NIL; \ } \ @@ -899,7 +900,6 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { r_error.error = Callable::CallError::CALL_OK; \ *r_ret = VariantUtilityFunctions::m_func(*p_args[0], *p_args[1], *p_args[2], r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ Callable::CallError ce; \ *r_ret = VariantUtilityFunctions::m_func(*p_args[0], *p_args[1], *p_args[2], ce); \ @@ -910,15 +910,12 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { r = VariantUtilityFunctions::m_func(PtrToArg<Variant>::convert(p_args[0]), PtrToArg<Variant>::convert(p_args[1]), PtrToArg<Variant>::convert(p_args[2]), ce); \ PtrToArg<Variant>::encode(r, ret); \ } \ - \ static int get_argument_count() { \ return 3; \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return Variant::NIL; \ } \ - \ static Variant::Type get_return_type() { \ return Variant::NIL; \ } \ @@ -937,7 +934,6 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { r_error.error = Callable::CallError::CALL_OK; \ *r_ret = VariantUtilityFunctions::m_func(p_args, p_argcount, r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ Callable::CallError c; \ *r_ret = VariantUtilityFunctions::m_func(p_args, p_argcount, c); \ @@ -955,15 +951,12 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { validated_call(&r, (const Variant **)argsp.ptr(), p_argcount); \ PtrToArg<Variant>::encode(r, ret); \ } \ - \ static int get_argument_count() { \ return 2; \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return Variant::NIL; \ } \ - \ static Variant::Type get_return_type() { \ return Variant::NIL; \ } \ @@ -986,7 +979,6 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { r_error.error = Callable::CallError::CALL_OK; \ *r_ret = VariantUtilityFunctions::m_func(p_args, p_argcount, r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ Callable::CallError c; \ *r_ret = VariantUtilityFunctions::m_func(p_args, p_argcount, c); \ @@ -1004,15 +996,12 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { validated_call(&r, (const Variant **)argsp.ptr(), p_argcount); \ PtrToArg<String>::encode(r.operator String(), ret); \ } \ - \ static int get_argument_count() { \ return 1; \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return Variant::NIL; \ } \ - \ static Variant::Type get_return_type() { \ return Variant::STRING; \ } \ @@ -1035,7 +1024,6 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { r_error.error = Callable::CallError::CALL_OK; \ VariantUtilityFunctions::m_func(p_args, p_argcount, r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ Callable::CallError c; \ VariantUtilityFunctions::m_func(p_args, p_argcount, c); \ @@ -1052,15 +1040,12 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { Variant r; \ validated_call(&r, (const Variant **)argsp.ptr(), p_argcount); \ } \ - \ static int get_argument_count() { \ return 1; \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return Variant::NIL; \ } \ - \ static Variant::Type get_return_type() { \ return Variant::NIL; \ } \ @@ -1082,22 +1067,18 @@ static _FORCE_INLINE_ Variant::Type get_ret_type_helper(void (*p_func)(P...)) { static void call(Variant *r_ret, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { \ call_helper(VariantUtilityFunctions::m_func, p_args, r_error); \ } \ - \ static void validated_call(Variant *r_ret, const Variant **p_args, int p_argcount) { \ validated_call_helper(VariantUtilityFunctions::m_func, p_args); \ } \ static void ptrcall(void *ret, const void **p_args, int p_argcount) { \ ptr_call_helper(VariantUtilityFunctions::m_func, p_args); \ } \ - \ static int get_argument_count() { \ return get_arg_count_helper(VariantUtilityFunctions::m_func); \ } \ - \ static Variant::Type get_argument_type(int p_arg) { \ return get_arg_type_helper(VariantUtilityFunctions::m_func, p_arg); \ } \ - \ static Variant::Type get_return_type() { \ return get_ret_type_helper(VariantUtilityFunctions::m_func); \ } \ @@ -1187,7 +1168,7 @@ void Variant::_register_variant_utility_functions() { FUNCBINDR(signf, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(signi, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(pow, sarray("x", "y"), Variant::UTILITY_FUNC_TYPE_MATH); + FUNCBINDR(pow, sarray("base", "exp"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(log, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(exp, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); @@ -1197,17 +1178,17 @@ void Variant::_register_variant_utility_functions() { FUNCBINDR(is_equal_approx, sarray("a", "b"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(is_zero_approx, sarray("x"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(ease, sarray("x", "c"), Variant::UTILITY_FUNC_TYPE_MATH); + 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(stepify, sarray("x", "y"), Variant::UTILITY_FUNC_TYPE_MATH); + FUNCBINDR(stepify, sarray("x", "step"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(lerp, sarray("from", "to", "c"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(lerp_angle, sarray("from", "to", "c"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(inverse_lerp, sarray("from", "to", "c"), Variant::UTILITY_FUNC_TYPE_MATH); + FUNCBINDR(lerp, sarray("from", "to", "weight"), Variant::UTILITY_FUNC_TYPE_MATH); + FUNCBINDR(lerp_angle, sarray("from", "to", "weight"), Variant::UTILITY_FUNC_TYPE_MATH); + FUNCBINDR(inverse_lerp, sarray("from", "to", "weight"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(range_lerp, sarray("value", "istart", "istop", "ostart", "ostop"), Variant::UTILITY_FUNC_TYPE_MATH); - FUNCBINDR(smoothstep, sarray("from", "to", "c"), Variant::UTILITY_FUNC_TYPE_MATH); + FUNCBINDR(smoothstep, sarray("from", "to", "x"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(move_toward, sarray("from", "to", "delta"), Variant::UTILITY_FUNC_TYPE_MATH); FUNCBINDR(dectime, sarray("value", "amount", "step"), Variant::UTILITY_FUNC_TYPE_MATH); @@ -1238,7 +1219,7 @@ void Variant::_register_variant_utility_functions() { FUNCBINDR(nearest_po2, sarray("value"), Variant::UTILITY_FUNC_TYPE_MATH); - //Random + // Random FUNCBIND(randomize, sarray(), Variant::UTILITY_FUNC_TYPE_RANDOM); FUNCBINDR(randi, sarray(), Variant::UTILITY_FUNC_TYPE_RANDOM); @@ -1249,7 +1230,8 @@ void Variant::_register_variant_utility_functions() { FUNCBINDR(rand_from_seed, sarray("seed"), Variant::UTILITY_FUNC_TYPE_RANDOM); // Utility - FUNCBINDVR(weakref, sarray("from"), Variant::UTILITY_FUNC_TYPE_GENERAL); + + FUNCBINDVR(weakref, sarray("obj"), Variant::UTILITY_FUNC_TYPE_GENERAL); FUNCBINDR(_typeof, sarray("variable"), Variant::UTILITY_FUNC_TYPE_GENERAL); FUNCBINDVARARGS(str, sarray(), Variant::UTILITY_FUNC_TYPE_GENERAL); FUNCBINDVARARGV(print, sarray(), Variant::UTILITY_FUNC_TYPE_GENERAL); @@ -1271,10 +1253,11 @@ void Variant::_register_variant_utility_functions() { FUNCBINDR(hash, sarray("variable"), Variant::UTILITY_FUNC_TYPE_GENERAL); - FUNCBINDR(instance_from_id, sarray("id"), Variant::UTILITY_FUNC_TYPE_GENERAL); + FUNCBINDR(instance_from_id, sarray("instance_id"), Variant::UTILITY_FUNC_TYPE_GENERAL); FUNCBINDR(is_instance_id_valid, sarray("id"), Variant::UTILITY_FUNC_TYPE_GENERAL); FUNCBINDR(is_instance_valid, sarray("instance"), Variant::UTILITY_FUNC_TYPE_GENERAL); } + void Variant::_unregister_variant_utility_functions() { utility_function_table.clear(); utility_function_name_table.clear(); @@ -1318,6 +1301,7 @@ Variant::ValidatedUtilityFunction Variant::get_validated_utility_function(const return bfi->validated_call_utility; } + Variant::PTRUtilityFunction Variant::get_ptr_utility_function(const StringName &p_name) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { @@ -1344,6 +1328,7 @@ int Variant::get_utility_function_argument_count(const StringName &p_name) { return bfi->argcount; } + Variant::Type Variant::get_utility_function_argument_type(const StringName &p_name, int p_arg) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { @@ -1352,6 +1337,7 @@ Variant::Type Variant::get_utility_function_argument_type(const StringName &p_na return bfi->get_arg_type(p_arg); } + String Variant::get_utility_function_argument_name(const StringName &p_name, int p_arg) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { @@ -1361,6 +1347,7 @@ String Variant::get_utility_function_argument_name(const StringName &p_name, int ERR_FAIL_INDEX_V(p_arg, bfi->argnames.size(), String()); return bfi->argnames[p_arg]; } + bool Variant::has_utility_function_return_value(const StringName &p_name) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { @@ -1368,6 +1355,7 @@ bool Variant::has_utility_function_return_value(const StringName &p_name) { } return bfi->returns_value; } + Variant::Type Variant::get_utility_function_return_type(const StringName &p_name) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { @@ -1376,6 +1364,7 @@ Variant::Type Variant::get_utility_function_return_type(const StringName &p_name return bfi->return_type; } + bool Variant::is_utility_function_vararg(const StringName &p_name) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index ee65bbc07e..f6b8e0da19 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -10,6 +10,1147 @@ <tutorials> </tutorials> <methods> + <method name="abs"> + <return type="Variant"> + </return> + <argument index="0" name="x" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="absf"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the absolute value of float parameter [code]x[/code] (i.e. positive value). + [codeblock] + # a is 1.2 + a = absf(-1.2) + [/codeblock] + </description> + </method> + <method name="absi"> + <return type="int"> + </return> + <argument index="0" name="x" type="int"> + </argument> + <description> + Returns the absolute value of int parameter [code]x[/code] (i.e. positive value). + [codeblock] + # a is 1 + a = absi(-1) + [/codeblock] + </description> + </method> + <method name="acos"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the arc cosine of [code]x[/code] in radians. Use to get the angle of cosine [code]x[/code]. + [codeblock] + # c is 0.523599 or 30 degrees if converted with rad2deg(c) + c = acos(0.866025) + [/codeblock] + </description> + </method> + <method name="asin"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the arc sine of [code]x[/code] in radians. Use to get the angle of sine [code]x[/code]. + [codeblock] + # s is 0.523599 or 30 degrees if converted with rad2deg(s) + s = asin(0.5) + [/codeblock] + </description> + </method> + <method name="atan"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the arc tangent of [code]x[/code] in radians. Use it to get the angle from an angle's tangent in trigonometry: [code]atan(tan(angle)) == angle[/code]. + The method cannot know in which quadrant the angle should fall. See [method atan2] if you have both [code]y[/code] and [code]x[/code]. + [codeblock] + a = atan(0.5) # a is 0.463648 + [/codeblock] + </description> + </method> + <method name="atan2"> + <return type="float"> + </return> + <argument index="0" name="y" type="float"> + </argument> + <argument index="1" name="x" type="float"> + </argument> + <description> + Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle of tangent [code]y/x[/code]. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant. + Important note: The Y coordinate comes first, by convention. + [codeblock] + a = atan2(0, -1) # a is 3.141593 + [/codeblock] + </description> + </method> + <method name="bytes2var"> + <return type="Variant"> + </return> + <argument index="0" name="bytes" type="PackedByteArray"> + </argument> + <description> + Decodes a byte array back to a [Variant] value, without decoding objects. + [b]Note:[/b] If you need object deserialization, see [method bytes2var_with_objects]. + </description> + </method> + <method name="bytes2var_with_objects"> + <return type="Variant"> + </return> + <argument index="0" name="bytes" type="PackedByteArray"> + </argument> + <description> + Decodes a byte array back to a [Variant] value. Decoding objects is allowed. + [b]WARNING:[/b] Deserialized object can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats (remote code execution). + </description> + </method> + <method name="cartesian2polar"> + <return type="Vector2"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <description> + Converts a 2D point expressed in the cartesian coordinate system (X and Y axis) to the polar coordinate system (a distance from the origin and an angle). + </description> + </method> + <method name="ceil"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Rounds [code]x[/code] upward (towards positive infinity), returning the smallest whole number that is not less than [code]x[/code]. + [codeblock] + i = ceil(1.45) # i is 2 + i = ceil(1.001) # i is 2 + [/codeblock] + See also [method floor], [method round], and [method stepify]. + </description> + </method> + <method name="clamp"> + <return type="Variant"> + </return> + <argument index="0" name="value" type="Variant"> + </argument> + <argument index="1" name="min" type="Variant"> + </argument> + <argument index="2" name="max" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="clampf"> + <return type="float"> + </return> + <argument index="0" name="value" type="float"> + </argument> + <argument index="1" name="min" type="float"> + </argument> + <argument index="2" name="max" type="float"> + </argument> + <description> + Clamps the float [code]value[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code]. + [codeblock] + speed = 42.1 + # a is 20.0 + a = clampf(speed, 1.0, 20.0) + + speed = -10.0 + # a is -1.0 + a = clampf(speed, -1.0, 1.0) + [/codeblock] + </description> + </method> + <method name="clampi"> + <return type="int"> + </return> + <argument index="0" name="value" type="int"> + </argument> + <argument index="1" name="min" type="int"> + </argument> + <argument index="2" name="max" type="int"> + </argument> + <description> + Clamps the integer [code]value[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code]. + [codeblock] + speed = 42 + # a is 20 + a = clampi(speed, 1, 20) + + speed = -10 + # a is -1 + a = clampi(speed, -1, 1) + [/codeblock] + </description> + </method> + <method name="cos"> + <return type="float"> + </return> + <argument index="0" name="angle_rad" type="float"> + </argument> + <description> + Returns the cosine of angle [code]angle_rad[/code] in radians. + [codeblock] + # Prints 1 then -1 + print(cos(PI * 2)) + print(cos(PI)) + [/codeblock] + </description> + </method> + <method name="cosh"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the hyperbolic cosine of [code]x[/code] in radians. + [codeblock] + # Prints 1.543081 + print(cosh(1)) + [/codeblock] + </description> + </method> + <method name="db2linear"> + <return type="float"> + </return> + <argument index="0" name="db" type="float"> + </argument> + <description> + Converts from decibels to linear energy (audio). + </description> + </method> + <method name="dectime"> + <return type="float"> + </return> + <argument index="0" name="value" type="float"> + </argument> + <argument index="1" name="amount" type="float"> + </argument> + <argument index="2" name="step" type="float"> + </argument> + <description> + Returns the result of [code]value[/code] decreased by [code]step[/code] * [code]amount[/code]. + [codeblock] + # a = 59 + a = dectime(60, 10, 0.1)) + [/codeblock] + </description> + </method> + <method name="deg2rad"> + <return type="float"> + </return> + <argument index="0" name="deg" type="float"> + </argument> + <description> + Converts an angle expressed in degrees to radians. + [codeblock] + # r is 3.141593 + r = deg2rad(180) + [/codeblock] + </description> + </method> + <method name="ease"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="curve" type="float"> + </argument> + <description> + Easing function, based on exponent. The curve values are: 0 is constant, 1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-out/out in. + </description> + </method> + <method name="exp"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + The natural exponential function. It raises the mathematical constant [b]e[/b] to the power of [code]x[/code] and returns it. + [b]e[/b] has an approximate value of 2.71828, and can be obtained with [code]exp(1)[/code]. + For exponents to other bases use the method [method pow]. + [codeblock] + a = exp(2) # Approximately 7.39 + [/codeblock] + </description> + </method> + <method name="floor"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Rounds [code]x[/code] downward (towards negative infinity), returning the largest whole number that is not more than [code]x[/code]. + [codeblock] + # a is 2.0 + a = floor(2.99) + # a is -3.0 + a = floor(-2.99) + [/codeblock] + See also [method ceil], [method round], and [method stepify]. + [b]Note:[/b] This method returns a float. If you need an integer, you can use [code]int(x)[/code] directly. + </description> + </method> + <method name="fmod"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <description> + Returns the floating-point remainder of [code]x/y[/code], keeping the sign of [code]x[/code]. + [codeblock] + # Remainder is 1.5 + var remainder = fmod(7, 5.5) + [/codeblock] + For the integer remainder operation, use the [code]%[/code] operator. + </description> + </method> + <method name="fposmod"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <description> + Returns the floating-point modulus of [code]x/y[/code] that wraps equally in positive and negative. + [codeblock] + for i in 7: + var x = 0.5 * i - 1.5 + print("%4.1f %4.1f %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)]) + [/codeblock] + Produces: + [codeblock] + -1.5 -0.0 0.0 + -1.0 -1.0 0.5 + -0.5 -0.5 1.0 + 0.0 0.0 0.0 + 0.5 0.5 0.5 + 1.0 1.0 1.0 + 1.5 0.0 0.0 + [/codeblock] + </description> + </method> + <method name="hash"> + <return type="int"> + </return> + <argument index="0" name="variable" type="Variant"> + </argument> + <description> + Returns the integer hash of the variable passed. + [codeblock] + print(hash("a")) # Prints 177670 + [/codeblock] + </description> + </method> + <method name="instance_from_id"> + <return type="Object"> + </return> + <argument index="0" name="instance_id" type="int"> + </argument> + <description> + Returns the Object that corresponds to [code]instance_id[/code]. All Objects have a unique instance ID. + [codeblock] + var foo = "bar" + func _ready(): + var id = get_instance_id() + var inst = instance_from_id(id) + print(inst.foo) # Prints bar + [/codeblock] + </description> + </method> + <method name="inverse_lerp"> + <return type="float"> + </return> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <argument index="2" name="weight" type="float"> + </argument> + <description> + Returns a normalized value considering the given range. This is the opposite of [method lerp]. + [codeblock] + var middle = lerp(20, 30, 0.75) + # `middle` is now 27.5. + # Now, we pretend to have forgotten the original ratio and want to get it back. + var ratio = inverse_lerp(20, 30, 27.5) + # `ratio` is now 0.75. + [/codeblock] + </description> + </method> + <method name="is_equal_approx"> + <return type="bool"> + </return> + <argument index="0" name="a" type="float"> + </argument> + <argument index="1" name="b" type="float"> + </argument> + <description> + Returns [code]true[/code] if [code]a[/code] and [code]b[/code] are approximately equal to each other. + Here, approximately equal means that [code]a[/code] and [code]b[/code] are within a small internal epsilon of each other, which scales with the magnitude of the numbers. + Infinity values of the same sign are considered equal. + </description> + </method> + <method name="is_inf"> + <return type="bool"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns whether [code]x[/code] is an infinity value (either positive infinity or negative infinity). + </description> + </method> + <method name="is_instance_id_valid"> + <return type="bool"> + </return> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </method> + <method name="is_instance_valid"> + <return type="bool"> + </return> + <argument index="0" name="instance" type="Variant"> + </argument> + <description> + Returns whether [code]instance[/code] is a valid object (e.g. has not been deleted from memory). + </description> + </method> + <method name="is_nan"> + <return type="bool"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns whether [code]x[/code] is a NaN ("Not a Number" or invalid) value. + </description> + </method> + <method name="is_zero_approx"> + <return type="bool"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns [code]true[/code] if [code]x[/code] is zero or almost zero. + This method is faster than using [method is_equal_approx] with one value as zero. + </description> + </method> + <method name="lerp"> + <return type="float"> + </return> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <argument index="2" name="weight" type="float"> + </argument> + <description> + Linearly interpolates between two values by a normalized value. This is the opposite of [method inverse_lerp]. + [codeblock] + lerp(0, 4, 0.75) # Returns 3.0 + [/codeblock] + </description> + </method> + <method name="lerp_angle"> + <return type="float"> + </return> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <argument index="2" name="weight" type="float"> + </argument> + <description> + Linearly interpolates between two angles (in radians) by a normalized value. + Similar to [method lerp], but interpolates correctly when the angles wrap around [constant @GDScript.TAU]. + [codeblock] + extends Sprite + var elapsed = 0.0 + func _process(delta): + var min_angle = deg2rad(0.0) + var max_angle = deg2rad(90.0) + rotation = lerp_angle(min_angle, max_angle, elapsed) + elapsed += delta + [/codeblock] + </description> + </method> + <method name="linear2db"> + <return type="float"> + </return> + <argument index="0" name="lin" type="float"> + </argument> + <description> + Converts from linear energy to decibels (audio). This can be used to implement volume sliders that behave as expected (since volume isn't linear). Example: + [codeblock] + # "Slider" refers to a node that inherits Range such as HSlider or VSlider. + # Its range must be configured to go from 0 to 1. + # Change the bus name if you'd like to change the volume of a specific bus only. + AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear2db($Slider.value)) + [/codeblock] + </description> + </method> + <method name="log"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Natural logarithm. The amount of time needed to reach a certain level of continuous growth. + [b]Note:[/b] This is not the same as the "log" function on most calculators, which uses a base 10 logarithm. + [codeblock] + log(10) # Returns 2.302585 + [/codeblock] + [b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], while negative values return [code]-nan[/code]. + </description> + </method> + <method name="max" qualifiers="vararg"> + <return type="Variant"> + </return> + <description> + Returns the maximum of the given values. This method can take any number of arguments. + [codeblock] + max(1, 7, 3, -6, 5) # Returns 7 + [/codeblock] + </description> + </method> + <method name="maxf"> + <return type="float"> + </return> + <argument index="0" name="a" type="float"> + </argument> + <argument index="1" name="b" type="float"> + </argument> + <description> + Returns the maximum of two float values. + [codeblock] + maxf(3.6, 24) # Returns 24.0 + maxf(-3.99, -4) # Returns -3.99 + [/codeblock] + </description> + </method> + <method name="maxi"> + <return type="int"> + </return> + <argument index="0" name="a" type="int"> + </argument> + <argument index="1" name="b" type="int"> + </argument> + <description> + Returns the maximum of two int values. + [codeblock] + maxi(1, 2) # Returns 2 + maxi(-3, -4) # Returns -3 + [/codeblock] + </description> + </method> + <method name="min" qualifiers="vararg"> + <return type="Variant"> + </return> + <description> + Returns the minimum of the given values. This method can take any number of arguments. + [codeblock] + min(1, 7, 3, -6, 5) # Returns -6 + [/codeblock] + </description> + </method> + <method name="minf"> + <return type="float"> + </return> + <argument index="0" name="a" type="float"> + </argument> + <argument index="1" name="b" type="float"> + </argument> + <description> + Returns the minimum of two float values. + [codeblock] + minf(3.6, 24) # Returns 3.6 + minf(-3.99, -4) # Returns -4.0 + [/codeblock] + </description> + </method> + <method name="mini"> + <return type="int"> + </return> + <argument index="0" name="a" type="int"> + </argument> + <argument index="1" name="b" type="int"> + </argument> + <description> + Returns the minimum of two int values. + [codeblock] + mini(1, 2) # Returns 1 + mini(-3, -4) # Returns -4 + [/codeblock] + </description> + </method> + <method name="move_toward"> + <return type="float"> + </return> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <argument index="2" name="delta" type="float"> + </argument> + <description> + Moves [code]from[/code] toward [code]to[/code] by the [code]delta[/code] value. + Use a negative [code]delta[/code] value to move away. + [codeblock] + move_toward(5, 10, 4) # Returns 9 + move_toward(10, 5, 4) # Returns 6 + move_toward(10, 5, -1.5) # Returns 11.5 + [/codeblock] + </description> + </method> + <method name="nearest_po2"> + <return type="int"> + </return> + <argument index="0" name="value" type="int"> + </argument> + <description> + Returns the nearest equal or larger power of 2 for integer [code]value[/code]. + In other words, returns the smallest value [code]a[/code] where [code]a = pow(2, n)[/code] such that [code]value <= a[/code] for some non-negative integer [code]n[/code]. + [codeblock] + nearest_po2(3) # Returns 4 + nearest_po2(4) # Returns 4 + nearest_po2(5) # Returns 8 + + nearest_po2(0) # Returns 0 (this may not be what you expect) + nearest_po2(-1) # Returns 0 (this may not be what you expect) + [/codeblock] + [b]WARNING:[/b] Due to the way it is implemented, this function returns [code]0[/code] rather than [code]1[/code] for non-positive values of [code]value[/code] (in reality, 1 is the smallest integer power of 2). + </description> + </method> + <method name="polar2cartesian"> + <return type="Vector2"> + </return> + <argument index="0" name="r" type="float"> + </argument> + <argument index="1" name="th" type="float"> + </argument> + <description> + Converts a 2D point expressed in the polar coordinate system (a distance from the origin [code]r[/code] and an angle [code]th[/code]) to the cartesian coordinate system (X and Y axis). + </description> + </method> + <method name="pow"> + <return type="float"> + </return> + <argument index="0" name="base" type="float"> + </argument> + <argument index="1" name="exp" type="float"> + </argument> + <description> + Returns the result of [code]base[/code] raised to the power of [code]exp[/code]. + [codeblock] + pow(2, 5) # Returns 32 + [/codeblock] + </description> + </method> + <method name="print" qualifiers="vararg"> + <description> + Converts one or more arguments to strings in the best way possible and prints them to the console. + [codeblock] + a = [1, 2, 3] + print("a", "b", a) # Prints ab[1, 2, 3] + [/codeblock] + [b]Note:[/b] Consider using [method push_error] and [method push_warning] to print error and warning messages instead of [method print]. This distinguishes them from print messages used for debugging purposes, while also displaying a stack trace when an error or warning is printed. + </description> + </method> + <method name="printerr" qualifiers="vararg"> + <description> + Prints one or more arguments to strings in the best way possible to standard error line. + [codeblock] + printerr("prints to stderr") + [/codeblock] + </description> + </method> + <method name="printraw" qualifiers="vararg"> + <description> + Prints one or more arguments to strings in the best way possible to console. No newline is added at the end. + [codeblock] + printraw("A") + printraw("B") + # Prints AB + [/codeblock] + [b]Note:[/b] Due to limitations with Godot's built-in console, this only prints to the terminal. If you need to print in the editor, use another method, such as [method print]. + </description> + </method> + <method name="prints" qualifiers="vararg"> + <description> + Prints one or more arguments to the console with a space between each argument. + [codeblock] + prints("A", "B", "C") # Prints A B C + [/codeblock] + </description> + </method> + <method name="printt" qualifiers="vararg"> + <description> + Prints one or more arguments to the console with a tab between each argument. + [codeblock] + printt("A", "B", "C") # Prints A B C + [/codeblock] + </description> + </method> + <method name="push_error" qualifiers="vararg"> + <description> + Pushes an error message to Godot's built-in debugger and to the OS terminal. + [codeblock] + push_error("test error") # Prints "test error" to debugger and terminal as error call + [/codeblock] + [b]Note:[/b] Errors printed this way will not pause project execution. To print an error message and pause project execution in debug builds, use [code]assert(false, "test error")[/code] instead. + </description> + </method> + <method name="push_warning" qualifiers="vararg"> + <description> + Pushes a warning message to Godot's built-in debugger and to the OS terminal. + [codeblock] + push_warning("test warning") # Prints "test warning" to debugger and terminal as warning call + [/codeblock] + </description> + </method> + <method name="rad2deg"> + <return type="float"> + </return> + <argument index="0" name="rad" type="float"> + </argument> + <description> + Converts an angle expressed in radians to degrees. + [codeblock] + rad2deg(0.523599) # Returns 30 + [/codeblock] + </description> + </method> + <method name="rand_from_seed"> + <return type="PackedInt64Array"> + </return> + <argument index="0" name="seed" type="int"> + </argument> + <description> + Random from seed: pass a [code]seed[/code], and an array with both number and new seed is returned. "Seed" here refers to the internal state of the pseudo random number generator. The internal state of the current implementation is 64 bits. + </description> + </method> + <method name="randf"> + <return type="float"> + </return> + <description> + Returns a random floating point value on the interval [code][0, 1][/code]. + [codeblock] + randf() # Returns e.g. 0.375671 + [/codeblock] + </description> + </method> + <method name="randf_range"> + <return type="float"> + </return> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <description> + Random range, any floating point value between [code]from[/code] and [code]to[/code]. + [codeblock] + prints(randf_range(-10, 10), randf_range(-10, 10)) # Prints e.g. -3.844535 7.45315 + [/codeblock] + </description> + </method> + <method name="randi"> + <return type="int"> + </return> + <description> + Returns a random unsigned 32 bit integer. Use remainder to obtain a random value in the interval [code][0, N - 1][/code] (where N is smaller than 2^32). + [codeblock] + randi() # Returns random integer between 0 and 2^32 - 1 + randi() % 20 # Returns random integer between 0 and 19 + randi() % 100 # Returns random integer between 0 and 99 + randi() % 100 + 1 # Returns random integer between 1 and 100 + [/codeblock] + </description> + </method> + <method name="randi_range"> + <return type="int"> + </return> + <argument index="0" name="from" type="int"> + </argument> + <argument index="1" name="to" type="int"> + </argument> + <description> + Random range, any 32-bit integer value between [code]from[/code] and [code]to[/code] (inclusive). If [code]to[/code] is lesser than [code]from[/code] they are swapped. + [codeblock] + print(randi_range(0, 1)) # Prints 0 or 1 + print(randi_range(-10, 1000)) # Prints any number from -10 to 1000 + [/codeblock] + </description> + </method> + <method name="randomize"> + <description> + Randomizes the seed (or the internal state) of the random number generator. Current implementation reseeds using a number based on time. + [codeblock] + func _ready(): + randomize() + [/codeblock] + </description> + </method> + <method name="range_lerp"> + <return type="float"> + </return> + <argument index="0" name="value" type="float"> + </argument> + <argument index="1" name="istart" type="float"> + </argument> + <argument index="2" name="istop" type="float"> + </argument> + <argument index="3" name="ostart" type="float"> + </argument> + <argument index="4" name="ostop" type="float"> + </argument> + <description> + Maps a [code]value[/code] from range [code][istart, istop][/code] to [code][ostart, ostop][/code]. + [codeblock] + range_lerp(75, 0, 100, -1, 1) # Returns 0.5 + [/codeblock] + </description> + </method> + <method name="range_step_decimals"> + <return type="int"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + </description> + </method> + <method name="round"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Rounds [code]x[/code] to the nearest whole number, with halfway cases rounded away from zero. + [codeblock] + round(2.6) # Returns 3 + [/codeblock] + See also [method floor], [method ceil], and [method stepify]. + </description> + </method> + <method name="seed"> + <argument index="0" name="base" type="int"> + </argument> + <description> + Sets seed for the random number generator. + [codeblock] + my_seed = "Godot Rocks" + seed(my_seed.hash()) + [/codeblock] + </description> + </method> + <method name="sign"> + <return type="Variant"> + </return> + <argument index="0" name="x" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="signf"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the sign of [code]x[/code] as a float: -1.0 or 1.0. Returns 0.0 if [code]x[/code] is 0. + [codeblock] + sign(-6.0) # Returns -1.0 + sign(0.0) # Returns 0.0 + sign(6.0) # Returns 1.0 + [/codeblock] + </description> + </method> + <method name="signi"> + <return type="int"> + </return> + <argument index="0" name="x" type="int"> + </argument> + <description> + Returns the sign of [code]x[/code] as an integer: -1 or 1. Returns 0 if [code]x[/code] is 0. + [codeblock] + sign(-6) # Returns -1 + sign(0) # Returns 0 + sign(6) # Returns 1 + [/codeblock] + </description> + </method> + <method name="sin"> + <return type="float"> + </return> + <argument index="0" name="angle_rad" type="float"> + </argument> + <description> + Returns the sine of angle [code]angle_rad[/code] in radians. + [codeblock] + sin(0.523599) # Returns 0.5 + [/codeblock] + </description> + </method> + <method name="sinh"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the hyperbolic sine of [code]x[/code]. + [codeblock] + a = log(2.0) # Returns 0.693147 + sinh(a) # Returns 0.75 + [/codeblock] + </description> + </method> + <method name="smoothstep"> + <return type="float"> + </return> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <argument index="2" name="x" type="float"> + </argument> + <description> + Returns the result of smoothly interpolating the value of [code]x[/code] between [code]0[/code] and [code]1[/code], based on the where [code]x[/code] lies with respect to the edges [code]from[/code] and [code]to[/code]. + The return value is [code]0[/code] if [code]x <= from[/code], and [code]1[/code] if [code]x >= to[/code]. If [code]x[/code] lies between [code]from[/code] and [code]to[/code], the returned value follows an S-shaped curve that maps [code]x[/code] between [code]0[/code] and [code]1[/code]. + This S-shaped curve is the cubic Hermite interpolator, given by [code]f(x) = 3*x^2 - 2*x^3[/code]. + [codeblock] + smoothstep(0, 2, -5.0) # Returns 0.0 + smoothstep(0, 2, 0.5) # Returns 0.15625 + smoothstep(0, 2, 1.0) # Returns 0.5 + smoothstep(0, 2, 2.0) # Returns 1.0 + [/codeblock] + </description> + </method> + <method name="sqrt"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the square root of [code]x[/code], where [code]x[/code] is a non-negative number. + [codeblock] + sqrt(9) # Returns 3 + [/codeblock] + [b]Note:[/b]Negative values of [code]x[/code] return NaN. If you need negative inputs, use [code]System.Numerics.Complex[/code] in C#. + </description> + </method> + <method name="step_decimals"> + <return type="int"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the position of the first non-zero digit, after the decimal point. Note that the maximum return value is 10, which is a design decision in the implementation. + [codeblock] + # n is 0 + n = step_decimals(5) + # n is 4 + n = step_decimals(1.0005) + # n is 9 + n = step_decimals(0.000000005) + [/codeblock] + </description> + </method> + <method name="stepify"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="step" type="float"> + </argument> + <description> + Snaps float value [code]x[/code] to a given [code]step[/code]. This can also be used to round a floating point number to an arbitrary number of decimals. + [codeblock] + stepify(100, 32) # Returns 96 + stepify(3.14159, 0.01) # Returns 3.14 + [/codeblock] + See also [method ceil], [method floor], and [method round]. + </description> + </method> + <method name="str" qualifiers="vararg"> + <return type="String"> + </return> + <description> + Converts one or more arguments to string in the best way possible. + </description> + </method> + <method name="str2var"> + <return type="Variant"> + </return> + <argument index="0" name="string" type="String"> + </argument> + <description> + Converts a formatted string that was returned by [method var2str] to the original value. + [codeblock] + a = '{ "a": 1, "b": 2 }' + b = str2var(a) + print(b["a"]) # Prints 1 + [/codeblock] + </description> + </method> + <method name="tan"> + <return type="float"> + </return> + <argument index="0" name="angle_rad" type="float"> + </argument> + <description> + Returns the tangent of angle [code]angle_rad[/code] in radians. + [codeblock] + tan(deg2rad(45)) # Returns 1 + [/codeblock] + </description> + </method> + <method name="tanh"> + <return type="float"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <description> + Returns the hyperbolic tangent of [code]x[/code]. + [codeblock] + a = log(2.0) # Returns 0.693147 + tanh(a) # Returns 0.6 + [/codeblock] + </description> + </method> + <method name="typeof"> + <return type="int"> + </return> + <argument index="0" name="variable" type="Variant"> + </argument> + <description> + Returns the internal type of the given Variant object, using the [enum Variant.Type] values. + [codeblock] + p = parse_json('["a", "b", "c"]') + if typeof(p) == TYPE_ARRAY: + print(p[0]) # Prints a + else: + print("unexpected results") + [/codeblock] + </description> + </method> + <method name="var2bytes"> + <return type="PackedByteArray"> + </return> + <argument index="0" name="variable" type="Variant"> + </argument> + <description> + Encodes a [Variant] value to a byte array, without encoding objects. Deserialization can be done with [method bytes2var]. + [b]Note:[/b] If you need object serialization, see [method var2bytes_with_objects]. + </description> + </method> + <method name="var2bytes_with_objects"> + <return type="PackedByteArray"> + </return> + <argument index="0" name="variable" type="Variant"> + </argument> + <description> + Encodes a [Variant] value to a byte array. Encoding objects is allowed (and can potentially include code). Deserialization can be done with [method bytes2var_with_objects]. + </description> + </method> + <method name="var2str"> + <return type="String"> + </return> + <argument index="0" name="variable" type="Variant"> + </argument> + <description> + Converts a Variant [code]variable[/code] to a formatted string that can later be parsed using [method str2var]. + [codeblock] + a = { "a": 1, "b": 2 } + print(var2str(a)) + [/codeblock] + prints + [codeblock] + { + "a": 1, + "b": 2 + } + [/codeblock] + </description> + </method> + <method name="weakref"> + <return type="Variant"> + </return> + <argument index="0" name="obj" type="Variant"> + </argument> + <description> + Returns a weak reference to an object, or [code]null[/code] is the argument is invalid. + A weak reference to an object is not enough to keep the object alive: when the only remaining references to a referent are weak references, garbage collection is free to destroy the referent and reuse its memory for something else. However, until the object is actually destroyed the weak reference may return the object even if there are no strong references to it. + </description> + </method> + <method name="wrapf"> + <return type="float"> + </return> + <argument index="0" name="value" type="float"> + </argument> + <argument index="1" name="min" type="float"> + </argument> + <argument index="2" name="max" type="float"> + </argument> + <description> + Wraps float [code]value[/code] between [code]min[/code] and [code]max[/code]. + Usable for creating loop-alike behavior or infinite surfaces. + [codeblock] + # Infinite loop between 5.0 and 9.9 + value = wrapf(value + 0.1, 5.0, 10.0) + [/codeblock] + [codeblock] + # Infinite rotation (in radians) + angle = wrapf(angle + 0.1, 0.0, TAU) + [/codeblock] + [codeblock] + # Infinite rotation (in radians) + angle = wrapf(angle + 0.1, -PI, PI) + [/codeblock] + [b]Note:[/b] If [code]min[/code] is [code]0[/code], this is equivalent to [method fposmod], so prefer using that instead. + [code]wrapf[/code] is more flexible than using the [method fposmod] approach by giving the user control over the minimum value. + </description> + </method> + <method name="wrapi"> + <return type="int"> + </return> + <argument index="0" name="value" type="int"> + </argument> + <argument index="1" name="min" type="int"> + </argument> + <argument index="2" name="max" type="int"> + </argument> + <description> + Wraps integer [code]value[/code] between [code]min[/code] and [code]max[/code]. + Usable for creating loop-alike behavior or infinite surfaces. + [codeblock] + # Infinite loop between 5 and 9 + frame = wrapi(frame + 1, 5, 10) + [/codeblock] + [codeblock] + # result is -2 + var result = wrapi(-6, -5, -1) + [/codeblock] + </description> + </method> </methods> <members> <member name="AudioServer" type="AudioServer" setter="" getter=""> @@ -952,130 +2093,61 @@ <constant name="BUTTON_MASK_XBUTTON2" value="256" enum="ButtonList"> Extra mouse button 2 mask. </constant> - <constant name="JOY_INVALID_BUTTON" value="-1" enum="JoyButtonList"> + <constant name="JOY_BUTTON_INVALID" value="-1" enum="JoyButtonList"> An invalid game controller button. </constant> <constant name="JOY_BUTTON_A" value="0" enum="JoyButtonList"> - Game controller SDL button A. + Game controller SDL button A. Corresponds to the bottom action button: Sony Cross, Xbox A, Nintendo B. </constant> <constant name="JOY_BUTTON_B" value="1" enum="JoyButtonList"> - Game controller SDL button B. + Game controller SDL button B. Corresponds to the right action button: Sony Circle, Xbox B, Nintendo A. </constant> <constant name="JOY_BUTTON_X" value="2" enum="JoyButtonList"> - Game controller SDL button X. + Game controller SDL button X. Corresponds to the left action button: Sony Square, Xbox X, Nintendo Y. </constant> <constant name="JOY_BUTTON_Y" value="3" enum="JoyButtonList"> - Game controller SDL button Y. + Game controller SDL button Y. Corresponds to the top action button: Sony Triangle, Xbox Y, Nintendo X. </constant> <constant name="JOY_BUTTON_BACK" value="4" enum="JoyButtonList"> - Game controller SDL back button. + Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, Nintendo - button. </constant> <constant name="JOY_BUTTON_GUIDE" value="5" enum="JoyButtonList"> - Game controller SDL guide button. + Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home button. </constant> <constant name="JOY_BUTTON_START" value="6" enum="JoyButtonList"> - Game controller SDL start button. + Game controller SDL start button. Corresponds to the Nintendo + button. </constant> <constant name="JOY_BUTTON_LEFT_STICK" value="7" enum="JoyButtonList"> - Game controller SDL left stick button. + Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS button. </constant> <constant name="JOY_BUTTON_RIGHT_STICK" value="8" enum="JoyButtonList"> - Game controller SDL right stick button. + Game controller SDL right stick button. Corresponds to the Sony R3, Xbox R/RS button. </constant> <constant name="JOY_BUTTON_LEFT_SHOULDER" value="9" enum="JoyButtonList"> - Game controller SDL left shoulder button. + Game controller SDL left shoulder button. Corresponds to the Sony L1, Xbox LB button. </constant> <constant name="JOY_BUTTON_RIGHT_SHOULDER" value="10" enum="JoyButtonList"> - Game controller SDL right shoulder button. + Game controller SDL right shoulder button. Corresponds to the Sony R1, Xbox RB button. </constant> <constant name="JOY_BUTTON_DPAD_UP" value="11" enum="JoyButtonList"> - Game controller SDL D-pad up button. + Game controller D-pad up button. </constant> <constant name="JOY_BUTTON_DPAD_DOWN" value="12" enum="JoyButtonList"> - Game controller SDL D-pad down button. + Game controller D-pad down button. </constant> <constant name="JOY_BUTTON_DPAD_LEFT" value="13" enum="JoyButtonList"> - Game controller SDL D-pad left button. + Game controller D-pad left button. </constant> <constant name="JOY_BUTTON_DPAD_RIGHT" value="14" enum="JoyButtonList"> - Game controller SDL D-pad right button. + Game controller D-pad right button. </constant> - <constant name="JOY_SDL_BUTTONS" value="15" enum="JoyButtonList"> + <constant name="JOY_BUTTON_SDL_MAX" value="15" enum="JoyButtonList"> The number of SDL game controller buttons. </constant> - <constant name="JOY_SONY_X" value="0" enum="JoyButtonList"> - Sony DualShock controller X button maps to SDL button A. - </constant> - <constant name="JOY_SONY_CROSS" value="0" enum="JoyButtonList"> - Sony DualShock controller cross button maps to SDL button A. - </constant> - <constant name="JOY_SONY_CIRCLE" value="1" enum="JoyButtonList"> - Sony DualShock controller circle button maps to SDL button B. - </constant> - <constant name="JOY_SONY_SQUARE" value="2" enum="JoyButtonList"> - Sony DualShock controller square button maps to SDL button X. - </constant> - <constant name="JOY_SONY_TRIANGLE" value="3" enum="JoyButtonList"> - Sony DualShock controller triangle button maps to SDL button Y. - </constant> - <constant name="JOY_SONY_SELECT" value="4" enum="JoyButtonList"> - Sony DualShock controller select button maps to SDL back button. - </constant> - <constant name="JOY_SONY_START" value="6" enum="JoyButtonList"> - Sony DualShock controller start button maps to SDL start button. - </constant> - <constant name="JOY_SONY_PS" value="5" enum="JoyButtonList"> - Sony DualShock controller PS button maps to SDL guide button. - </constant> - <constant name="JOY_SONY_L1" value="9" enum="JoyButtonList"> - Sony DualShock controller L1 button maps to SDL left shoulder button. - </constant> - <constant name="JOY_SONY_R1" value="10" enum="JoyButtonList"> - Sony DualShock controller R1 button maps to SDL right shoulder button. - </constant> - <constant name="JOY_SONY_L3" value="7" enum="JoyButtonList"> - Sony DualShock controller L3 button maps to SDL left stick button. - </constant> - <constant name="JOY_SONY_R3" value="8" enum="JoyButtonList"> - Sony DualShock controller R3 button maps to SDL right stick button. - </constant> - <constant name="JOY_XBOX_A" value="0" enum="JoyButtonList"> - Xbox game controller A button maps to SDL button A. - </constant> - <constant name="JOY_XBOX_B" value="1" enum="JoyButtonList"> - Xbox game controller B button maps to SDL button B. - </constant> - <constant name="JOY_XBOX_X" value="2" enum="JoyButtonList"> - Xbox game controller X button maps to SDL button X. - </constant> - <constant name="JOY_XBOX_Y" value="3" enum="JoyButtonList"> - Xbox game controller Y button maps to SDL button Y. - </constant> - <constant name="JOY_XBOX_BACK" value="4" enum="JoyButtonList"> - Xbox game controller back button maps to SDL back button. - </constant> - <constant name="JOY_XBOX_START" value="6" enum="JoyButtonList"> - Xbox game controller start button maps to SDL start button. - </constant> - <constant name="JOY_XBOX_HOME" value="5" enum="JoyButtonList"> - Xbox game controller home button maps to SDL guide button. - </constant> - <constant name="JOY_XBOX_LS" value="7" enum="JoyButtonList"> - Xbox game controller left stick button maps to SDL left stick button. - </constant> - <constant name="JOY_XBOX_RS" value="8" enum="JoyButtonList"> - Xbox game controller right stick button maps to SDL right stick button. - </constant> - <constant name="JOY_XBOX_LB" value="9" enum="JoyButtonList"> - Xbox game controller left bumper button maps to SDL left shoulder button. - </constant> - <constant name="JOY_XBOX_RB" value="10" enum="JoyButtonList"> - Xbox game controller right bumper button maps to SDL right shoulder button. - </constant> <constant name="JOY_BUTTON_MAX" value="36" enum="JoyButtonList"> - The maximum number of game controller buttons. + The maximum number of game controller buttons: Android supports up to 36 buttons. </constant> - <constant name="JOY_INVALID_AXIS" value="-1" enum="JoyAxisList"> + <constant name="JOY_AXIS_INVALID" value="-1" enum="JoyAxisList"> An invalid game controller axis. </constant> <constant name="JOY_AXIS_LEFT_X" value="0" enum="JoyAxisList"> @@ -1096,41 +2168,11 @@ <constant name="JOY_AXIS_TRIGGER_RIGHT" value="5" enum="JoyAxisList"> Game controller right trigger axis. </constant> - <constant name="JOY_SDL_AXES" value="6" enum="JoyAxisList"> + <constant name="JOY_AXIS_SDL_MAX" value="6" enum="JoyAxisList"> The number of SDL game controller axes. </constant> - <constant name="JOY_AXIS_0_X" value="0" enum="JoyAxisList"> - Game controller joystick 0 x-axis. - </constant> - <constant name="JOY_AXIS_0_Y" value="1" enum="JoyAxisList"> - Game controller joystick 0 y-axis. - </constant> - <constant name="JOY_AXIS_1_X" value="2" enum="JoyAxisList"> - Game controller joystick 1 x-axis. - </constant> - <constant name="JOY_AXIS_1_Y" value="3" enum="JoyAxisList"> - Game controller joystick 1 y-axis. - </constant> - <constant name="JOY_AXIS_2_X" value="4" enum="JoyAxisList"> - Game controller joystick 2 x-axis. - </constant> - <constant name="JOY_AXIS_2_Y" value="5" enum="JoyAxisList"> - Game controller joystick 2 y-axis. - </constant> - <constant name="JOY_AXIS_3_X" value="6" enum="JoyAxisList"> - Game controller joystick 3 x-axis. - </constant> - <constant name="JOY_AXIS_3_Y" value="7" enum="JoyAxisList"> - Game controller joystick 3 y-axis. - </constant> - <constant name="JOY_AXIS_4_X" value="8" enum="JoyAxisList"> - Game controller joystick 4 x-axis. - </constant> - <constant name="JOY_AXIS_4_Y" value="9" enum="JoyAxisList"> - Game controller joystick 4 y-axis. - </constant> <constant name="JOY_AXIS_MAX" value="10" enum="JoyAxisList"> - The maximum number of game controller axes. + The maximum number of game controller axes: OpenVR supports up to 5 Joysticks making a total of 10 axes. </constant> <constant name="MIDI_MESSAGE_NOTE_OFF" value="8" enum="MidiMessageList"> MIDI note OFF message. diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index 0ad5960d4a..6a9eb89602 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -38,8 +38,9 @@ GD.Print(array1 + array2); // Prints [One, 2, 3, Four] [/csharp] [/codeblocks] - Note that concatenating with [code]+=[/code] operator will create a new array. If you want to append another array to an existing array, [method append_array] is more efficient. + [b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a new array, which has a cost. If you want to append another array to an existing array, [method append_array] is more efficient. [b]Note:[/b] Arrays are always passed by reference. To get a copy of an array which can be modified independently of the original array, use [method duplicate]. + [b]Note:[/b] When declaring an array with [code]const[/code], the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using [code]const[/code] will only prevent assigning the constant with another value after it was initialized. </description> <tutorials> </tutorials> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index 6ea7b79dff..eb0b941da5 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -446,7 +446,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns a color from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. + Returns a color from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code]. [codeblocks] [gdscript] func _ready(): @@ -469,7 +469,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns a constant from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. + Returns a constant from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code]. </description> </method> <method name="get_theme_font" qualifiers="const"> @@ -480,7 +480,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns a font from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. + Returns a font from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code]. </description> </method> <method name="get_theme_icon" qualifiers="const"> @@ -491,7 +491,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns an icon from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. + Returns an icon from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code]. </description> </method> <method name="get_theme_stylebox" qualifiers="const"> @@ -502,7 +502,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns a [StyleBox] from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. + Returns a [StyleBox] from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code]. </description> </method> <method name="get_tooltip" qualifiers="const"> @@ -566,7 +566,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns [code]true[/code] if [Color] with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. + Returns [code]true[/code] if [Color] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code] exists in assigned [Theme]. </description> </method> <method name="has_theme_color_override" qualifiers="const"> @@ -586,7 +586,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns [code]true[/code] if constant with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. + Returns [code]true[/code] if constant with given [code]name[/code] and associated with [Control] of given [code]node_type[/code] exists in assigned [Theme]. </description> </method> <method name="has_theme_constant_override" qualifiers="const"> @@ -606,7 +606,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns [code]true[/code] if font with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. + Returns [code]true[/code] if font with given [code]name[/code] and associated with [Control] of given [code]node_type[/code] exists in assigned [Theme]. </description> </method> <method name="has_theme_font_override" qualifiers="const"> @@ -626,7 +626,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns [code]true[/code] if icon with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. + Returns [code]true[/code] if icon with given [code]name[/code] and associated with [Control] of given [code]node_type[/code] exists in assigned [Theme]. </description> </method> <method name="has_theme_icon_override" qualifiers="const"> @@ -655,7 +655,7 @@ <argument index="1" name="type" type="StringName" default=""""> </argument> <description> - Returns [code]true[/code] if [StyleBox] with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. + Returns [code]true[/code] if [StyleBox] with given [code]name[/code] and associated with [Control] of given [code]node_type[/code] exists in assigned [Theme]. </description> </method> <method name="has_theme_stylebox_override" qualifiers="const"> diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml index 8ac6258e97..2d50d98a74 100644 --- a/doc/classes/Curve2D.xml +++ b/doc/classes/Curve2D.xml @@ -80,7 +80,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Returns the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code]. + Returns the position of the control point leading to the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code]. </description> </method> <method name="get_point_out" qualifiers="const"> @@ -89,7 +89,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Returns the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code]. + Returns the position of the control point leading out of the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code]. </description> </method> <method name="get_point_position" qualifiers="const"> @@ -152,7 +152,7 @@ <argument index="1" name="position" type="Vector2"> </argument> <description> - Sets the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. + Sets the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex. </description> </method> <method name="set_point_out"> @@ -163,7 +163,7 @@ <argument index="1" name="position" type="Vector2"> </argument> <description> - Sets the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. + Sets the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex. </description> </method> <method name="set_point_position"> diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml index fe454d90cc..a6a0e0c33d 100644 --- a/doc/classes/Curve3D.xml +++ b/doc/classes/Curve3D.xml @@ -95,7 +95,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Returns the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code]. + Returns the position of the control point leading to the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code]. </description> </method> <method name="get_point_out" qualifiers="const"> @@ -104,7 +104,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Returns the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code]. + Returns the position of the control point leading out of the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code]. </description> </method> <method name="get_point_position" qualifiers="const"> @@ -189,7 +189,7 @@ <argument index="1" name="position" type="Vector3"> </argument> <description> - Sets the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. + Sets the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex. </description> </method> <method name="set_point_out"> @@ -200,7 +200,7 @@ <argument index="1" name="position" type="Vector3"> </argument> <description> - Sets the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. + Sets the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex. </description> </method> <method name="set_point_position"> diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml index dc38fdf0e8..cd0b5ac027 100644 --- a/doc/classes/Dictionary.xml +++ b/doc/classes/Dictionary.xml @@ -11,17 +11,28 @@ Creating a dictionary: [codeblocks] [gdscript] - var my_dir = {} # Creates an empty dictionary. - var points_dir = {"White": 50, "Yellow": 75, "Orange": 100} - var another_dir = { - key1: value1, - key2: value2, - key3: value3, + var my_dict = {} # Creates an empty dictionary. + + var dict_variable_key = "Another key name" + var dict_variable_value = "value2" + var another_dict = { + "Some key name": "value1", + dict_variable_key: dict_variable_value, + } + + var points_dict = {"White": 50, "Yellow": 75, "Orange": 100} + + # Alternative Lua-style syntax. + # Doesn't require quotes around keys, but only string constants can be used as key names. + # Additionally, key names must start with a letter or an underscore. + # Here, `some_key` is a string literal, not a variable! + another_dict = { + some_key = 42, } [/gdscript] [csharp] - var myDir = new Godot.Collections.Dictionary(); // Creates an empty dictionary. - var pointsDir = new Godot.Collections.Dictionary + var myDict = new Godot.Collections.Dictionary(); // Creates an empty dictionary. + var pointsDict = new Godot.Collections.Dictionary { {"White", 50}, {"Yellow", 75}, @@ -33,15 +44,15 @@ [codeblocks] [gdscript] export(string, "White", "Yellow", "Orange") var my_color - var points_dir = {"White": 50, "Yellow": 75, "Orange": 100} + var points_dict = {"White": 50, "Yellow": 75, "Orange": 100} func _ready(): # We can't use dot syntax here as `my_color` is a variable. - var points = points_dir[my_color] + var points = points_dict[my_color] [/gdscript] [csharp] [Export(PropertyHint.Enum, "White,Yellow,Orange")] public string MyColor { get; set; } - public Godot.Collections.Dictionary pointsDir = new Godot.Collections.Dictionary + public Godot.Collections.Dictionary pointsDict = new Godot.Collections.Dictionary { {"White", 50}, {"Yellow", 75}, @@ -50,7 +61,7 @@ public override void _Ready() { - int points = (int)pointsDir[MyColor]; + int points = (int)pointsDict[MyColor]; } [/csharp] [/codeblocks] @@ -58,7 +69,7 @@ Dictionaries can contain more complex data: [codeblocks] [gdscript] - my_dir = {"First Array": [1, 2, 3, 4]} # Assigns an Array to a String key. + my_dict = {"First Array": [1, 2, 3, 4]} # Assigns an Array to a String key. [/gdscript] [csharp] var myDir = new Godot.Collections.Dictionary @@ -70,8 +81,8 @@ To add a key to an existing dictionary, access it like an existing key and assign to it: [codeblocks] [gdscript] - var points_dir = {"White": 50, "Yellow": 75, "Orange": 100} - points_dir["Blue"] = 150 # Add "Blue" as a key and assign 150 as its value. + var points_dict = {"White": 50, "Yellow": 75, "Orange": 100} + points_dict["Blue"] = 150 # Add "Blue" as a key and assign 150 as its value. [/gdscript] [csharp] var pointsDir = new Godot.Collections.Dictionary @@ -80,7 +91,7 @@ {"Yellow", 75}, {"Orange", 100} }; - pointsDir["blue"] = 150; // Add "Blue" as a key and assign 150 as its value. + pointsDict["blue"] = 150; // Add "Blue" as a key and assign 150 as its value. [/csharp] [/codeblocks] Finally, dictionaries can contain different types of keys and values in the same dictionary: @@ -89,22 +100,22 @@ # This is a valid dictionary. # To access the string "Nested value" below, use `my_dir.sub_dir.sub_key` or `my_dir["sub_dir"]["sub_key"]`. # Indexing styles can be mixed and matched depending on your needs. - var my_dir = { + var my_dict = { "String Key": 5, 4: [1, 2, 3], 7: "Hello", - "sub_dir": {"sub_key": "Nested value"}, + "sub_dict": {"sub_key": "Nested value"}, } [/gdscript] [csharp] // This is a valid dictionary. // To access the string "Nested value" below, use `my_dir.sub_dir.sub_key` or `my_dir["sub_dir"]["sub_key"]`. // Indexing styles can be mixed and matched depending on your needs. - var myDir = new Godot.Collections.Dictionary { + var myDict = new Godot.Collections.Dictionary { {"String Key", 5}, {4, new Godot.Collections.Array{1,2,3}}, {7, "Hello"}, - {"sub_dir", new Godot.Collections.Dictionary{{"sub_key", "Nested value"}}} + {"sub_dict", new Godot.Collections.Dictionary{{"sub_key", "Nested value"}}} }; [/csharp] [/codeblocks] @@ -117,11 +128,11 @@ func compare_arrays(): print(array1 == array2) # Will print true. - var dir1 = {"a": 1, "b": 2, "c": 3} - var dir2 = {"a": 1, "b": 2, "c": 3} + var dict1 = {"a": 1, "b": 2, "c": 3} + var dict2 = {"a": 1, "b": 2, "c": 3} func compare_dictionaries(): - print(dir1 == dir2) # Will NOT print true. + print(dict1 == dict2) # Will NOT print true. [/gdscript] [csharp] // You have to use GD.Hash(). @@ -135,35 +146,36 @@ GD.Print(GD.Hash(array1) == GD.Hash(array2)); // Will print true. } - public Godot.Collections.Dictionary dir1 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; - public Godot.Collections.Dictionary dir2 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; + public Godot.Collections.Dictionary dict1 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; + public Godot.Collections.Dictionary dict2 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; public void CompareDictionaries() { - GD.Print(dir1 == dir2); // Will NOT print true. + GD.Print(dict1 == dict2); // Will NOT print true. } [/csharp] [/codeblocks] You need to first calculate the dictionary's hash with [method hash] before you can compare them: [codeblocks] [gdscript] - var dir1 = {"a": 1, "b": 2, "c": 3} - var dir2 = {"a": 1, "b": 2, "c": 3} + var dict1 = {"a": 1, "b": 2, "c": 3} + var dict2 = {"a": 1, "b": 2, "c": 3} func compare_dictionaries(): - print(dir1.hash() == dir2.hash()) # Will print true. + print(dict1.hash() == dict2.hash()) # Will print true. [/gdscript] [csharp] // You have to use GD.Hash(). - public Godot.Collections.Dictionary dir1 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; - public Godot.Collections.Dictionary dir2 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; + public Godot.Collections.Dictionary dict1 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; + public Godot.Collections.Dictionary dict2 = new Godot.Collections.Dictionary{{"a", 1}, {"b", 2}, {"c", 3}}; public void CompareDictionaries() { - GD.Print(GD.Hash(dir1) == GD.Hash(dir2)); // Will print true. + GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // Will print true. } [/csharp] [/codeblocks] + [b]Note:[/b] When declaring a dictionary with [code]const[/code], the dictionary itself can still be mutated by defining the values of individual keys. Using [code]const[/code] will only prevent assigning the constant with another value after it was initialized. </description> <tutorials> <link title="GDScript basics: Dictionary">https://docs.godotengine.org/en/latest/getting_started/scripting/gdscript/gdscript_basics.html#dictionary</link> @@ -322,7 +334,7 @@ <return type="int"> </return> <description> - Returns the size of the dictionary (in pairs). + Returns the number of keys in the dictionary. </description> </method> <method name="values"> diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml index 3b108468de..edf27b1660 100644 --- a/doc/classes/Image.xml +++ b/doc/classes/Image.xml @@ -4,10 +4,12 @@ Image datatype. </brief_description> <description> - Native image datatype. Contains image data, which can be converted to a [Texture2D], and several functions to interact with it. The maximum width and height for an [Image] are [constant MAX_WIDTH] and [constant MAX_HEIGHT]. - [b]Note:[/b] The maximum image size is 16384×16384 pixels due to graphics hardware limitations. Larger images will fail to import. + Native image datatype. Contains image data which can be converted to an [ImageTexture] and provides commonly used [i]image processing[/i] methods. The maximum width and height for an [Image] are [constant MAX_WIDTH] and [constant MAX_HEIGHT]. + An [Image] cannot be assigned to a [code]texture[/code] property of an object directly (such as [Sprite2D]), and has to be converted manually to an [ImageTexture] first. + [b]Note:[/b] The maximum image size is 16384×16384 pixels due to graphics hardware limitations. Larger images may fail to import. </description> <tutorials> + <link title="Importing images">https://docs.godotengine.org/en/latest/getting_started/workflow/assets/importing_images.html</link> </tutorials> <methods> <method name="blend_rect"> @@ -344,6 +346,8 @@ </argument> <description> Loads an image from file [code]path[/code]. See [url=https://docs.godotengine.org/en/latest/getting_started/workflow/assets/importing_images.html#supported-image-formats]Supported image formats[/url] for a list of supported image formats and limitations. + [b]Warning:[/b] This method should only be used in the editor or in cases when you need to load external images at run-time, such as images located at the [code]user://[/code] directory, and may not work in exported projects. + See also [ImageTexture] description for usage examples. </description> </method> <method name="load_bmp_from_buffer"> diff --git a/doc/classes/ImageTexture.xml b/doc/classes/ImageTexture.xml index d122d74e85..2bea482bc1 100644 --- a/doc/classes/ImageTexture.xml +++ b/doc/classes/ImageTexture.xml @@ -4,10 +4,31 @@ A [Texture2D] based on an [Image]. </brief_description> <description> - A [Texture2D] based on an [Image]. Can be created from an [Image] with [method create_from_image]. - [b]Note:[/b] The maximum image size is 16384×16384 pixels due to graphics hardware limitations. Larger images will fail to import. + A [Texture2D] based on an [Image]. For an image to be displayed, an [ImageTexture] has to be created from it using the [method create_from_image] method: + [codeblock] + var texture = ImageTexture.new() + var image = Image.new() + image.load("res://icon.png") + texture.create_from_image(image) + $Sprite2D.texture = texture + [/codeblock] + This way, textures can be created at run-time by loading images both from within the editor and externally. + [b]Warning:[/b] Prefer to load imported textures with [method @GDScript.load] over loading them from within the filesystem dynamically with [method Image.load], as it may not work in exported projects: + [codeblock] + var texture = load("res://icon.png") + $Sprite2D.texture = texture + [/codeblock] + This is because images have to be imported as [StreamTexture2D] first to be loaded with [method @GDScript.load]. If you'd still like to load an image file just like any other [Resource], import it as an [Image] resource instead, and then load it normally using the [method @GDScript.load] method. + But do note that the image data can still be retrieved from an imported texture as well using the [method Texture2D.get_data] method, which returns a copy of the data: + [codeblock] + var texture = load("res://icon.png") + var image : Image = texture.get_data() + [/codeblock] + An [ImageTexture] is not meant to be operated from within the editor interface directly, and is mostly useful for rendering images on screen dynamically via code. If you need to generate images procedurally from within the editor, consider saving and importing images as custom texture resources implementing a new [EditorImportPlugin]. + [b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics hardware limitations. </description> <tutorials> + <link title="Importing images">https://docs.godotengine.org/en/latest/tutorials/assets_pipeline/importing_images.html</link> </tutorials> <methods> <method name="create_from_image"> @@ -16,14 +37,14 @@ <argument index="0" name="image" type="Image"> </argument> <description> - Create a new [ImageTexture] from an [Image]. + Initializes the texture by allocating and setting the data from an [Image]. </description> </method> <method name="get_format" qualifiers="const"> <return type="int" enum="Image.Format"> </return> <description> - Returns the format of the [ImageTexture], one of [enum Image.Format]. + Returns the format of the texture, one of [enum Image.Format]. </description> </method> <method name="set_size_override"> @@ -32,7 +53,7 @@ <argument index="0" name="size" type="Vector2"> </argument> <description> - Resizes the [ImageTexture] to the specified dimensions. + Resizes the texture to the specified dimensions. </description> </method> <method name="update"> @@ -43,7 +64,9 @@ <argument index="1" name="immediate" type="bool" default="false"> </argument> <description> - Replaces the texture's data with a new [code]image[/code]. If [code]immediate[/code] is [code]true[/code], it will take effect immediately after the call. + Replaces the texture's data with a new [Image]. If [code]immediate[/code] is [code]true[/code], it will take effect immediately after the call. + [b]Note:[/b] The texture has to be initialized first with the [method create_from_image] method before it can be updated. The new image dimensions, format, and mipmaps configuration should match the existing texture's image configuration, otherwise it has to be re-created with the [method create_from_image] method. + Use this method over [method create_from_image] if you need to update the texture frequently, which is faster than allocating additional memory for a new texture each time. </description> </method> </methods> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index fb0ed8ff62..eafae7310c 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -54,6 +54,15 @@ [b]Note:[/b] This method only works on iOS, Android, and UWP. On other platforms, it always returns [constant Vector3.ZERO]. </description> </method> + <method name="get_action_raw_strength" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="action" type="StringName"> + </argument> + <description> + Returns a value between 0 and 1 representing the raw intensity of the given action, ignoring the action's deadzone. In most cases, you should use [method get_action_strength] instead. + </description> + </method> <method name="get_action_strength" qualifiers="const"> <return type="float"> </return> @@ -63,6 +72,18 @@ Returns a value between 0 and 1 representing the intensity of the given action. In a joypad, for example, the further away the axis (analog sticks or L2, R2 triggers) is from the dead zone, the closer the value will be to 1. If the action is mapped to a control that has no axis as the keyboard, the value returned will be 0 or 1. </description> </method> + <method name="get_axis" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="negative_action" type="StringName"> + </argument> + <argument index="1" name="positive_action" type="StringName"> + </argument> + <description> + Get axis input by specifying two actions, one negative and one positive. + This is a horthand for writing [code]Input.get_action_strength("positive_action") - Input.get_action_strength("negative_action")[/code]. + </description> + </method> <method name="get_connected_joypads"> <return type="Array"> </return> @@ -205,6 +226,25 @@ Returns the mouse mode. See the constants for more information. </description> </method> + <method name="get_vector" qualifiers="const"> + <return type="Vector2"> + </return> + <argument index="0" name="negative_x" type="StringName"> + </argument> + <argument index="1" name="positive_x" type="StringName"> + </argument> + <argument index="2" name="negative_y" type="StringName"> + </argument> + <argument index="3" name="positive_y" type="StringName"> + </argument> + <argument index="4" name="deadzone" type="float" default="-1.0"> + </argument> + <description> + Get vector input by specifying four actions, two for the X axis and two for the Y axis, negative and positive. + This method is useful when getting vector input, such as from a joystick, directional pad, arrows, or WASD. The vector has its length limited to 1 and has a circular deadzone, which is useful for using vector input as movement. + By default, the deadzone is automatically calculated from the average of the action deadzones. However, you can override the deadzone to be whatever you want (on the range of 0 to 1). + </description> + </method> <method name="is_action_just_pressed" qualifiers="const"> <return type="bool"> </return> diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml index 667879a922..dd782209e5 100644 --- a/doc/classes/InputEventWithModifiers.xml +++ b/doc/classes/InputEventWithModifiers.xml @@ -27,6 +27,10 @@ <member name="shift" type="bool" setter="set_shift" getter="get_shift" default="false"> State of the [kbd]Shift[/kbd] modifier. </member> + <member name="store_command" type="bool" setter="set_store_command" getter="is_storing_command" default="true"> + If [code]true[/code], pressing [kbd]Cmd[/kbd] on macOS or [kbd]Ctrl[/kbd] on all other platforms will both be serialized as [member command]. If [code]false[/code], those same keys will be serialized as [member meta] on macOS and [member control] on all other platforms. + This aids with cross-platform compatibility when developing e.g. on Windows for macOS, or vice-versa. + </member> </members> <constants> </constants> diff --git a/doc/classes/JSONParser.xml b/doc/classes/JSONParser.xml new file mode 100644 index 0000000000..31ba295418 --- /dev/null +++ b/doc/classes/JSONParser.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="JSONParser" inherits="Reference" version="4.0"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> + <methods> + <method name="decode_data"> + <return type="int" enum="Error"> + </return> + <argument index="0" name="data" type="Variant"> + </argument> + <argument index="1" name="indent" type="String" default=""""> + </argument> + <argument index="2" name="sort_keys" type="bool" default="true"> + </argument> + <description> + </description> + </method> + <method name="get_data" qualifiers="const"> + <return type="Variant"> + </return> + <description> + </description> + </method> + <method name="get_error_line" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_error_text" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_string" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="parse_string"> + <return type="int" enum="Error"> + </return> + <argument index="0" name="json_string" type="String"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> diff --git a/doc/classes/MarginContainer.xml b/doc/classes/MarginContainer.xml index fb5f437239..c8eebd4677 100644 --- a/doc/classes/MarginContainer.xml +++ b/doc/classes/MarginContainer.xml @@ -6,13 +6,22 @@ <description> Adds a top, left, bottom, and right margin to all [Control] nodes that are direct children of the container. To control the [MarginContainer]'s margin, use the [code]margin_*[/code] theme properties listed below. [b]Note:[/b] Be careful, [Control] margin values are different than the constant margin values. If you want to change the custom margin values of the [MarginContainer] by code, you should use the following examples: - [codeblock] + [codeblocks] + [gdscript] var margin_value = 100 set("custom_constants/margin_top", margin_value) set("custom_constants/margin_left", margin_value) set("custom_constants/margin_bottom", margin_value) set("custom_constants/margin_right", margin_value) - [/codeblock] + [/gdscript] + [csharp] + int marginValue = 100; + Set("custom_constants/margin_top", marginValue); + Set("custom_constants/margin_left", marginValue); + Set("custom_constants/margin_bottom", marginValue); + Set("custom_constants/margin_right", marginValue); + [/csharp] + [/codeblocks] </description> <tutorials> </tutorials> diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml index e75efa3b27..38921078d7 100644 --- a/doc/classes/NavigationPolygon.xml +++ b/doc/classes/NavigationPolygon.xml @@ -6,22 +6,41 @@ <description> There are two ways to create polygons. Either by using the [method add_outline] method, or using the [method add_polygon] method. Using [method add_outline]: - [codeblock] + [codeblocks] + [gdscript] var polygon = NavigationPolygon.new() var outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)]) polygon.add_outline(outline) polygon.make_polygons_from_outlines() $NavigationRegion2D.navpoly = polygon - [/codeblock] + [/gdscript] + [csharp] + var polygon = new NavigationPolygon(); + var outline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) }; + polygon.AddOutline(outline); + polygon.MakePolygonsFromOutlines(); + GetNode<NavigationRegion2D>("NavigationRegion2D").Navpoly = polygon; + [/csharp] + [/codeblocks] Using [method add_polygon] and indices of the vertices array. - [codeblock] + [codeblocks] + [gdscript] var polygon = NavigationPolygon.new() var vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)]) - polygon.set_vertices(vertices) + polygon.vertices = vertices var indices = PackedInt32Array(0, 3, 1) polygon.add_polygon(indices) $NavigationRegion2D.navpoly = polygon - [/codeblock] + [/gdscript] + [csharp] + var polygon = new NavigationPolygon(); + var vertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) }; + polygon.Vertices = vertices; + var indices = new int[] { 0, 3, 1 }; + polygon.AddPolygon(indices); + GetNode<NavigationRegion2D>("NavigationRegion2D").Navpoly = polygon; + [/csharp] + [/codeblocks] </description> <tutorials> <link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 2e8b76865d..3f212fa0f6 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -130,11 +130,22 @@ Adds a child node. Nodes can have any number of children, but every child must have a unique name. Child nodes are automatically deleted when the parent node is deleted, so an entire scene can be removed by deleting its topmost node. If [code]legible_unique_name[/code] is [code]true[/code], the child node will have an human-readable name based on the name of the node being instanced instead of its type. [b]Note:[/b] If the child node already has a parent, the function will fail. Use [method remove_child] first to remove the node from its current parent. For example: - [codeblock] + [codeblocks] + [gdscript] + var child_node = get_child(0) if child_node.get_parent(): child_node.get_parent().remove_child(child_node) add_child(child_node) - [/codeblock] + [/gdscript] + [csharp] + Node childNode = GetChild(0); + if (childNode.GetParent() != null) + { + childNode.GetParent().RemoveChild(childNode); + } + AddChild(childNode); + [/csharp] + [/codeblocks] If you need the child node to be added below a specific node in the list of children, use [method add_sibling] instead of this method. [b]Note:[/b] If you want a child to be persisted to a [PackedScene], you must set [member owner] in addition to calling [method add_child]. This is typically relevant for [url=https://godot.readthedocs.io/en/latest/tutorials/misc/running_code_in_the_editor.html]tool scripts[/url] and [url=https://godot.readthedocs.io/en/latest/tutorials/plugins/editor/index.html]editor plugins[/url]. If [method add_child] is called without setting [member owner], the newly added [Node] will not be visible in the scene tree, though it will be visible in the 2D/3D view. </description> @@ -275,12 +286,20 @@ /root/Swamp/Goblin [/codeblock] Possible paths are: - [codeblock] + [codeblocks] + [gdscript] get_node("Sword") get_node("Backpack/Dagger") get_node("../Swamp/Alligator") get_node("/root/MyGame") - [/codeblock] + [/gdscript] + [csharp] + GetNode("Sword"); + GetNode("Backpack/Dagger"); + GetNode("../Swamp/Alligator"); + GetNode("/root/MyGame"); + [/csharp] + [/codeblocks] </description> </method> <method name="get_node_and_resource"> @@ -292,11 +311,18 @@ Fetches a node and one of its resources as specified by the [NodePath]'s subname (e.g. [code]Area2D/CollisionShape2D:shape[/code]). If several nested resources are specified in the [NodePath], the last one will be fetched. The return value is an array of size 3: the first index points to the [Node] (or [code]null[/code] if not found), the second index points to the [Resource] (or [code]null[/code] if not found), and the third index is the remaining [NodePath], if any. For example, assuming that [code]Area2D/CollisionShape2D[/code] is a valid node and that its [code]shape[/code] property has been assigned a [RectangleShape2D] resource, one could have this kind of output: - [codeblock] + [codeblocks] + [gdscript] print(get_node_and_resource("Area2D/CollisionShape2D")) # [[CollisionShape2D:1161], Null, ] print(get_node_and_resource("Area2D/CollisionShape2D:shape")) # [[CollisionShape2D:1161], [RectangleShape2D:1156], ] print(get_node_and_resource("Area2D/CollisionShape2D:shape:extents")) # [[CollisionShape2D:1161], [RectangleShape2D:1156], :extents] - [/codeblock] + [/gdscript] + [csharp] + GD.Print(GetNodeAndResource("Area2D/CollisionShape2D")); // [[CollisionShape2D:1161], Null, ] + GD.Print(GetNodeAndResource("Area2D/CollisionShape2D:shape")); // [[CollisionShape2D:1161], [RectangleShape2D:1156], ] + GD.Print(GetNodeAndResource("Area2D/CollisionShape2D:shape:extents")); // [[CollisionShape2D:1161], [RectangleShape2D:1156], :extents] + [/csharp] + [/codeblocks] </description> </method> <method name="get_node_or_null" qualifiers="const"> diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml index 93ede047fd..36835d9e94 100644 --- a/doc/classes/NodePath.xml +++ b/doc/classes/NodePath.xml @@ -51,7 +51,7 @@ The "subnames" optionally included after the path to the target node can point to resources or properties, and can also be nested. Examples of valid NodePaths (assuming that those nodes exist and have the referenced resources or properties): [codeblock] - # Points to the Sprite2D node + # Points to the Sprite2D node. "Path2D/PathFollow2D/Sprite2D" # Points to the Sprite2D node and its "texture" resource. # get_node() would retrieve "Sprite2D", while get_node_and_resource() @@ -70,14 +70,23 @@ <return type="NodePath"> </return> <description> - Returns a node path with a colon character ([code]:[/code]) prepended, transforming it to a pure property path with no node name (defaults to resolving from the current node). - [codeblock] - # This will be parsed as a node path to the "x" property in the "position" node + Returns a node path with a colon character ([code]:[/code]) prepended, transforming it to a pure property path with no node name (defaults to resolving from the from the current node). + [codeblocks] + [gdscript] + # This will be parsed as a node path to the "x" property in the "position" node. var node_path = NodePath("position:x") - # This will be parsed as a node path to the "x" component of the "position" property in the current node + # This will be parsed as a node path to the "x" component of the "position" property in the current node. var property_path = node_path.get_as_property_path() print(property_path) # :position:x - [/codeblock] + [/gdscript] + [csharp] + // This will be parsed as a node path to the "x" property in the "position" node. + var nodePath = new NodePath("position:x"); + // This will be parsed as a node path to the "x" component of the "position" property in the current node. + NodePath propertyPath = nodePath.GetAsPropertyPath(); + GD.Print(propertyPath); // :position:x + [/csharp] + [/codeblocks] </description> </method> <method name="get_concatenated_subnames"> @@ -85,10 +94,16 @@ </return> <description> Returns all subnames concatenated with a colon character ([code]:[/code]) as separator, i.e. the right side of the first colon in a node path. - [codeblock] + [codeblocks] + [gdscript] var nodepath = NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path") print(nodepath.get_concatenated_subnames()) # texture:load_path - [/codeblock] + [/gdscript] + [csharp] + var nodepath = new NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path"); + GD.Print(nodepath.GetConcatenatedSubnames()); // texture:load_path + [/csharp] + [/codeblocks] </description> </method> <method name="get_name"> @@ -98,12 +113,20 @@ </argument> <description> Gets the node name indicated by [code]idx[/code] (0 to [method get_name_count]). - [codeblock] + [codeblocks] + [gdscript] var node_path = NodePath("Path2D/PathFollow2D/Sprite2D") print(node_path.get_name(0)) # Path2D print(node_path.get_name(1)) # PathFollow2D print(node_path.get_name(2)) # Sprite - [/codeblock] + [/gdscript] + [csharp] + var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D"); + GD.Print(nodePath.GetName(0)); // Path2D + GD.Print(nodePath.GetName(1)); // PathFollow2D + GD.Print(nodePath.GetName(2)); // Sprite + [/csharp] + [/codeblocks] </description> </method> <method name="get_name_count"> @@ -121,11 +144,18 @@ </argument> <description> Gets the resource or property name indicated by [code]idx[/code] (0 to [method get_subname_count]). - [codeblock] + [codeblocks] + [gdscript] var node_path = NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path") print(node_path.get_subname(0)) # texture print(node_path.get_subname(1)) # load_path - [/codeblock] + [/gdscript] + [csharp] + var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path"); + GD.Print(nodePath.GetSubname(0)); // texture + GD.Print(nodePath.GetSubname(1)); // load_path + [/csharp] + [/codeblocks] </description> </method> <method name="get_subname_count"> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 1487c9e078..1d80695798 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -85,18 +85,36 @@ If [code]blocking[/code] is [code]false[/code], the Godot thread will continue while the new process runs. It is not possible to retrieve the shell output in non-blocking mode, so [code]output[/code] will be empty. The return value also depends on the blocking mode. When blocking, the method will return an exit code of the process. When non-blocking, the method returns a process ID, which you can use to monitor the process (and potentially terminate it with [method kill]). If the process forking (non-blocking) or opening (blocking) fails, the method will return [code]-1[/code] or another exit code. Example of blocking mode and retrieving the shell output: - [codeblock] + [codeblocks] + [gdscript] var output = [] var exit_code = OS.execute("ls", ["-l", "/tmp"], true, output) - [/codeblock] + [/gdscript] + [csharp] + var output = new Godot.Collections.Array(); + int exitCode = OS.Execute("ls", new string[] {"-l", "/tmp"}, true, output); + [/csharp] + [/codeblocks] Example of non-blocking mode, running another instance of the project and storing its process ID: - [codeblock] + [codeblocks] + [gdscript] var pid = OS.execute(OS.get_executable_path(), [], false) - [/codeblock] + [/gdscript] + [csharp] + var pid = OS.Execute(OS.GetExecutablePath(), new string[] {}, false); + [/csharp] + [/codeblocks] If you wish to access a shell built-in or perform a composite command, a platform-specific shell can be invoked. For example: - [codeblock] + [codeblocks] + [gdscript] + var output = [] OS.execute("CMD.exe", ["/C", "cd %TEMP% && dir"], true, output) - [/codeblock] + [/gdscript] + [csharp] + var output = new Godot.Collections.Array(); + OS.Execute("CMD.exe", new string[] {"/C", "cd %TEMP% && dir"}, true, output); + [/csharp] + [/codeblocks] [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows. </description> </method> @@ -118,13 +136,26 @@ You can also incorporate environment variables using the [method get_environment] method. You can set [code]editor/main_run_args[/code] in the Project Settings to define command-line arguments to be passed by the editor when running the project. Here's a minimal example on how to parse command-line arguments into a dictionary using the [code]--key=value[/code] form for arguments: - [codeblock] + [codeblocks] + [gdscript] var arguments = {} for argument in OS.get_cmdline_args(): if argument.find("=") > -1: var key_value = argument.split("=") arguments[key_value[0].lstrip("--")] = key_value[1] - [/codeblock] + [/gdscript] + [csharp] + var arguments = new Godot.Collections.Dictionary(); + foreach (var argument in OS.GetCmdlineArgs()) + { + if (argument.Find("=") > -1) + { + string[] keyValue = argument.Split("="); + arguments[keyValue[0].LStrip("--")] = keyValue[1]; + } + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_connected_midi_inputs"> diff --git a/doc/classes/PCKPacker.xml b/doc/classes/PCKPacker.xml index 6b500d5ac3..e3c78e08f1 100644 --- a/doc/classes/PCKPacker.xml +++ b/doc/classes/PCKPacker.xml @@ -5,12 +5,20 @@ </brief_description> <description> The [PCKPacker] is used to create packages that can be loaded into a running project using [method ProjectSettings.load_resource_pack]. - [codeblock] + [codeblocks] + [gdscript] var packer = PCKPacker.new() packer.pck_start("test.pck") packer.add_file("res://text.txt", "text.txt") packer.flush() - [/codeblock] + [/gdscript] + [csharp] + var packer = new PCKPacker(); + packer.PckStart("test.pck"); + packer.AddFile("res://text.txt", "text.txt"); + packer.Flush(); + [/csharp] + [/codeblocks] The above [PCKPacker] creates package [code]test.pck[/code], then adds a file named [code]text.txt[/code] at the root of the package. </description> <tutorials> diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml index 4a6893879d..91d066260b 100644 --- a/doc/classes/PackedByteArray.xml +++ b/doc/classes/PackedByteArray.xml @@ -135,10 +135,16 @@ </return> <description> Returns a hexadecimal representation of this array as a [String]. - [codeblock] + [codeblocks] + [gdscript] var array = PackedByteArray([11, 46, 255]) print(array.hex_encode()) # Prints: 0b2eff - [/codeblock] + [/gdscript] + [csharp] + var array = new byte[] {11, 46, 255}; + GD.Print(array.HexEncode()); // Prints: 0b2eff + [/csharp] + [/codeblocks] </description> </method> <method name="insert"> diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml index be40ab05de..d15bcfd114 100644 --- a/doc/classes/PackedScene.xml +++ b/doc/classes/PackedScene.xml @@ -8,14 +8,23 @@ Can be used to save a node to a file. When saving, the node as well as all the node it owns get saved (see [code]owner[/code] property on [Node]). [b]Note:[/b] The node doesn't need to own itself. [b]Example of loading a saved scene:[/b] - [codeblock] - # Use `load()` instead of `preload()` if the path isn't known at compile-time. + [codeblocks] + [gdscript] + # Use load() instead of preload() if the path isn't known at compile-time. var scene = preload("res://scene.tscn").instance() # Add the node as a child of the node the script is attached to. add_child(scene) - [/codeblock] + [/gdscript] + [csharp] + // C# has no preload, so you have to always use ResourceLoader.Load<PackedScene>(). + var scene = ResourceLoader.Load<PackedScene>("res://scene.tscn").Instance(); + // Add the node as a child of the node the script is attached to. + AddChild(scene); + [/csharp] + [/codeblocks] [b]Example of saving a node with different owners:[/b] The following example creates 3 objects: [code]Node2D[/code] ([code]node[/code]), [code]RigidBody2D[/code] ([code]rigid[/code]) and [code]CollisionObject2D[/code] ([code]collision[/code]). [code]collision[/code] is a child of [code]rigid[/code] which is a child of [code]node[/code]. Only [code]rigid[/code] is owned by [code]node[/code] and [code]pack[/code] will therefore only save those two nodes, but not [code]collision[/code]. - [codeblock] + [codeblocks] + [gdscript] # Create the objects. var node = Node2D.new() var rigid = RigidBody2D.new() @@ -27,15 +36,41 @@ # Change owner of `rigid`, but not of `collision`. rigid.owner = node - var scene = PackedScene.new() + # Only `node` and `rigid` are now packed. var result = scene.pack(node) if result == OK: - var error = ResourceSaver.save("res://path/name.scn", scene) # Or "user://..." + var error = ResourceSaver.save("res://path/name.tscn", scene) # Or "user://..." if error != OK: push_error("An error occurred while saving the scene to disk.") - [/codeblock] + [/gdscript] + [csharp] + // Create the objects. + var node = new Node2D(); + var rigid = new RigidBody2D(); + var collision = new CollisionShape2D(); + + // Create the object hierarchy. + rigid.AddChild(collision); + node.AddChild(rigid); + + // Change owner of `rigid`, but not of `collision`. + rigid.Owner = node; + var scene = new PackedScene(); + + // Only `node` and `rigid` are now packed. + Error result = scene.Pack(node); + if (result == Error.Ok) + { + Error error = ResourceSaver.Save("res://path/name.tscn", scene); // Or "user://..." + if (error != Error.Ok) + { + GD.PushError("An error occurred while saving the scene to disk."); + } + } + [/csharp] + [/codeblocks] </description> <tutorials> <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link> diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml index cab821b4c0..d7cf6cc8c6 100644 --- a/doc/classes/PacketPeerUDP.xml +++ b/doc/classes/PacketPeerUDP.xml @@ -124,17 +124,36 @@ <description> Waits for a packet to arrive on the listening port. See [method listen]. [b]Note:[/b] [method wait] can't be interrupted once it has been called. This can be worked around by allowing the other party to send a specific "death pill" packet like this: - [codeblock] - # Server - socket.set_dest_address("127.0.0.1", 789) - socket.put_packet("Time to stop".to_ascii()) + [codeblocks] + [gdscript] + socket = PacketPeerUDP.new() + # Server + socket.set_dest_address("127.0.0.1", 789) + socket.put_packet("Time to stop".to_ascii()) - # Client - while socket.wait() == OK: - var data = socket.get_packet().get_string_from_ascii() - if data == "Time to stop": - return - [/codeblock] + # Client + while socket.wait() == OK: + var data = socket.get_packet().get_string_from_ascii() + if data == "Time to stop": + return + [/gdscript] + [csharp] + var socket = new PacketPeerUDP(); + // Server + socket.SetDestAddress("127.0.0.1", 789); + socket.PutPacket("Time To Stop".ToAscii()); + + // Client + while (socket.Wait() == OK) + { + string data = socket.GetPacket().GetStringFromASCII(); + if (data == "Time to stop") + { + return; + } + } + [/csharp] + [/codeblocks] </description> </method> </methods> diff --git a/doc/classes/Performance.xml b/doc/classes/Performance.xml index 0a9079ce71..9e9c5063ae 100644 --- a/doc/classes/Performance.xml +++ b/doc/classes/Performance.xml @@ -24,14 +24,53 @@ </argument> <description> Adds a custom monitor with name same as id. You can specify the category of monitor using '/' in id. If there are more than one '/' then default category is used. Default category is "Custom". - [codeblock] - Performance.add_custom_monitor("MyCategory/MyMonitor", some_callable) # Adds monitor with name "MyName" to category "MyCategory" - Performance.add_custom_monitor("MyMonitor", some_callable) # Adds monitor with name "MyName" to category "Custom" - # Note: "MyCategory/MyMonitor" and "MyMonitor" have same name but different ids so above code is valid - Performance.add_custom_monitor("Custom/MyMonitor", some_callable) # Adds monitor with name "MyName" to category "Custom" - # Note: "MyMonitor" and "Custom/MyMonitor" have same name and same category but different ids so above code is valid - Performance.add_custom_monitor("MyCategoryOne/MyCategoryTwo/MyMonitor", some_callable) # Adds monitor with name "MyCategoryOne/MyCategoryTwo/MyMonitor" to category "Custom" - [/codeblock] + [codeblocks] + [gdscript] + func _ready(): + var monitor_value = Callable(self, "get_monitor_value") + + # Adds monitor with name "MyName" to category "MyCategory". + Performance.add_custom_monitor("MyCategory/MyMonitor", monitor_value) + + # Adds monitor with name "MyName" to category "Custom". + # Note: "MyCategory/MyMonitor" and "MyMonitor" have same name but different ids so the code is valid. + Performance.add_custom_monitor("MyMonitor", monitor_value) + + # Adds monitor with name "MyName" to category "Custom". + # Note: "MyMonitor" and "Custom/MyMonitor" have same name and same category but different ids so the code is valid. + Performance.add_custom_monitor("Custom/MyMonitor", monitor_value) + + # Adds monitor with name "MyCategoryOne/MyCategoryTwo/MyMonitor" to category "Custom". + Performance.add_custom_monitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitor_value) + + func get_monitor_value(): + return randi() % 25 + [/gdscript] + [csharp] + public override void _Ready() + { + var monitorValue = new Callable(this, nameof(GetMonitorValue)); + + // Adds monitor with name "MyName" to category "MyCategory". + Performance.AddCustomMonitor("MyCategory/MyMonitor", monitorValue); + // Adds monitor with name "MyName" to category "Custom". + // Note: "MyCategory/MyMonitor" and "MyMonitor" have same name but different ids so the code is valid. + Performance.AddCustomMonitor("MyMonitor", monitorValue); + + // Adds monitor with name "MyName" to category "Custom". + // Note: "MyMonitor" and "Custom/MyMonitor" have same name and same category but different ids so the code is valid. + Performance.AddCustomMonitor("Custom/MyMonitor", monitorValue); + + // Adds monitor with name "MyCategoryOne/MyCategoryTwo/MyMonitor" to category "Custom". + Performance.AddCustomMonitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitorValue); + } + + public int GetMonitorValue() + { + return GD.Randi() % 25; + } + [/csharp] + [/codeblocks] The debugger calls the callable to get the value of custom monitor. The callable must return a number. Callables are called with arguments supplied in argument array. [b]Note:[/b] It throws an error if given id is already present. @@ -61,9 +100,14 @@ </argument> <description> Returns the value of one of the available monitors. You should provide one of the [enum Monitor] constants as the argument, like this: - [codeblock] - print(Performance.get_monitor(Performance.TIME_FPS)) # Prints the FPS to the console - [/codeblock] + [codeblocks] + [gdscript] + print(Performance.get_monitor(Performance.TIME_FPS)) # Prints the FPS to the console. + [/gdscript] + [csharp] + GD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // Prints the FPS to the console. + [/csharp] + [/codeblocks] </description> </method> <method name="get_monitor_modification_time"> diff --git a/doc/classes/PhysicsShapeQueryParameters2D.xml b/doc/classes/PhysicsShapeQueryParameters2D.xml index 93ca684b95..4d7fc61517 100644 --- a/doc/classes/PhysicsShapeQueryParameters2D.xml +++ b/doc/classes/PhysicsShapeQueryParameters2D.xml @@ -34,19 +34,34 @@ </member> <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid"> The queried shape's [RID] that will be used for collision/intersection queries. Use this over [member shape] if you want to optimize for performance using the Servers API: - [codeblock] - var shape_rid = PhysicsServer2D.circle_shape_create() - var radius = 64 - PhysicsServer2D.shape_set_data(shape_rid, radius) + [codeblocks] + [gdscript] + var shape_rid = PhysicsServer2D.circle_shape_create() + var radius = 64 + PhysicsServer2D.shape_set_data(shape_rid, radius) - var params = PhysicsShapeQueryParameters2D.new() - params.shape_rid = shape_rid + var params = PhysicsShapeQueryParameters2D.new() + params.shape_rid = shape_rid - # Execute physics queries here... + # Execute physics queries here... - # Release the shape when done with physics queries. - PhysicsServer2D.free_rid(shape_rid) - [/codeblock] + # Release the shape when done with physics queries. + PhysicsServer2D.free_rid(shape_rid) + [/gdscript] + [csharp] + RID shapeRid = PhysicsServer2D.CircleShapeCreate(); + int radius = 64; + PhysicsServer2D.ShapeSetData(shapeRid, radius); + + var params = new PhysicsShapeQueryParameters2D(); + params.ShapeRid = shapeRid; + + // Execute physics queries here... + + // Release the shape when done with physics queries. + PhysicsServer2D.FreeRid(shapeRid); + [/csharp] + [/codeblocks] </member> <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform" default="Transform2D( 1, 0, 0, 1, 0, 0 )"> The queried shape's transform matrix. diff --git a/doc/classes/PhysicsShapeQueryParameters3D.xml b/doc/classes/PhysicsShapeQueryParameters3D.xml index 167fb31bb3..4b43ea66fc 100644 --- a/doc/classes/PhysicsShapeQueryParameters3D.xml +++ b/doc/classes/PhysicsShapeQueryParameters3D.xml @@ -31,19 +31,34 @@ </member> <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid"> The queried shape's [RID] that will be used for collision/intersection queries. Use this over [member shape] if you want to optimize for performance using the Servers API: - [codeblock] - var shape_rid = PhysicsServer3D.shape_create(PhysicsServer3D.SHAPE_SPHERE) - var radius = 2.0 - PhysicsServer3D.shape_set_data(shape_rid, radius) + [codeblocks] + [gdscript] + var shape_rid = PhysicsServer3D.shape_create(PhysicsServer3D.SHAPE_SPHERE) + var radius = 2.0 + PhysicsServer3D.shape_set_data(shape_rid, radius) - var params = PhysicsShapeQueryParameters3D.new() - params.shape_rid = shape_rid + var params = PhysicsShapeQueryParameters3D.new() + params.shape_rid = shape_rid - # Execute physics queries here... + # Execute physics queries here... - # Release the shape when done with physics queries. - PhysicsServer3D.free_rid(shape_rid) - [/codeblock] + # Release the shape when done with physics queries. + PhysicsServer3D.free_rid(shape_rid) + [/gdscript] + [csharp] + RID shapeRid = PhysicsServer3D.ShapeCreate(PhysicsServer3D.ShapeType.Sphere); + float radius = 2.0f; + PhysicsServer3D.ShapeSetData(shapeRid, radius); + + var params = new PhysicsShapeQueryParameters3D(); + params.ShapeRid = shapeRid; + + // Execute physics queries here... + + // Release the shape when done with physics queries. + PhysicsServer3D.FreeRid(shapeRid); + [/csharp] + [/codeblocks] </member> <member name="transform" type="Transform" setter="set_transform" getter="get_transform" default="Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )"> The queried shape's transform matrix. diff --git a/doc/classes/Popup.xml b/doc/classes/Popup.xml index 6f77f3371d..b8d8a55412 100644 --- a/doc/classes/Popup.xml +++ b/doc/classes/Popup.xml @@ -12,6 +12,8 @@ </methods> <members> <member name="borderless" type="bool" setter="set_flag" getter="get_flag" override="true" default="true" /> + <member name="close_on_parent_focus" type="bool" setter="set_close_on_parent_focus" getter="get_close_on_parent_focus" default="true"> + </member> <member name="transient" type="bool" setter="set_transient" getter="is_transient" override="true" default="true" /> <member name="unresizable" type="bool" setter="set_flag" getter="get_flag" override="true" default="true" /> <member name="visible" type="bool" setter="set_visible" getter="is_visible" override="true" default="false" /> diff --git a/doc/classes/PrimitiveMesh.xml b/doc/classes/PrimitiveMesh.xml index 9e7f26ed4f..7e9bccc1d7 100644 --- a/doc/classes/PrimitiveMesh.xml +++ b/doc/classes/PrimitiveMesh.xml @@ -14,11 +14,18 @@ </return> <description> Returns mesh arrays used to constitute surface of [Mesh]. The result can be passed to [method ArrayMesh.add_surface_from_arrays] to create a new surface. For example: - [codeblock] - var c := CylinderMesh.new() - var arr_mesh := ArrayMesh.new() + [codeblocks] + [gdscript] + var c = CylinderMesh.new() + var arr_mesh = ArrayMesh.new() arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c.get_mesh_arrays()) - [/codeblock] + [/gdscript] + [csharp] + var c = new CylinderMesh(); + var arrMesh = new ArrayMesh(); + arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, c.GetMeshArrays()); + [/csharp] + [/codeblocks] </description> </method> </methods> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 7ca2dae4d7..96d71db383 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -25,7 +25,8 @@ - [code]type[/code]: [int] (see [enum Variant.Type]) - optionally [code]hint[/code]: [int] (see [enum PropertyHint]) and [code]hint_string[/code]: [String] [b]Example:[/b] - [codeblock] + [codeblocks] + [gdscript] ProjectSettings.set("category/property_name", 0) var property_info = { @@ -36,7 +37,21 @@ } ProjectSettings.add_property_info(property_info) - [/codeblock] + [/gdscript] + [csharp] + ProjectSettings.Singleton.Set("category/property_name", 0); + + var propertyInfo = new Godot.Collections.Dictionary + { + {"name", "category/propertyName"}, + {"type", Variant.Type.Int}, + {"hint", PropertyHint.Enum}, + {"hint_string", "one,two,three"}, + }; + + ProjectSettings.AddPropertyInfo(propertyInfo); + [/csharp] + [/codeblocks] </description> </method> <method name="clear"> @@ -65,9 +80,14 @@ <description> Returns the value of a setting. [b]Example:[/b] - [codeblock] + [codeblocks] + [gdscript] print(ProjectSettings.get_setting("application/config/name")) - [/codeblock] + [/gdscript] + [csharp] + GD.Print(ProjectSettings.GetSetting("application/config/name")); + [/csharp] + [/codeblocks] </description> </method> <method name="globalize_path" qualifiers="const"> @@ -178,9 +198,14 @@ <description> Sets the value of a setting. [b]Example:[/b] - [codeblock] + [codeblocks] + [gdscript] ProjectSettings.set_setting("application/config/name", "Example") - [/codeblock] + [/gdscript] + [csharp] + ProjectSettings.SetSetting("application/config/name", "Example"); + [/csharp] + [/codeblocks] </description> </method> </methods> @@ -858,7 +883,7 @@ Maximum number of warnings allowed to be sent from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> <member name="network/limits/packet_peer_stream/max_buffer_po2" type="int" setter="" getter="" default="16"> - Default size of packet peer stream for deserializing Godot data. Over this size, data is dropped. + Default size of packet peer stream for deserializing Godot data (in bytes, specified as a power of two). The default value [code]16[/code] is equal to 65,536 bytes. Over this size, data is dropped. </member> <member name="network/limits/tcp/connect_timeout_seconds" type="int" setter="" getter="" default="30"> Timeout (in seconds) for connection attempts using TCP. @@ -895,18 +920,30 @@ <member name="physics/2d/default_gravity" type="int" setter="" getter="" default="98"> The default gravity strength in 2D. [b]Note:[/b] This property is only read when the project starts. To change the default gravity at runtime, use the following code sample: - [codeblock] + [codeblocks] + [gdscript] # Set the default gravity strength to 98. - PhysicsServer2D.area_set_param(get_viewport().find_world_2d().get_space(), PhysicsServer2D.AREA_PARAM_GRAVITY, 98) - [/codeblock] + PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY, 98) + [/gdscript] + [csharp] + // Set the default gravity strength to 98. + PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2d().Space, PhysicsServer2D.AreaParameter.Gravity, 98); + [/csharp] + [/codeblocks] </member> <member name="physics/2d/default_gravity_vector" type="Vector2" setter="" getter="" default="Vector2( 0, 1 )"> The default gravity direction in 2D. [b]Note:[/b] This property is only read when the project starts. To change the default gravity vector at runtime, use the following code sample: - [codeblock] + [codeblocks] + [gdscript] # Set the default gravity direction to `Vector2(0, 1)`. - PhysicsServer2D.area_set_param(get_viewport().find_world_2d().get_space(), PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2(0, 1)) - [/codeblock] + PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN) + [/gdscript] + [csharp] + // Set the default gravity direction to `Vector2(0, 1)`. + PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2d().Space, PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down) + [/csharp] + [/codeblocks] </member> <member name="physics/2d/default_linear_damp" type="float" setter="" getter="" default="0.1"> The default linear damp in 2D. @@ -942,18 +979,30 @@ <member name="physics/3d/default_gravity" type="float" setter="" getter="" default="9.8"> The default gravity strength in 3D. [b]Note:[/b] This property is only read when the project starts. To change the default gravity at runtime, use the following code sample: - [codeblock] + [codeblocks] + [gdscript] # Set the default gravity strength to 9.8. - PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8) - [/codeblock] + PhysicsServer3D.area_set_param(get_viewport().find_world().space, PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8) + [/gdscript] + [csharp] + // Set the default gravity strength to 9.8. + PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, PhysicsServer3D.AreaParameter.Gravity, 9.8); + [/csharp] + [/codeblocks] </member> <member name="physics/3d/default_gravity_vector" type="Vector3" setter="" getter="" default="Vector3( 0, -1, 0 )"> The default gravity direction in 3D. [b]Note:[/b] This property is only read when the project starts. To change the default gravity vector at runtime, use the following code sample: - [codeblock] + [codeblocks] + [gdscript] # Set the default gravity direction to `Vector3(0, -1, 0)`. - PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3(0, -1, 0)) - [/codeblock] + PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN) + [/gdscript] + [csharp] + // Set the default gravity direction to `Vector3(0, -1, 0)`. + PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down) + [/csharp] + [/codeblocks] </member> <member name="physics/3d/default_linear_damp" type="float" setter="" getter="" default="0.1"> The default linear damp in 3D. diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index 4ea457047f..a95ce6c663 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -181,7 +181,7 @@ <argument index="0" name="exit_code" type="int" default="-1"> </argument> <description> - Quits the application. A process [code]exit_code[/code] can optionally be passed as an argument. If this argument is [code]0[/code] or greater, it will override the [member OS.exit_code] defined before quitting the application. + Quits the application at the end of the current iteration. A process [code]exit_code[/code] can optionally be passed as an argument. If this argument is [code]0[/code] or greater, it will override the [member OS.exit_code] defined before quitting the application. </description> </method> <method name="reload_current_scene"> diff --git a/doc/classes/Texture2D.xml b/doc/classes/Texture2D.xml index ff8b439a3d..2270b95c63 100644 --- a/doc/classes/Texture2D.xml +++ b/doc/classes/Texture2D.xml @@ -7,6 +7,7 @@ A texture works by registering an image in the video hardware, which then can be used in 3D models or 2D [Sprite2D] or GUI [Control]. Textures are often created by loading them from a file. See [method @GDScript.load]. [Texture2D] is a base for other resources. It cannot be used directly. + [b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics hardware limitations. Larger textures may fail to import. </description> <tutorials> </tutorials> diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml index 2824159f0e..783614c4af 100644 --- a/doc/classes/Theme.xml +++ b/doc/classes/Theme.xml @@ -23,10 +23,10 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Clears the [Color] at [code]name[/code] if the theme has [code]type[/code]. + Clears the [Color] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="clear_constant"> @@ -34,10 +34,10 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Clears the constant at [code]name[/code] if the theme has [code]type[/code]. + Clears the constant at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="clear_font"> @@ -45,10 +45,10 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Clears the [Font] at [code]name[/code] if the theme has [code]type[/code]. + Clears the [Font] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="clear_icon"> @@ -56,10 +56,10 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Clears the icon at [code]name[/code] if the theme has [code]type[/code]. + Clears the icon at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="clear_stylebox"> @@ -67,10 +67,10 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Clears [StyleBox] at [code]name[/code] if the theme has [code]type[/code]. + Clears [StyleBox] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="copy_default_theme"> @@ -94,19 +94,19 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns the [Color] at [code]name[/code] if the theme has [code]type[/code]. + Returns the [Color] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="get_color_list" qualifiers="const"> <return type="PackedStringArray"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="node_type" type="String"> </argument> <description> - Returns all the [Color]s as a [PackedStringArray] filled with each [Color]'s name, for use in [method get_color], if the theme has [code]type[/code]. + Returns all the [Color]s as a [PackedStringArray] filled with each [Color]'s name, for use in [method get_color], if the theme has [code]node_type[/code]. </description> </method> <method name="get_constant" qualifiers="const"> @@ -114,19 +114,19 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns the constant at [code]name[/code] if the theme has [code]type[/code]. + Returns the constant at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="get_constant_list" qualifiers="const"> <return type="PackedStringArray"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="node_type" type="String"> </argument> <description> - Returns all the constants as a [PackedStringArray] filled with each constant's name, for use in [method get_constant], if the theme has [code]type[/code]. + Returns all the constants as a [PackedStringArray] filled with each constant's name, for use in [method get_constant], if the theme has [code]node_type[/code]. </description> </method> <method name="get_font" qualifiers="const"> @@ -134,19 +134,19 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns the [Font] at [code]name[/code] if the theme has [code]type[/code]. + Returns the [Font] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="get_font_list" qualifiers="const"> <return type="PackedStringArray"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="node_type" type="String"> </argument> <description> - Returns all the [Font]s as a [PackedStringArray] filled with each [Font]'s name, for use in [method get_font], if the theme has [code]type[/code]. + Returns all the [Font]s as a [PackedStringArray] filled with each [Font]'s name, for use in [method get_font], if the theme has [code]node_type[/code]. </description> </method> <method name="get_icon" qualifiers="const"> @@ -154,19 +154,19 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns the icon [Texture2D] at [code]name[/code] if the theme has [code]type[/code]. + Returns the icon [Texture2D] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="get_icon_list" qualifiers="const"> <return type="PackedStringArray"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="node_type" type="String"> </argument> <description> - Returns all the icons as a [PackedStringArray] filled with each [Texture2D]'s name, for use in [method get_icon], if the theme has [code]type[/code]. + Returns all the icons as a [PackedStringArray] filled with each [Texture2D]'s name, for use in [method get_icon], if the theme has [code]node_type[/code]. </description> </method> <method name="get_stylebox" qualifiers="const"> @@ -174,35 +174,35 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns the icon [StyleBox] at [code]name[/code] if the theme has [code]type[/code]. + Returns the icon [StyleBox] at [code]name[/code] if the theme has [code]node_type[/code]. </description> </method> <method name="get_stylebox_list" qualifiers="const"> <return type="PackedStringArray"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="node_type" type="String"> </argument> <description> - Returns all the [StyleBox]s as a [PackedStringArray] filled with each [StyleBox]'s name, for use in [method get_stylebox], if the theme has [code]type[/code]. + Returns all the [StyleBox]s as a [PackedStringArray] filled with each [StyleBox]'s name, for use in [method get_stylebox], if the theme has [code]node_type[/code]. </description> </method> <method name="get_stylebox_types" qualifiers="const"> <return type="PackedStringArray"> </return> <description> - Returns all the [StyleBox] types as a [PackedStringArray] filled with each [StyleBox]'s type, for use in [method get_stylebox] and/or [method get_stylebox_list], if the theme has [code]type[/code]. + Returns all the [StyleBox] types as a [PackedStringArray] filled with each [StyleBox]'s type, for use in [method get_stylebox] and/or [method get_stylebox_list], if the theme has [code]node_type[/code]. </description> </method> <method name="get_type_list" qualifiers="const"> <return type="PackedStringArray"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="node_type" type="String"> </argument> <description> - Returns all the types in [code]type[/code] as a [PackedStringArray] for use in any of the [code]get_*[/code] functions, if the theme has [code]type[/code]. + Returns all the types in [code]node_type[/code] as a [PackedStringArray] for use in any of the [code]get_*[/code] functions, if the theme has [code]node_type[/code]. </description> </method> <method name="has_color" qualifiers="const"> @@ -210,11 +210,11 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns [code]true[/code] if [Color] with [code]name[/code] is in [code]type[/code]. - Returns [code]false[/code] if the theme does not have [code]type[/code]. + Returns [code]true[/code] if [Color] with [code]name[/code] is in [code]node_type[/code]. + Returns [code]false[/code] if the theme does not have [code]node_type[/code]. </description> </method> <method name="has_constant" qualifiers="const"> @@ -222,11 +222,11 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns [code]true[/code] if constant with [code]name[/code] is in [code]type[/code]. - Returns [code]false[/code] if the theme does not have [code]type[/code]. + Returns [code]true[/code] if constant with [code]name[/code] is in [code]node_type[/code]. + Returns [code]false[/code] if the theme does not have [code]node_type[/code]. </description> </method> <method name="has_font" qualifiers="const"> @@ -234,11 +234,11 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns [code]true[/code] if [Font] with [code]name[/code] is in [code]type[/code]. - Returns [code]false[/code] if the theme does not have [code]type[/code]. + Returns [code]true[/code] if [Font] with [code]name[/code] is in [code]node_type[/code]. + Returns [code]false[/code] if the theme does not have [code]node_type[/code]. </description> </method> <method name="has_icon" qualifiers="const"> @@ -246,11 +246,11 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns [code]true[/code] if icon [Texture2D] with [code]name[/code] is in [code]type[/code]. - Returns [code]false[/code] if the theme does not have [code]type[/code]. + Returns [code]true[/code] if icon [Texture2D] with [code]name[/code] is in [code]node_type[/code]. + Returns [code]false[/code] if the theme does not have [code]node_type[/code]. </description> </method> <method name="has_stylebox" qualifiers="const"> @@ -258,11 +258,11 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <description> - Returns [code]true[/code] if [StyleBox] with [code]name[/code] is in [code]type[/code]. - Returns [code]false[/code] if the theme does not have [code]type[/code]. + Returns [code]true[/code] if [StyleBox] with [code]name[/code] is in [code]node_type[/code]. + Returns [code]false[/code] if the theme does not have [code]node_type[/code]. </description> </method> <method name="set_color"> @@ -270,13 +270,13 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <argument index="2" name="color" type="Color"> </argument> <description> - Sets the theme's [Color] to [code]color[/code] at [code]name[/code] in [code]type[/code]. - Does nothing if the theme does not have [code]type[/code]. + Sets the theme's [Color] to [code]color[/code] at [code]name[/code] in [code]node_type[/code]. + Does nothing if the theme does not have [code]node_type[/code]. </description> </method> <method name="set_constant"> @@ -284,13 +284,13 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <argument index="2" name="constant" type="int"> </argument> <description> - Sets the theme's constant to [code]constant[/code] at [code]name[/code] in [code]type[/code]. - Does nothing if the theme does not have [code]type[/code]. + Sets the theme's constant to [code]constant[/code] at [code]name[/code] in [code]node_type[/code]. + Does nothing if the theme does not have [code]node_type[/code]. </description> </method> <method name="set_font"> @@ -298,13 +298,13 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <argument index="2" name="font" type="Font"> </argument> <description> - Sets the theme's [Font] to [code]font[/code] at [code]name[/code] in [code]type[/code]. - Does nothing if the theme does not have [code]type[/code]. + Sets the theme's [Font] to [code]font[/code] at [code]name[/code] in [code]node_type[/code]. + Does nothing if the theme does not have [code]node_type[/code]. </description> </method> <method name="set_icon"> @@ -312,13 +312,13 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <argument index="2" name="texture" type="Texture2D"> </argument> <description> - Sets the theme's icon [Texture2D] to [code]texture[/code] at [code]name[/code] in [code]type[/code]. - Does nothing if the theme does not have [code]type[/code]. + Sets the theme's icon [Texture2D] to [code]texture[/code] at [code]name[/code] in [code]node_type[/code]. + Does nothing if the theme does not have [code]node_type[/code]. </description> </method> <method name="set_stylebox"> @@ -326,13 +326,13 @@ </return> <argument index="0" name="name" type="StringName"> </argument> - <argument index="1" name="type" type="StringName"> + <argument index="1" name="node_type" type="StringName"> </argument> <argument index="2" name="texture" type="StyleBox"> </argument> <description> - Sets theme's [StyleBox] to [code]stylebox[/code] at [code]name[/code] in [code]type[/code]. - Does nothing if the theme does not have [code]type[/code]. + Sets theme's [StyleBox] to [code]stylebox[/code] at [code]name[/code] in [code]node_type[/code]. + Does nothing if the theme does not have [code]node_type[/code]. </description> </method> </methods> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index 0b2fb80480..73575b4309 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -106,14 +106,21 @@ <return type="TreeItem"> </return> <description> - Returns the currently edited item. This is only available for custom cell mode. + Returns the currently edited item. Can be used with [signal item_edited] to get the item that was modified. + [codeblock] + func _ready(): + $Tree.item_edited.connect(on_Tree_item_edited) + + func on_Tree_item_edited(): + print($Tree.get_edited()) # This item just got edited (e.g. checked). + [/codeblock] </description> </method> <method name="get_edited_column" qualifiers="const"> <return type="int"> </return> <description> - Returns the column for the currently edited item. This is only available for custom cell mode. + Returns the column for the currently edited item. </description> </method> <method name="get_item_area_rect" qualifiers="const"> diff --git a/doc/classes/World2D.xml b/doc/classes/World2D.xml index b0bfd7f418..25033cdb09 100644 --- a/doc/classes/World2D.xml +++ b/doc/classes/World2D.xml @@ -16,7 +16,7 @@ The [RID] of this world's canvas resource. Used by the [RenderingServer] for 2D drawing. </member> <member name="direct_space_state" type="PhysicsDirectSpaceState2D" setter="" getter="get_direct_space_state"> - Direct access to the world's physics 2D space state. Used for querying current and potential collisions. Must only be accessed from the main thread within [code]_physics_process(delta)[/code]. + Direct access to the world's physics 2D space state. Used for querying current and potential collisions. When using multi-threaded physics, access is limited to [code]_physics_process(delta)[/code] in the main thread. </member> <member name="space" type="RID" setter="" getter="get_space"> The [RID] of this world's physics space resource. Used by the [PhysicsServer2D] for 2D physics, treating it as both a space and an area. diff --git a/doc/classes/World3D.xml b/doc/classes/World3D.xml index d804485d4e..fe92077432 100644 --- a/doc/classes/World3D.xml +++ b/doc/classes/World3D.xml @@ -15,7 +15,7 @@ <member name="camera_effects" type="CameraEffects" setter="set_camera_effects" getter="get_camera_effects"> </member> <member name="direct_space_state" type="PhysicsDirectSpaceState3D" setter="" getter="get_direct_space_state"> - Direct access to the world's physics 3D space state. Used for querying current and potential collisions. Must only be accessed from within [code]_physics_process(delta)[/code]. + Direct access to the world's physics 3D space state. Used for querying current and potential collisions. </member> <member name="environment" type="Environment" setter="set_environment" getter="get_environment"> The World3D's [Environment]. diff --git a/drivers/dummy/rasterizer_dummy.h b/drivers/dummy/rasterizer_dummy.h index 2d1c4f8d85..fd9c26bdb9 100644 --- a/drivers/dummy/rasterizer_dummy.h +++ b/drivers/dummy/rasterizer_dummy.h @@ -262,7 +262,6 @@ public: #if 0 RID texture_create() override { - DummyTexture *texture = memnew(DummyTexture); ERR_FAIL_COND_V(!texture, RID()); return texture_owner.make_rid(texture); @@ -709,14 +708,11 @@ public: /* LIGHTMAP CAPTURE */ #if 0 struct Instantiable { - SelfList<RasterizerScene::InstanceBase>::List instance_list; _FORCE_INLINE_ void instance_change_notify(bool p_aabb = true, bool p_materials = true) override { - SelfList<RasterizerScene::InstanceBase> *instances = instance_list.first(); while (instances) override { - //instances->self()->base_changed(p_aabb, p_materials); instances = instances->next(); } @@ -725,7 +721,6 @@ public: _FORCE_INLINE_ void instance_remove_deps() override { SelfList<RasterizerScene::InstanceBase> *instances = instance_list.first(); while (instances) override { - SelfList<RasterizerScene::InstanceBase> *next = instances->next(); //instances->self()->base_removed(); instances = next; @@ -738,7 +733,6 @@ public: }; struct LightmapCapture : public Instantiable { - Vector<LightmapCaptureOctree> octree; AABB bounds; Transform cell_xform; diff --git a/drivers/png/png_driver_common.cpp b/drivers/png/png_driver_common.cpp index d3e187c501..aed3fc9414 100644 --- a/drivers/png/png_driver_common.cpp +++ b/drivers/png/png_driver_common.cpp @@ -203,5 +203,4 @@ Error image_to_png(const Ref<Image> &p_image, Vector<uint8_t> &p_buffer) { return OK; } - } // namespace PNGDriverCommon diff --git a/drivers/png/png_driver_common.h b/drivers/png/png_driver_common.h index e7ec9b96bd..e47996193f 100644 --- a/drivers/png/png_driver_common.h +++ b/drivers/png/png_driver_common.h @@ -41,7 +41,6 @@ Error png_to_image(const uint8_t *p_source, size_t p_size, bool p_force_linear, // Append p_image, as a png, to p_buffer. // Contents of p_buffer is unspecified if error returned. Error image_to_png(const Ref<Image> &p_image, Vector<uint8_t> &p_buffer); - } // namespace PNGDriverCommon #endif diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp index 902876616b..0a42450675 100644 --- a/drivers/vulkan/rendering_device_vulkan.cpp +++ b/drivers/vulkan/rendering_device_vulkan.cpp @@ -3733,13 +3733,11 @@ String RenderingDeviceVulkan::_shader_uniform_debug(RID p_shader, int p_set) { } #if 0 bool RenderingDeviceVulkan::_uniform_add_binding(Vector<Vector<VkDescriptorSetLayoutBinding> > &bindings, Vector<Vector<UniformInfo> > &uniform_infos, const glslang::TObjectReflection &reflection, RenderingDevice::ShaderStage p_stage, Shader::PushConstant &push_constant, String *r_error) { - VkDescriptorSetLayoutBinding layout_binding; UniformInfo info; switch (reflection.getType()->getBasicType()) { case glslang::EbtSampler: { - //print_line("DEBUG: IsSampler"); if (reflection.getType()->getSampler().dim == glslang::EsdBuffer) { //texture buffers @@ -3837,13 +3835,10 @@ bool RenderingDeviceVulkan::_uniform_add_binding(Vector<Vector<VkDescriptorSetLa } break; /*case glslang::EbtReference: { - } break;*/ /*case glslang::EbtAtomicUint: { - } break;*/ default: { - if (reflection.getType()->getQualifier().hasOffset() || reflection.name.find(".") != std::string::npos) { //member of uniform block? return true; @@ -6837,7 +6832,6 @@ void RenderingDeviceVulkan::full_barrier() { #if 0 void RenderingDeviceVulkan::draw_list_render_secondary_to_framebuffer(ID p_framebuffer, ID *p_draw_lists, uint32_t p_draw_list_count, InitialAction p_initial_action, FinalAction p_final_action, const Vector<Variant> &p_clear_colors) { - VkCommandBuffer frame_cmdbuf = frames[frame].frame_buffer; ERR_FAIL_COND(!frame_cmdbuf); @@ -6866,7 +6860,6 @@ void RenderingDeviceVulkan::draw_list_render_secondary_to_framebuffer(ID p_frame ID screen_format = screen_get_framebuffer_format(); { - VkCommandBuffer *command_buffers = (VkCommandBuffer *)alloca(sizeof(VkCommandBuffer) * p_draw_list_count); uint32_t command_buffer_count = 0; @@ -6890,7 +6883,6 @@ void RenderingDeviceVulkan::draw_list_render_secondary_to_framebuffer(ID p_frame } vkCmdEndRenderPass(frame_cmdbuf); - } #endif diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp index 28634d5e70..ecf9dac61b 100644 --- a/drivers/vulkan/vulkan_context.cpp +++ b/drivers/vulkan/vulkan_context.cpp @@ -302,7 +302,7 @@ Error VulkanContext::_create_physical_device() { /*flags*/ 0, /*pApplicationInfo*/ &app, /*enabledLayerCount*/ enabled_layer_count, - /*ppEnabledLayerNames*/ (const char *const *)instance_validation_layers, + /*ppEnabledLayerNames*/ (const char *const *)enabled_layers, /*enabledExtensionCount*/ enabled_extension_count, /*ppEnabledExtensionNames*/ (const char *const *)extension_names, }; @@ -1010,7 +1010,6 @@ Error VulkanContext::_update_swap_chain(Window *window) { { const VkAttachmentDescription attachment = { - /*flags*/ 0, /*format*/ format, /*samples*/ VK_SAMPLE_COUNT_1_BIT, diff --git a/drivers/vulkan/vulkan_context.h b/drivers/vulkan/vulkan_context.h index 26d4b76e86..62b97a7e60 100644 --- a/drivers/vulkan/vulkan_context.h +++ b/drivers/vulkan/vulkan_context.h @@ -120,7 +120,6 @@ class VulkanContext { uint32_t enabled_extension_count = 0; const char *extension_names[MAX_EXTENSIONS]; - const char **instance_validation_layers = nullptr; uint32_t enabled_layer_count = 0; const char *enabled_layers[MAX_LAYERS]; diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp index b461ac4f35..276df45972 100644 --- a/editor/debugger/editor_debugger_node.cpp +++ b/editor/debugger/editor_debugger_node.cpp @@ -232,6 +232,9 @@ void EditorDebuggerNode::_notification(int p_what) { tabs->add_theme_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_theme_stylebox("DebuggerPanel", "EditorStyles")); } } break; + case NOTIFICATION_READY: { + _update_debug_options(); + } break; default: break; } @@ -385,7 +388,7 @@ void EditorDebuggerNode::set_script_debug_button(MenuButton *p_button) { p->add_shortcut(ED_GET_SHORTCUT("debugger/break"), DEBUG_BREAK); p->add_shortcut(ED_GET_SHORTCUT("debugger/continue"), DEBUG_CONTINUE); p->add_separator(); - p->add_check_shortcut(ED_GET_SHORTCUT("debugger/keep_debugger_open"), DEBUG_SHOW_KEEP_OPEN); + p->add_check_shortcut(ED_GET_SHORTCUT("debugger/keep_debugger_open"), DEBUG_KEEP_DEBUGGER_OPEN); p->add_check_shortcut(ED_GET_SHORTCUT("debugger/debug_with_external_editor"), DEBUG_WITH_EXTERNAL_EDITOR); p->connect("id_pressed", callable_mp(this, &EditorDebuggerNode::_menu_option)); @@ -425,20 +428,33 @@ void EditorDebuggerNode::_menu_option(int p_id) { case DEBUG_CONTINUE: { debug_continue(); } break; - - case DEBUG_SHOW_KEEP_OPEN: { - bool visible = script_menu->get_popup()->is_item_checked(script_menu->get_popup()->get_item_index(DEBUG_SHOW_KEEP_OPEN)); - hide_on_stop = visible; - script_menu->get_popup()->set_item_checked(script_menu->get_popup()->get_item_index(DEBUG_SHOW_KEEP_OPEN), !visible); + case DEBUG_KEEP_DEBUGGER_OPEN: { + bool ischecked = script_menu->get_popup()->is_item_checked(script_menu->get_popup()->get_item_index(DEBUG_KEEP_DEBUGGER_OPEN)); + hide_on_stop = ischecked; + script_menu->get_popup()->set_item_checked(script_menu->get_popup()->get_item_index(DEBUG_KEEP_DEBUGGER_OPEN), !ischecked); + EditorSettings::get_singleton()->set_project_metadata("debug_options", "keep_debugger_open", !ischecked); } break; case DEBUG_WITH_EXTERNAL_EDITOR: { - bool checked = !script_menu->get_popup()->is_item_checked(script_menu->get_popup()->get_item_index(DEBUG_WITH_EXTERNAL_EDITOR)); - debug_with_external_editor = checked; - script_menu->get_popup()->set_item_checked(script_menu->get_popup()->get_item_index(DEBUG_WITH_EXTERNAL_EDITOR), checked); + bool ischecked = script_menu->get_popup()->is_item_checked(script_menu->get_popup()->get_item_index(DEBUG_WITH_EXTERNAL_EDITOR)); + debug_with_external_editor = !ischecked; + script_menu->get_popup()->set_item_checked(script_menu->get_popup()->get_item_index(DEBUG_WITH_EXTERNAL_EDITOR), !ischecked); + EditorSettings::get_singleton()->set_project_metadata("debug_options", "debug_with_external_editor", !ischecked); } break; } } +void EditorDebuggerNode::_update_debug_options() { + bool keep_debugger_open = EditorSettings::get_singleton()->get_project_metadata("debug_options", "keep_debugger_open", false); + bool debug_with_external_editor = EditorSettings::get_singleton()->get_project_metadata("debug_options", "debug_with_external_editor", false); + + if (keep_debugger_open) { + _menu_option(DEBUG_KEEP_DEBUGGER_OPEN); + } + if (debug_with_external_editor) { + _menu_option(DEBUG_WITH_EXTERNAL_EDITOR); + } +} + void EditorDebuggerNode::_paused() { const bool paused = EditorNode::get_singleton()->get_pause_button()->is_pressed(); _for_all(tabs, [&](ScriptEditorDebugger *dbg) { diff --git a/editor/debugger/editor_debugger_node.h b/editor/debugger/editor_debugger_node.h index 8d70a7f961..0f3be4d2dd 100644 --- a/editor/debugger/editor_debugger_node.h +++ b/editor/debugger/editor_debugger_node.h @@ -60,7 +60,7 @@ private: DEBUG_STEP, DEBUG_BREAK, DEBUG_CONTINUE, - DEBUG_SHOW_KEEP_OPEN, + DEBUG_KEEP_DEBUGGER_OPEN, DEBUG_WITH_EXTERNAL_EDITOR, }; @@ -133,6 +133,7 @@ protected: void _paused(); void _break_state_changed(); void _menu_option(int p_id); + void _update_debug_options(); protected: void _notification(int p_what); diff --git a/editor/debugger/editor_visual_profiler.cpp b/editor/debugger/editor_visual_profiler.cpp index 81b42da08e..baeb06794a 100644 --- a/editor/debugger/editor_visual_profiler.cpp +++ b/editor/debugger/editor_visual_profiler.cpp @@ -476,7 +476,6 @@ void EditorVisualProfiler::_graph_tex_draw() { /* if (hover_metric != -1 && frame_metrics[hover_metric].valid) { - int max_frames = frame_metrics.size(); int frame = frame_metrics[hover_metric].frame_number - (frame_metrics[last_metric].frame_number - max_frames + 1); if (frame < 0) @@ -671,7 +670,6 @@ Vector<Vector<String>> EditorVisualProfiler::get_data_as_csv() const { const Vector<EditorFrameProfiler::Metric::Category> &categories = frame_metrics[0].categories; for (int j = 0; j < categories.size(); j++) { - const EditorFrameProfiler::Metric::Category &c = categories[j]; signatures.push_back(c.signature); @@ -688,7 +686,6 @@ Vector<Vector<String>> EditorVisualProfiler::get_data_as_csv() const { int index = last_metric; for (int i = 0; i < frame_metrics.size(); i++) { - ++index; if (index >= frame_metrics.size()) { @@ -702,7 +699,6 @@ Vector<Vector<String>> EditorVisualProfiler::get_data_as_csv() const { const Vector<EditorFrameProfiler::Metric::Category> &frame_cat = frame_metrics[index].categories; for (int j = 0; j < frame_cat.size(); j++) { - const EditorFrameProfiler::Metric::Category &c = frame_cat[j]; values.write[it++] = String::num_real(c.total_time); diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index 248073c5a2..fd33115cda 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -487,8 +487,11 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da error->set_text_align(0, TreeItem::ALIGN_LEFT); String error_title; - // Include method name, when given, in error title. - if (!oe.source_func.empty()) { + if (oe.callstack.size() > 0) { + // If available, use the script's stack in the error title. + error_title = oe.callstack[oe.callstack.size() - 1].func + ": "; + } else if (!oe.source_func.empty()) { + // Otherwise try to use the C++ source function. error_title += oe.source_func + ": "; } // If we have a (custom) error message, use it as title, and add a C++ Error @@ -529,9 +532,6 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da cpp_source->set_metadata(0, source_meta); } - error->set_tooltip(0, tooltip); - error->set_tooltip(1, tooltip); - // Format stack trace. // stack_items_count is the number of elements to parse, with 3 items per frame // of the stack trace (script, method, line). @@ -548,10 +548,17 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da stack_trace->set_text(0, "<" + TTR("Stack Trace") + ">"); stack_trace->set_text_align(0, TreeItem::ALIGN_LEFT); error->set_metadata(0, meta); + tooltip += TTR("Stack Trace:") + "\n"; } - stack_trace->set_text(1, infos[i].file.get_file() + ":" + itos(infos[i].line) + " @ " + infos[i].func + "()"); + + String frame_txt = infos[i].file.get_file() + ":" + itos(infos[i].line) + " @ " + infos[i].func + "()"; + tooltip += frame_txt + "\n"; + stack_trace->set_text(1, frame_txt); } + error->set_tooltip(0, tooltip); + error->set_tooltip(1, tooltip); + if (oe.warning) { warning_count++; } else { diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index 5e87f866d8..527286583e 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -450,13 +450,13 @@ void DependencyRemoveDialog::show(const Vector<String> &p_folders, const Vector< removed_deps.sort(); if (removed_deps.empty()) { owners->hide(); - text->set_text(TTR("Remove selected files from the project? (Can't be restored)")); + text->set_text(TTR("Remove selected files from the project? (no undo)\nYou can find the removed files in the system trash to restore them.")); set_size(Size2()); popup_centered(); } else { _build_removed_dependency_tree(removed_deps); owners->show(); - text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)")); + text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)\nYou can find the removed files in the system trash to restore them.")); popup_centered(Size2(500, 350)); } EditorFileSystem::get_singleton()->scan_changes(); diff --git a/editor/editor_data.h b/editor/editor_data.h index 5037a6acb4..eec95554be 100644 --- a/editor/editor_data.h +++ b/editor/editor_data.h @@ -40,7 +40,6 @@ class EditorHistory { enum { - HISTORY_MAX = 64 }; diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index 97800fe961..3aeffede82 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -737,6 +737,9 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> & _edit_filter_list(paths, p_preset->get_include_filter(), false); _edit_filter_list(paths, p_preset->get_exclude_filter(), true); + // Ignore import files, since these are automatically added to the jar later with the resources + _edit_filter_list(paths, String("*.import"), true); + // Get encryption filters. bool enc_pck = p_preset->get_enc_pck(); Vector<String> enc_in_filters; diff --git a/editor/editor_help.h b/editor/editor_help.h index 7c3edeb299..b69b6d7401 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -91,7 +91,6 @@ class EditorHelp : public VBoxContainer { GDCLASS(EditorHelp, VBoxContainer); enum Page { - PAGE_CLASS_LIST, PAGE_CLASS_DESC, PAGE_CLASS_PREV, diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index c6613cdf63..976afd8e8e 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -760,15 +760,18 @@ void EditorNode::_fs_changed() { preset_name); } else { Ref<EditorExportPlatform> platform = preset->get_platform(); - if (platform.is_null()) { + const String export_path = export_defer.path.empty() ? preset->get_export_path() : export_defer.path; + if (export_path.empty()) { + export_error = vformat("Export preset '%s' doesn't have a default export path, and none was specified.", preset_name); + } else if (platform.is_null()) { export_error = vformat("Export preset '%s' doesn't have a matching platform.", preset_name); } else { Error err = OK; if (export_defer.pack_only) { // Only export .pck or .zip data pack. - if (export_defer.path.ends_with(".zip")) { - err = platform->export_zip(preset, export_defer.debug, export_defer.path); - } else if (export_defer.path.ends_with(".pck")) { - err = platform->export_pack(preset, export_defer.debug, export_defer.path); + if (export_path.ends_with(".zip")) { + err = platform->export_zip(preset, export_defer.debug, export_path); + } else if (export_path.ends_with(".pck")) { + err = platform->export_pack(preset, export_defer.debug, export_path); } } else { // Normal project export. String config_error; @@ -777,7 +780,7 @@ void EditorNode::_fs_changed() { ERR_PRINT(vformat("Cannot export project with preset '%s' due to configuration errors:\n%s", preset_name, config_error)); err = missing_templates ? ERR_FILE_NOT_FOUND : ERR_UNCONFIGURED; } else { - err = platform->export_project(preset, export_defer.debug, export_defer.path); + err = platform->export_project(preset, export_defer.debug, export_path); } } switch (err) { @@ -787,7 +790,7 @@ void EditorNode::_fs_changed() { export_error = vformat("Project export failed for preset '%s', the export template appears to be missing.", preset_name); break; case ERR_FILE_BAD_PATH: - export_error = vformat("Project export failed for preset '%s', the target path '%s' appears to be invalid.", preset_name, export_defer.path); + export_error = vformat("Project export failed for preset '%s', the target path '%s' appears to be invalid.", preset_name, export_path); break; default: export_error = vformat("Project export failed with error code %d for preset '%s'.", (int)err, preset_name); @@ -1679,7 +1682,7 @@ void EditorNode::_dialog_action(String p_file) { if (err == ERR_FILE_CANT_OPEN || err == ERR_FILE_NOT_FOUND) { config.instance(); // new config } else if (err != OK) { - show_warning(TTR("Error trying to save layout!")); + show_warning(TTR("An error occurred while trying to save the editor layout.\nMake sure the editor's user data path is writable.")); return; } @@ -1691,7 +1694,7 @@ void EditorNode::_dialog_action(String p_file) { _update_layouts_menu(); if (p_file == "Default") { - show_warning(TTR("Default editor layout overridden.")); + show_warning(TTR("Default editor layout overridden.\nTo restore the Default layout to its base settings, use the Delete Layout option and delete the Default layout.")); } } break; @@ -1722,7 +1725,7 @@ void EditorNode::_dialog_action(String p_file) { _update_layouts_menu(); if (p_file == "Default") { - show_warning(TTR("Restored default layout to base settings.")); + show_warning(TTR("Restored the Default layout to its base settings.")); } } break; @@ -5565,46 +5568,51 @@ EditorNode::EditorNode() { { int display_scale = EditorSettings::get_singleton()->get("interface/editor/display_scale"); - float custom_display_scale = EditorSettings::get_singleton()->get("interface/editor/custom_display_scale"); switch (display_scale) { case 0: { - // Try applying a suitable display scale automatically + // Try applying a suitable display scale automatically. #ifdef OSX_ENABLED editor_set_scale(DisplayServer::get_singleton()->screen_get_max_scale()); #else const int screen = DisplayServer::get_singleton()->window_get_current_screen(); - editor_set_scale(DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).x > 2000 ? 2.0 : 1.0); + float scale; + if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) { + // hiDPI display. + scale = 2.0; + } else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) { + // Small loDPI display. Use a smaller display scale so that editor elements fit more easily. + // Icons won't look great, but this is better than having editor elements overflow from its window. + scale = 0.75; + } else { + scale = 1.0; + } + + editor_set_scale(scale); #endif } break; - case 1: { + case 1: editor_set_scale(0.75); - } break; - - case 2: { + break; + case 2: editor_set_scale(1.0); - } break; - - case 3: { + break; + case 3: editor_set_scale(1.25); - } break; - - case 4: { + break; + case 4: editor_set_scale(1.5); - } break; - - case 5: { + break; + case 5: editor_set_scale(1.75); - } break; - - case 6: { + break; + case 6: editor_set_scale(2.0); - } break; - - default: { - editor_set_scale(custom_display_scale); - } break; + break; + default: + editor_set_scale(EditorSettings::get_singleton()->get("interface/editor/custom_display_scale")); + break; } } @@ -6805,14 +6813,16 @@ EditorNode::EditorNode() { ED_SHORTCUT("editor/editor_2d", TTR("Open 2D Editor"), KEY_MASK_ALT | KEY_1); ED_SHORTCUT("editor/editor_3d", TTR("Open 3D Editor"), KEY_MASK_ALT | KEY_2); ED_SHORTCUT("editor/editor_script", TTR("Open Script Editor"), KEY_MASK_ALT | KEY_3); + ED_SHORTCUT("editor/editor_assetlib", TTR("Open Asset Library"), KEY_MASK_ALT | KEY_4); ED_SHORTCUT("editor/editor_help", TTR("Search Help"), KEY_MASK_ALT | KEY_SPACE); #else - ED_SHORTCUT("editor/editor_2d", TTR("Open 2D Editor"), KEY_F1); - ED_SHORTCUT("editor/editor_3d", TTR("Open 3D Editor"), KEY_F2); - ED_SHORTCUT("editor/editor_script", TTR("Open Script Editor"), KEY_F3); //hack needed for script editor F3 search to work :) Assign like this or don't use F3 + // Use the Ctrl modifier so F2 can be used to rename nodes in the scene tree dock. + ED_SHORTCUT("editor/editor_2d", TTR("Open 2D Editor"), KEY_MASK_CTRL | KEY_F1); + ED_SHORTCUT("editor/editor_3d", TTR("Open 3D Editor"), KEY_MASK_CTRL | KEY_F2); + ED_SHORTCUT("editor/editor_script", TTR("Open Script Editor"), KEY_MASK_CTRL | KEY_F3); + ED_SHORTCUT("editor/editor_assetlib", TTR("Open Asset Library"), KEY_MASK_CTRL | KEY_F4); ED_SHORTCUT("editor/editor_help", TTR("Search Help"), KEY_MASK_SHIFT | KEY_F1); #endif - ED_SHORTCUT("editor/editor_assetlib", TTR("Open Asset Library")); ED_SHORTCUT("editor/editor_next", TTR("Open the next Editor")); ED_SHORTCUT("editor/editor_prev", TTR("Open the previous Editor")); diff --git a/editor/editor_properties.h b/editor/editor_properties.h index be3e9db8ed..828b639527 100644 --- a/editor/editor_properties.h +++ b/editor/editor_properties.h @@ -595,7 +595,6 @@ class EditorPropertyResource : public EditorProperty { GDCLASS(EditorPropertyResource, EditorProperty); enum MenuOption { - OBJ_MENU_LOAD = 0, OBJ_MENU_EDIT = 1, OBJ_MENU_CLEAR = 2, diff --git a/editor/editor_run.h b/editor/editor_run.h index a15d65d91b..08b1e74ed1 100644 --- a/editor/editor_run.h +++ b/editor/editor_run.h @@ -36,7 +36,6 @@ class EditorRun { public: enum Status { - STATUS_PLAY, STATUS_PAUSED, STATUS_STOP diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 79525ced51..768e5bccbc 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -441,7 +441,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // Highlighted tabs and border width Color tab_color = highlight_tabs ? base_color.lerp(font_color, contrast) : base_color; - const int border_width = CLAMP(border_size, 0, 3) * EDSCALE; + // Ensure borders are visible when using an editor scale below 100%. + const int border_width = CLAMP(border_size, 0, 3) * MAX(1, EDSCALE); const int default_margin_size = 4; const int margin_size_extra = default_margin_size + CLAMP(border_size, 0, 3); diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index ee0ee91893..543546b152 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -2363,7 +2363,7 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, Vector<Str if (p_paths.size() > 1 || p_paths[0] != "res://") { p_popup->add_icon_item(get_theme_icon("MoveUp", "EditorIcons"), TTR("Move To..."), FILE_MOVE); - p_popup->add_icon_item(get_theme_icon("Remove", "EditorIcons"), TTR("Delete"), FILE_REMOVE); + p_popup->add_icon_item(get_theme_icon("Remove", "EditorIcons"), TTR("Move to Trash"), FILE_REMOVE); } if (p_paths.size() == 1) { diff --git a/editor/import/collada.h b/editor/import/collada.h index aa0d42035f..2f6db93dbc 100644 --- a/editor/import/collada.h +++ b/editor/import/collada.h @@ -313,7 +313,6 @@ public: struct Node { enum Type { - TYPE_NODE, TYPE_JOINT, TYPE_SKELETON, //this bone is not collada, it's added afterwards as optimization diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index 266df78949..0c860a8965 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -1304,12 +1304,14 @@ Error EditorSceneImporterGLTF::_parse_images(GLTFState &state, const String &p_b String uri = d["uri"]; if (uri.begins_with("data:")) { // Embedded data using base64. - // Validate data MIME types and throw an error if it's one we don't know/support. + // Validate data MIME types and throw a warning if it's one we don't know/support. if (!uri.begins_with("data:application/octet-stream;base64") && !uri.begins_with("data:application/gltf-buffer;base64") && !uri.begins_with("data:image/png;base64") && !uri.begins_with("data:image/jpeg;base64")) { - ERR_PRINT("glTF: Got image data with an unknown URI data type: " + uri); + WARN_PRINT(vformat("glTF: Image index '%d' uses an unsupported URI data type: %s. Skipping it.", i, uri)); + state.images.push_back(Ref<Texture2D>()); // Placeholder to keep count. + continue; } data = _parse_base64_uri(uri); data_ptr = data.ptr(); @@ -1344,7 +1346,8 @@ Error EditorSceneImporterGLTF::_parse_images(GLTFState &state, const String &p_b } } else if (d.has("bufferView")) { // Handles the third bullet point from the spec (bufferView). - ERR_FAIL_COND_V_MSG(mimetype.empty(), ERR_FILE_CORRUPT, "glTF: Image specifies 'bufferView' but no 'mimeType', which is invalid."); + ERR_FAIL_COND_V_MSG(mimetype.empty(), ERR_FILE_CORRUPT, + vformat("glTF: Image index '%d' specifies 'bufferView' but no 'mimeType', which is invalid.", i)); const GLTFBufferViewIndex bvi = d["bufferView"]; @@ -1381,7 +1384,8 @@ Error EditorSceneImporterGLTF::_parse_images(GLTFState &state, const String &p_b } } - ERR_FAIL_COND_V_MSG(img.is_null(), ERR_FILE_CORRUPT, "glTF: Couldn't load image with its given mimetype: " + mimetype); + ERR_FAIL_COND_V_MSG(img.is_null(), ERR_FILE_CORRUPT, + vformat("glTF: Couldn't load image index '%d' with its given mimetype: %s.", i, mimetype)); Ref<ImageTexture> t; t.instance(); diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index 3a0e624a8f..ac2485fe31 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -205,7 +205,7 @@ void ResourceImporterTexture::get_import_options(List<ImportOption> *r_options, r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "mipmaps/generate"), (p_preset == PRESET_3D ? true : false))); r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "mipmaps/limit", PROPERTY_HINT_RANGE, "-1,256"), -1)); r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "roughness/mode", PROPERTY_HINT_ENUM, "Detect,Disabled,Red,Green,Blue,Alpha,Gray"), 0)); - r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "roughness/src_normal", PROPERTY_HINT_FILE, "*.png,*.jpg"), "")); + r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "roughness/src_normal", PROPERTY_HINT_FILE, "*.bmp,*.dds,*.exr,*.jpeg,*.jpg,*.hdr,*.png,*.svg,*.svgz,*.tga,*.webp"), "")); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "process/fix_alpha_border"), p_preset != PRESET_3D)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "process/premult_alpha"), false)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "process/invert_color"), false)); diff --git a/editor/input_map_editor.cpp b/editor/input_map_editor.cpp index c67e16d371..5b6d850096 100644 --- a/editor/input_map_editor.cpp +++ b/editor/input_map_editor.cpp @@ -35,37 +35,37 @@ #include "editor/editor_node.h" #include "editor/editor_scale.h" -static const char *_button_descriptions[JOY_SDL_BUTTONS] = { - TTRC("Face Bottom, DualShock Cross, Xbox A, Nintendo B"), - TTRC("Face Right, DualShock Circle, Xbox B, Nintendo A"), - TTRC("Face Left, DualShock Square, Xbox X, Nintendo Y"), - TTRC("Face Top, DualShock Triangle, Xbox Y, Nintendo X"), - TTRC("DualShock Select, Xbox Back, Nintendo -"), - TTRC("Home, DualShock PS, Guide"), +static const char *_button_descriptions[JOY_BUTTON_SDL_MAX] = { + TTRC("Bottom Action, Sony Cross, Xbox A, Nintendo B"), + TTRC("Right Action, Sony Circle, Xbox B, Nintendo A"), + TTRC("Left Action, Sony Square, Xbox X, Nintendo Y"), + TTRC("Top Action, Sony Triangle, Xbox Y, Nintendo X"), + TTRC("Back, Sony Select, Xbox Back, Nintendo -"), + TTRC("Guide, Sony PS, Xbox Home"), TTRC("Start, Nintendo +"), - TTRC("Left Stick, DualShock L3, Xbox L/LS"), - TTRC("Right Stick, DualShock R3, Xbox R/RS"), - TTRC("Left Shoulder, DualShock L1, Xbox LB"), - TTRC("Right Shoulder, DualShock R1, Xbox RB"), - TTRC("D-Pad Up"), - TTRC("D-Pad Down"), - TTRC("D-Pad Left"), - TTRC("D-Pad Right") + TTRC("Left Stick, Sony L3, Xbox L/LS"), + TTRC("Right Stick, Sony R3, Xbox R/RS"), + TTRC("Left Shoulder, Sony L1, Xbox LB"), + TTRC("Right Shoulder, Sony R1, Xbox RB"), + TTRC("D-pad Up"), + TTRC("D-pad Down"), + TTRC("D-pad Left"), + TTRC("D-pad Right"), }; static const char *_axis_descriptions[JOY_AXIS_MAX * 2] = { - TTRC("Left Stick Left"), - TTRC("Left Stick Right"), - TTRC("Left Stick Up"), - TTRC("Left Stick Down"), - TTRC("Right Stick Left"), - TTRC("Right Stick Right"), - TTRC("Right Stick Up"), - TTRC("Right Stick Down"), + TTRC("Left Stick Left, Joystick 0 Left"), + TTRC("Left Stick Right, Joystick 0 Right"), + TTRC("Left Stick Up, Joystick 0 Up"), + TTRC("Left Stick Down, Joystick 0 Down"), + TTRC("Right Stick Left, Joystick 1 Left"), + TTRC("Right Stick Right, Joystick 1 Right"), + TTRC("Right Stick Up, Joystick 1 Up"), + TTRC("Right Stick Down, Joystick 1 Down"), TTRC("Joystick 2 Left"), - TTRC("Joystick 2 Right, Left Trigger, L2, LT"), + TTRC("Left Trigger, L2, LT, Joystick 2 Right"), TTRC("Joystick 2 Up"), - TTRC("Joystick 2 Down, Right Trigger, R2, RT"), + TTRC("Right Trigger, R2, RT, Joystick 2 Down"), TTRC("Joystick 3 Left"), TTRC("Joystick 3 Right"), TTRC("Joystick 3 Up"), @@ -503,7 +503,7 @@ void InputMapEditor::_add_item(int p_item, Ref<InputEvent> p_exiting_event) { device_index->clear(); for (int i = 0; i < JOY_BUTTON_MAX; i++) { String desc = TTR("Button") + " " + itos(i); - if (i < JOY_SDL_BUTTONS) { + if (i < JOY_BUTTON_SDL_MAX) { desc += " (" + TTR(_button_descriptions[i]) + ")"; } device_index->add_item(desc); @@ -717,7 +717,7 @@ void InputMapEditor::_update_actions() { const int idx = jb->get_button_index(); String str = _get_device_string(jb->get_device()) + ", " + TTR("Button") + " " + itos(idx); - if (idx >= 0 && idx < JOY_SDL_BUTTONS) { + if (idx >= 0 && idx < JOY_BUTTON_SDL_MAX) { str += String() + " (" + TTR(_button_descriptions[jb->get_button_index()]) + ")"; } diff --git a/editor/node_3d_editor_gizmos.cpp b/editor/node_3d_editor_gizmos.cpp index 397a958d8f..b7f7d637d2 100644 --- a/editor/node_3d_editor_gizmos.cpp +++ b/editor/node_3d_editor_gizmos.cpp @@ -1716,14 +1716,12 @@ void Skeleton3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { Vector3 face_points[4]; for (int j=0;j<4;j++) { - float v[3]; v[0]=1.0; v[1]=1-2*((j>>1)&1); v[2]=v[1]*(1-2*(j&1)); for (int k=0;k<3;k++) { - if (i<3) face_points[j][(i+k)%3]=v[k]*(i>=3?-1:1); else diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index e1f2d2c045..6acf80a2c1 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -1513,7 +1513,7 @@ bool CanvasItemEditor::_gui_input_rotate(const Ref<InputEvent> &p_event) { // Start rotation if (drag_type == DRAG_NONE) { if (b.is_valid() && b->get_button_index() == BUTTON_LEFT && b->is_pressed()) { - if ((b->get_control() && !b->get_alt() && tool == TOOL_SELECT) || tool == TOOL_ROTATE) { + if ((b->get_command() && !b->get_alt() && tool == TOOL_SELECT) || tool == TOOL_ROTATE) { List<CanvasItem *> selection = _get_edited_canvas_items(); // Remove not movable nodes @@ -3389,7 +3389,6 @@ void CanvasItemEditor::_draw_selection() { if (canvas_item->_edit_use_rect()) { Vector2 pre_drag_endpoints[4] = { - pre_drag_xform.xform(se->pre_drag_rect.position), pre_drag_xform.xform(se->pre_drag_rect.position + Vector2(se->pre_drag_rect.size.x, 0)), pre_drag_xform.xform(se->pre_drag_rect.position + se->pre_drag_rect.size), diff --git a/editor/plugins/collision_polygon_3d_editor_plugin.h b/editor/plugins/collision_polygon_3d_editor_plugin.h index 98f499031a..bb4ee2185e 100644 --- a/editor/plugins/collision_polygon_3d_editor_plugin.h +++ b/editor/plugins/collision_polygon_3d_editor_plugin.h @@ -44,7 +44,6 @@ class CollisionPolygon3DEditor : public HBoxContainer { UndoRedo *undo_redo; enum Mode { - MODE_CREATE, MODE_EDIT, diff --git a/editor/plugins/cpu_particles_3d_editor_plugin.h b/editor/plugins/cpu_particles_3d_editor_plugin.h index 90300daf71..d6886a24dc 100644 --- a/editor/plugins/cpu_particles_3d_editor_plugin.h +++ b/editor/plugins/cpu_particles_3d_editor_plugin.h @@ -38,7 +38,6 @@ class CPUParticles3DEditor : public GPUParticles3DEditorBase { GDCLASS(CPUParticles3DEditor, GPUParticles3DEditorBase); enum Menu { - MENU_OPTION_CREATE_EMISSION_VOLUME_FROM_NODE, MENU_OPTION_CLEAR_EMISSION_VOLUME, MENU_OPTION_RESTART diff --git a/editor/plugins/gpu_particles_2d_editor_plugin.h b/editor/plugins/gpu_particles_2d_editor_plugin.h index 86e89bd0b0..f3ca20b71a 100644 --- a/editor/plugins/gpu_particles_2d_editor_plugin.h +++ b/editor/plugins/gpu_particles_2d_editor_plugin.h @@ -42,7 +42,6 @@ class GPUParticles2DEditorPlugin : public EditorPlugin { GDCLASS(GPUParticles2DEditorPlugin, EditorPlugin); enum { - MENU_GENERATE_VISIBILITY_RECT, MENU_LOAD_EMISSION_MASK, MENU_CLEAR_EMISSION_MASK, diff --git a/editor/plugins/gpu_particles_3d_editor_plugin.h b/editor/plugins/gpu_particles_3d_editor_plugin.h index 1665b3676a..ce376e4386 100644 --- a/editor/plugins/gpu_particles_3d_editor_plugin.h +++ b/editor/plugins/gpu_particles_3d_editor_plugin.h @@ -71,7 +71,6 @@ class GPUParticles3DEditor : public GPUParticles3DEditorBase { GPUParticles3D *node; enum Menu { - MENU_OPTION_GENERATE_AABB, MENU_OPTION_CREATE_EMISSION_VOLUME_FROM_NODE, MENU_OPTION_CLEAR_EMISSION_VOLUME, diff --git a/editor/plugins/item_list_editor_plugin.h b/editor/plugins/item_list_editor_plugin.h index 87586904a3..fa5e802869 100644 --- a/editor/plugins/item_list_editor_plugin.h +++ b/editor/plugins/item_list_editor_plugin.h @@ -49,7 +49,6 @@ protected: public: enum Flags { - FLAG_ICON = 1, FLAG_CHECKABLE = 2, FLAG_ID = 4, diff --git a/editor/plugins/mesh_instance_3d_editor_plugin.h b/editor/plugins/mesh_instance_3d_editor_plugin.h index 77a2b8ec34..f42136942b 100644 --- a/editor/plugins/mesh_instance_3d_editor_plugin.h +++ b/editor/plugins/mesh_instance_3d_editor_plugin.h @@ -40,7 +40,6 @@ class MeshInstance3DEditor : public Control { GDCLASS(MeshInstance3DEditor, Control); enum Menu { - MENU_OPTION_CREATE_STATIC_TRIMESH_BODY, MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE, MENU_OPTION_CREATE_SINGLE_CONVEX_COLLISION_SHAPE, diff --git a/editor/plugins/mesh_library_editor_plugin.h b/editor/plugins/mesh_library_editor_plugin.h index ea13303740..fafbce9243 100644 --- a/editor/plugins/mesh_library_editor_plugin.h +++ b/editor/plugins/mesh_library_editor_plugin.h @@ -46,7 +46,6 @@ class MeshLibraryEditor : public Control { int to_erase; enum { - MENU_OPTION_ADD_ITEM, MENU_OPTION_REMOVE_ITEM, MENU_OPTION_UPDATE_FROM_SCENE, diff --git a/editor/plugins/multimesh_editor_plugin.h b/editor/plugins/multimesh_editor_plugin.h index d1f8a3b74a..6a80fd4d16 100644 --- a/editor/plugins/multimesh_editor_plugin.h +++ b/editor/plugins/multimesh_editor_plugin.h @@ -63,7 +63,6 @@ class MultiMeshEditor : public Control { SpinBox *populate_amount; enum Menu { - MENU_OPTION_POPULATE }; diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 28acb26012..fa7300c930 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -5013,6 +5013,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) { } } } + _finish_grid(); + _init_grid(); view_menu->get_popup()->set_item_checked(view_menu->get_popup()->get_item_index(p_option), grid_enabled); diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index 07f6d69d76..2e98fcad4c 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -180,7 +180,6 @@ class Node3DEditorViewport : public Control { friend class Node3DEditor; friend class ViewportRotationControl; enum { - VIEW_TOP, VIEW_BOTTOM, VIEW_LEFT, @@ -554,7 +553,6 @@ public: static const unsigned int VIEWPORTS_COUNT = 4; enum ToolMode { - TOOL_MODE_SELECT, TOOL_MODE_MOVE, TOOL_MODE_ROTATE, @@ -568,7 +566,6 @@ public: }; enum ToolOptions { - TOOL_OPT_LOCAL_COORDS, TOOL_OPT_USE_SNAP, TOOL_OPT_OVERRIDE_CAMERA, @@ -634,7 +631,6 @@ private: } gizmo; enum MenuOption { - MENU_TOOL_SELECT, MENU_TOOL_MOVE, MENU_TOOL_ROTATE, diff --git a/editor/plugins/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h index 6a7dffc7f8..8a420d7c8d 100644 --- a/editor/plugins/path_2d_editor_plugin.h +++ b/editor/plugins/path_2d_editor_plugin.h @@ -76,7 +76,6 @@ class Path2DEditor : public HBoxContainer { }; enum Action { - ACTION_NONE, ACTION_MOVING_POINT, ACTION_MOVING_IN, diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index 29db284b44..0063bec9de 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -372,7 +372,6 @@ void ShaderEditor::_bind_methods() { void ShaderEditor::ensure_select_current() { /* if (tab_container->get_child_count() && tab_container->get_current_tab()>=0) { - ShaderTextEditor *ste = Object::cast_to<ShaderTextEditor>(tab_container->get_child(tab_container->get_current_tab())); if (!ste) return; diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h index 904aed186a..e81a782ac8 100644 --- a/editor/plugins/shader_editor_plugin.h +++ b/editor/plugins/shader_editor_plugin.h @@ -69,7 +69,6 @@ class ShaderEditor : public PanelContainer { GDCLASS(ShaderEditor, PanelContainer); enum { - EDIT_UNDO, EDIT_REDO, EDIT_CUT, diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h index f57616db1f..848704e830 100644 --- a/editor/plugins/tile_map_editor_plugin.h +++ b/editor/plugins/tile_map_editor_plugin.h @@ -43,7 +43,6 @@ class TileMapEditor : public VBoxContainer { GDCLASS(TileMapEditor, VBoxContainer); enum Tool { - TOOL_NONE, TOOL_PAINTING, TOOL_ERASING, @@ -58,7 +57,6 @@ class TileMapEditor : public VBoxContainer { }; enum Options { - OPTION_COPY, OPTION_ERASE_SELECTION, OPTION_FIX_INVALID, diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index 9c589267fc..714f38bd56 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -500,6 +500,7 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tools[SHAPE_NEW_RECTANGLE]->set_button_group(tg); tools[SHAPE_NEW_RECTANGLE]->set_tooltip(TTR("Create a new rectangle.")); tools[SHAPE_NEW_RECTANGLE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SHAPE_NEW_RECTANGLE)); + tools[SHAPE_NEW_RECTANGLE]->set_shortcut(ED_SHORTCUT("tileset_editor/shape_new_rectangle", TTR("New Rectangle"), KEY_MASK_SHIFT | KEY_R)); tools[SHAPE_NEW_POLYGON] = memnew(Button); toolbar->add_child(tools[SHAPE_NEW_POLYGON]); @@ -508,6 +509,7 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tools[SHAPE_NEW_POLYGON]->set_button_group(tg); tools[SHAPE_NEW_POLYGON]->set_tooltip(TTR("Create a new polygon.")); tools[SHAPE_NEW_POLYGON]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SHAPE_NEW_POLYGON)); + tools[SHAPE_NEW_POLYGON]->set_shortcut(ED_SHORTCUT("tileset_editor/shape_new_polygon", TTR("New Polygon"), KEY_MASK_SHIFT | KEY_P)); separator_shape_toggle = memnew(VSeparator); toolbar->add_child(separator_shape_toggle); @@ -521,6 +523,7 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tools[SHAPE_DELETE] = memnew(Button); tools[SHAPE_DELETE]->set_flat(true); tools[SHAPE_DELETE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SHAPE_DELETE)); + tools[SHAPE_DELETE]->set_shortcut(ED_SHORTCUT("tileset_editor/shape_delete", TTR("Delete Selected Shape"), KEY_MASK_SHIFT | KEY_BACKSPACE)); toolbar->add_child(tools[SHAPE_DELETE]); spin_priority = memnew(SpinBox); diff --git a/editor/plugins/version_control_editor_plugin.h b/editor/plugins/version_control_editor_plugin.h index 248a1435fd..34643e85e4 100644 --- a/editor/plugins/version_control_editor_plugin.h +++ b/editor/plugins/version_control_editor_plugin.h @@ -43,7 +43,6 @@ class VersionControlEditorPlugin : public EditorPlugin { public: enum ChangeType { - CHANGE_TYPE_NEW = 0, CHANGE_TYPE_MODIFIED = 1, CHANGE_TYPE_RENAMED = 2, diff --git a/editor/project_export.cpp b/editor/project_export.cpp index e8c2b1f954..75509c7544 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -721,14 +721,19 @@ void ProjectExportDialog::_fill_resource_tree() { } bool ProjectExportDialog::_fill_tree(EditorFileSystemDirectory *p_dir, TreeItem *p_item, Ref<EditorExportPreset> ¤t, bool p_only_scenes) { + p_item->set_cell_mode(0, TreeItem::CELL_MODE_CHECK); p_item->set_icon(0, presets->get_theme_icon("folder", "FileDialog")); p_item->set_text(0, p_dir->get_name() + "/"); + p_item->set_editable(0, true); + p_item->set_metadata(0, p_dir->get_path()); bool used = false; + bool checked = true; for (int i = 0; i < p_dir->get_subdir_count(); i++) { TreeItem *subdir = include_files->create_item(p_item); if (_fill_tree(p_dir->get_subdir(i), subdir, current, p_only_scenes)) { used = true; + checked = checked && subdir->is_checked(0); } else { memdelete(subdir); } @@ -750,10 +755,12 @@ bool ProjectExportDialog::_fill_tree(EditorFileSystemDirectory *p_dir, TreeItem file->set_editable(0, true); file->set_checked(0, current->has_export_file(path)); file->set_metadata(0, path); + checked = checked && file->is_checked(0); used = true; } + p_item->set_checked(0, checked); return used; } @@ -775,13 +782,53 @@ void ProjectExportDialog::_tree_changed() { String path = item->get_metadata(0); bool added = item->is_checked(0); - if (added) { - current->add_export_file(path); + if (path.ends_with("/")) { + _check_dir_recursive(item, added); } else { - current->remove_export_file(path); + if (added) { + current->add_export_file(path); + } else { + current->remove_export_file(path); + } + } + _refresh_parent_checks(item); // Makes parent folder checked if all files/folders are checked. +} + +void ProjectExportDialog::_check_dir_recursive(TreeItem *p_dir, bool p_checked) { + for (TreeItem *child = p_dir->get_children(); child; child = child->get_next()) { + String path = child->get_metadata(0); + + child->set_checked(0, p_checked); + if (path.ends_with("/")) { + _check_dir_recursive(child, p_checked); + } else { + if (p_checked) { + get_current_preset()->add_export_file(path); + } else { + get_current_preset()->remove_export_file(path); + } + } } } +void ProjectExportDialog::_refresh_parent_checks(TreeItem *p_item) { + TreeItem *parent = p_item->get_parent(); + if (!parent) { + return; + } + + bool checked = true; + for (TreeItem *child = parent->get_children(); child; child = child->get_next()) { + checked = checked && child->is_checked(0); + if (!checked) { + break; + } + } + parent->set_checked(0, checked); + + _refresh_parent_checks(parent); +} + void ProjectExportDialog::_export_pck_zip() { export_pck_zip->popup_file_dialog(); } diff --git a/editor/project_export.h b/editor/project_export.h index 026daac2ad..b8ca0dd9f2 100644 --- a/editor/project_export.h +++ b/editor/project_export.h @@ -123,6 +123,8 @@ private: void _fill_resource_tree(); bool _fill_tree(EditorFileSystemDirectory *p_dir, TreeItem *p_item, Ref<EditorExportPreset> ¤t, bool p_only_scenes); void _tree_changed(); + void _check_dir_recursive(TreeItem *p_dir, bool p_checked); + void _refresh_parent_checks(TreeItem *p_item); Variant get_drag_data_fw(const Point2 &p_point, Control *p_from); bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const; diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index e3c2ba83f2..f26d44d75a 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -61,6 +61,7 @@ class ProjectDialog : public ConfirmationDialog { GDCLASS(ProjectDialog, ConfirmationDialog); public: + bool is_folder_empty = true; enum Mode { MODE_NEW, MODE_IMPORT, @@ -218,7 +219,7 @@ private: // check if the specified install folder is empty, even though this is not an error, it is good to check here d->list_dir_begin(); - bool is_empty = true; + is_folder_empty = true; String n = d->get_next(); while (n != String()) { if (!n.begins_with(".")) { @@ -226,14 +227,14 @@ private: // and hidden files/folders to be present. // For instance, this lets users initialize a Git repository // and still be able to create a project in the directory afterwards. - is_empty = false; + is_folder_empty = false; break; } n = d->get_next(); } d->list_dir_end(); - if (!is_empty) { + if (!is_folder_empty) { set_message(TTR("Please choose an empty folder."), MESSAGE_WARNING, INSTALL_PATH); memdelete(d); get_ok()->set_disabled(true); @@ -258,7 +259,7 @@ private: } else { // check if the specified folder is empty, even though this is not an error, it is good to check here d->list_dir_begin(); - bool is_empty = true; + is_folder_empty = true; String n = d->get_next(); while (n != String()) { if (!n.begins_with(".")) { @@ -266,18 +267,18 @@ private: // and hidden files/folders to be present. // For instance, this lets users initialize a Git repository // and still be able to create a project in the directory afterwards. - is_empty = false; + is_folder_empty = false; break; } n = d->get_next(); } d->list_dir_end(); - if (!is_empty) { - set_message(TTR("Please choose an empty folder."), MESSAGE_ERROR); + if (!is_folder_empty) { + set_message(TTR("The selected path is not empty. Choosing an empty folder is highly recommended."), MESSAGE_WARNING); memdelete(d); - get_ok()->set_disabled(true); - return ""; + get_ok()->set_disabled(false); + return valid_path; } } @@ -416,6 +417,11 @@ private: } } + void _nonempty_confirmation_ok_pressed() { + is_folder_empty = true; + ok_pressed(); + } + void ok_pressed() override { String dir = project_path->get_text(); @@ -454,6 +460,18 @@ private: } else { if (mode == MODE_NEW) { + // Before we create a project, check that the target folder is empty. + // If not, we need to ask the user if they're sure they want to do this. + if (!is_folder_empty) { + ConfirmationDialog *cd = memnew(ConfirmationDialog); + cd->set_title(TTR("Warning: This folder is not empty")); + cd->set_text(TTR("You are about to create a Godot project in a non-empty folder.\nThe entire contents of this folder will be imported as project resources!\n\nAre you sure you wish to continue?")); + cd->get_ok()->connect("pressed", callable_mp(this, &ProjectDialog::_nonempty_confirmation_ok_pressed)); + get_parent()->add_child(cd); + cd->popup_centered(); + cd->grab_focus(); + return; + } ProjectSettings::CustomMap initial_settings; if (rasterizer_button_group->get_pressed_button()->get_meta("driver_name") == "Vulkan") { initial_settings["rendering/quality/driver/driver_name"] = "Vulkan"; @@ -2087,7 +2105,7 @@ void ProjectManager::_run_project_confirm() { if (selected_main == "") { run_error_diag->set_text(TTR("Can't run project: no main scene defined.\nPlease edit the project and set the main scene in the Project Settings under the \"Application\" category.")); run_error_diag->popup_centered(); - return; + continue; } const String &selected = selected_list[i].project_key; @@ -2097,7 +2115,7 @@ void ProjectManager::_run_project_confirm() { if (!DirAccess::exists(path.plus_file(ProjectSettings::IMPORTED_FILES_PATH.right(6)))) { run_error_diag->set_text(TTR("Can't run project: Assets need to be imported.\nPlease edit the project to trigger the initial import.")); run_error_diag->popup_centered(); - return; + continue; } print_line("Running project: " + path + " (" + selected + ")"); @@ -2348,12 +2366,24 @@ ProjectManager::ProjectManager() { switch (display_scale) { case 0: { - // Try applying a suitable display scale automatically + // Try applying a suitable display scale automatically. #ifdef OSX_ENABLED editor_set_scale(DisplayServer::get_singleton()->screen_get_max_scale()); #else const int screen = DisplayServer::get_singleton()->window_get_current_screen(); - editor_set_scale(DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).x > 2000 ? 2.0 : 1.0); + float scale; + if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) { + // hiDPI display. + scale = 2.0; + } else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) { + // Small loDPI display. Use a smaller display scale so that editor elements fit more easily. + // Icons won't look great, but this is better than having editor elements overflow from its window. + scale = 0.75; + } else { + scale = 1.0; + } + + editor_set_scale(scale); #endif } break; @@ -2375,9 +2405,9 @@ ProjectManager::ProjectManager() { case 6: editor_set_scale(2.0); break; - default: { + default: editor_set_scale(EditorSettings::get_singleton()->get("interface/editor/custom_display_scale")); - } break; + break; } // Define a minimum window size to prevent UI elements from overlapping or being cut off diff --git a/editor/project_manager.h b/editor/project_manager.h index 407dba0c94..212d693f1d 100644 --- a/editor/project_manager.h +++ b/editor/project_manager.h @@ -98,6 +98,7 @@ class ProjectManager : public Control { void _restart_confirm(); void _exit_dialog(); void _confirm_update_settings(); + void _nonempty_confirmation_ok_pressed(); void _load_recent_projects(); void _on_project_created(const String &dir); diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 038b18a648..ec225c3c38 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -1348,8 +1348,8 @@ void SceneTreeDock::perform_node_renames(Node *p_base, List<Pair<NodePath, NodeP break; } - // update if the node itself moved up/down the tree hirarchy - if (root_path == F->get().first) { + // update the node itself if it has a valid node path and has not been deleted + if (root_path == F->get().first && p != NodePath() && F->get().second != NodePath()) { NodePath abs_path = NodePath(String(root_path).plus_file(p)).simplified(); NodePath rel_path_new = F->get().second.rel_path_to(abs_path); @@ -2824,8 +2824,8 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel HBoxContainer *filter_hbc = memnew(HBoxContainer); filter_hbc->add_theme_constant_override("separate", 0); - ED_SHORTCUT("scene_tree/rename", TTR("Rename")); - ED_SHORTCUT("scene_tree/batch_rename", TTR("Batch Rename"), KEY_MASK_CMD | KEY_F2); + ED_SHORTCUT("scene_tree/rename", TTR("Rename"), KEY_F2); + ED_SHORTCUT("scene_tree/batch_rename", TTR("Batch Rename"), KEY_MASK_SHIFT | KEY_F2); ED_SHORTCUT("scene_tree/add_child_node", TTR("Add Child Node"), KEY_MASK_CMD | KEY_A); ED_SHORTCUT("scene_tree/instance_scene", TTR("Instance Child Scene")); ED_SHORTCUT("scene_tree/expand_collapse_all", TTR("Expand/Collapse All")); diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h index c2c877bf68..119a499d0f 100644 --- a/editor/scene_tree_dock.h +++ b/editor/scene_tree_dock.h @@ -55,7 +55,6 @@ class SceneTreeDock : public VBoxContainer { GDCLASS(SceneTreeDock, VBoxContainer); enum Tool { - TOOL_NEW, TOOL_INSTANCE, TOOL_EXPAND_COLLAPSE, diff --git a/editor/translations/af.po b/editor/translations/af.po index 55009e16ae..08b8a7cc53 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -1074,14 +1074,18 @@ msgstr "Eienaars van:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Verwyder geselekteerde lêers uit die projek? (geen ontdoen)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Die lêers wat verwyder word, word vereis deur ander hulpbronne sodat hulle " "reg kan werk.\n" @@ -2389,11 +2393,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2401,7 +2410,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3776,6 +3785,11 @@ msgstr "" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Skuif AutoLaai" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Stoor Hulpbron As..." @@ -12070,6 +12084,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12115,6 +12137,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 346ebd62e0..24356c9a1c 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -45,12 +45,13 @@ # ChemicalInk <aladdinalkhafaji@gmail.com>, 2020. # Musab Alasaifer <mousablasefer@gmail.com>, 2020. # Yassine Oudjana <y.oudjana@protonmail.com>, 2020. +# bruvzg <bruvzg13@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-12 00:46+0000\n" -"Last-Translator: Yassine Oudjana <y.oudjana@protonmail.com>\n" +"PO-Revision-Date: 2020-11-08 10:26+0000\n" +"Last-Translator: bruvzg <bruvzg13@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -59,7 +60,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.3-dev\n" +"X-Generator: Weblate 4.3.2\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -78,7 +79,7 @@ msgstr "لا يوجد ما يكÙÙŠ من البايتات من أجل ÙÙƒ Ø§Ù„Ø #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "مدخلات خاطئة i% (لم يتم تمريره) ÙÙŠ التعبير" +msgstr "مدخلات خاطئة %i (لم يتم تمريره) ÙÙŠ التعبير" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -86,7 +87,7 @@ msgstr "لا يمكن إستخدامه Ù†Ùسه لأن الØالة Ùارغة ( #: 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" @@ -1063,14 +1064,19 @@ msgid "Owners Of:" msgstr "ملاك:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Ø¥Ù…Ø³Ø Ø§Ù„Ù…Ù„Ùات المختارة من المشروع؟ (لا يمكن استعادتها)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "المل٠الذي ÙŠÙÙ…Ø³Ø Ù…Ø·Ù„ÙˆØ¨ من موارد أخري لكل تعمل جيداً.\n" "Ø¥Ù…Ø³Ø Ø¹Ù„ÙŠ أية Øال؟ (لا رجعة)" @@ -1398,7 +1404,7 @@ msgstr "Ø¥ÙØªØ Ù†Ø³Ù‚ مسار الصوت" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." -msgstr "لا يوجد مل٠'s%'." +msgstr "لا يوجد مل٠'%s'." #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" @@ -1410,7 +1416,7 @@ msgstr "مل٠خطأ، ليس مل٠نسق مسار الصوت." #: editor/editor_audio_buses.cpp msgid "Error saving file: %s" -msgstr "خطأ ÙÙŠ تØميل الملÙ: s%" +msgstr "خطأ ÙÙŠ تØميل الملÙ: %s" #: editor/editor_audio_buses.cpp msgid "Add Bus" @@ -2057,8 +2063,8 @@ msgid "" "There is currently no description for this property. Please help us by " "[color=$color][url=$url]contributing one[/url][/color]!" msgstr "" -"لا يوجد Øاليا وص٠لهذه الخاصية. الرجاء المساعدة من خلال [url][/color/] " -"المساهمة واØد [color=$color][url=$url]!" +"لا يوجد Øاليا وص٠لهذه الخاصية. الرجاء المساعدة من خلال [color=$color][url=" +"$url]المساهمة واØد [/url][/color]!" #: editor/editor_help.cpp msgid "Method Descriptions" @@ -2268,7 +2274,7 @@ msgstr "خطأ خلال تØميل '%s'." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "نهاية مل٠غير مرتقبة 's%'." +msgstr "نهاية مل٠غير مرتقبة '%s'." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." @@ -2329,19 +2335,25 @@ msgid "Error saving TileSet!" msgstr "خطأ ÙÙŠ ØÙظ مجموعة البلاط!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "خطآ ÙÙŠ Ù…Øاولة ØÙظ النسق!" +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." -msgstr "تخطي نسق المÙØرر الإÙتراضي." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "إسترجاع النسق الإÙتراضي إلي الإعدادات الأساسية." #: editor/editor_node.cpp @@ -3769,6 +3781,11 @@ msgid "Move To..." msgstr "تØريك إلي..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "نقل التØميل التلقائي" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "مشهد جديد..." @@ -4737,7 +4754,7 @@ msgstr "عÙقد البداية والنهاية مطلوبة لأجل Ø§Ù„Ø§Ù†Ø #: editor/plugins/animation_state_machine_editor.cpp msgid "No playback resource set at path: %s." -msgstr "لم يتم تعيين موارد التشغيل ÙÙŠ المسار:Ùª s." +msgstr "لم يتم تعيين موارد التشغيل ÙÙŠ المسار: %s." #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Removed" @@ -12056,6 +12073,14 @@ msgstr "" "مسار Øزمة تطوير Android SDK للبÙنى المخصوصة، غير ØµØ§Ù„Ø ÙÙŠ إعدادات المÙØرر." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12109,6 +12134,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12934,6 +12975,12 @@ msgstr "يمكن تعيين المتغيرات Ùقط ÙÙŠ الذروة ." msgid "Constants cannot be modified." msgstr "لا يمكن تعديل الثوابت." +#~ msgid "Error trying to save layout!" +#~ msgstr "خطآ ÙÙŠ Ù…Øاولة ØÙظ النسق!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "تخطي نسق المÙØرر الإÙتراضي." + #~ msgid "Move pivot" #~ msgstr "نقل المØور" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index afb48710bc..537a5fd7d3 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -11,12 +11,13 @@ # Whod <whodizhod@gmail.com>, 2020. # Stoyan <stoyan.stoyanov99@protonmail.com>, 2020. # zooid <the.zooid@gmail.com>, 2020. +# Любомир ВаÑилев <lyubomirv@gmx.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-27 18:26+0000\n" -"Last-Translator: zooid <the.zooid@gmail.com>\n" +"PO-Revision-Date: 2020-11-08 10:26+0000\n" +"Last-Translator: Любомир ВаÑилев <lyubomirv@gmx.com>\n" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/" "godot/bg/>\n" "Language: bg\n" @@ -24,7 +25,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.3.2-dev\n" +"X-Generator: Weblate 4.3.2\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1014,7 +1015,10 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Да Ñе премахнат ли избраните файлове от проекта? (ДейÑтвието е необратимо)" @@ -1022,7 +1026,8 @@ msgstr "" msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2248,11 +2253,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2260,7 +2270,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3603,6 +3613,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "ПремеÑтване на кадъра" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Ðова Ñцена..." @@ -4485,9 +4500,8 @@ msgid "Include Gizmos (3D)" msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Pin AnimationPlayer" -msgstr "Изтриване на анимациÑта?" +msgstr "Закачане на AnimationPlayer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -4558,9 +4572,8 @@ msgid "Start and end nodes are needed for a sub-transition." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "No playback resource set at path: %s." -msgstr "Обектът не е базиран на реÑурÑен файл" +msgstr "ÐÑма реÑурÑ, който може да бъде изпълнен, на пътÑ: %s." #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Removed" @@ -4611,9 +4624,8 @@ msgstr "Режим на възпроизвеждане:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp -#, fuzzy msgid "AnimationTree" -msgstr "Изтриване на анимациÑта?" +msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" @@ -4916,9 +4928,8 @@ msgid "No results for \"%s\"." msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Повторно внаÑÑне..." +msgstr "ВнаÑÑне…" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Plugins..." @@ -5153,24 +5164,20 @@ msgid "Center" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Left Wide" -msgstr "Изглед ОтлÑво." +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Top Wide" -msgstr "Изглед Отгоре." +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Right Wide" -msgstr "Изглед ОтдÑÑно." +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Bottom Wide" -msgstr "Изглед Отдолу." +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "VCenter Wide" @@ -5478,9 +5485,8 @@ msgid "Center Selection" msgstr "Центриране върху избраното" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Frame Selection" -msgstr "Покажи СелекциÑта (вмеÑти в Ñ†ÐµÐ»Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†)" +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" @@ -5515,9 +5521,8 @@ msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Animation Key and Pose Options" -msgstr "Промени Името на ÐнимациÑта:" +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5540,9 +5545,8 @@ msgid "Divide grid step by 2" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Pan View" -msgstr "Изглед Отзад." +msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -5637,9 +5641,8 @@ msgstr "" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Directed Border Pixels" -msgstr "Папки и файлове:" +msgstr "" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5711,9 +5714,8 @@ msgid "Left Linear" msgstr "Линейно" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right Linear" -msgstr "Изглед ОтдÑÑно." +msgstr "" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Preset" @@ -5789,9 +5791,8 @@ msgid "Couldn't create a single convex collision shape." msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Single Convex Shape" -msgstr "Създай нови възли." +msgstr "Създаване на единична изпъкнала форма" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Can't create multiple convex collision shapes for the scene root." @@ -5802,9 +5803,8 @@ msgid "Couldn't create any collision shapes." msgstr "Ðе могат да бъдат Ñъздадени никакви форми за колизии." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Multiple Convex Shapes" -msgstr "Създай нови възли." +msgstr "Създаване на нÑколко изпъкнали форми" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" @@ -7087,9 +7087,8 @@ msgid "Scaling: " msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Translating: " -msgstr "ДобавÑне на превод" +msgstr "ТранÑлиране: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." @@ -7180,14 +7179,12 @@ msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Transform with View" -msgstr "Изглед ОтдÑÑно." +msgstr "ПодравнÑване на транÑформациÑта Ñ Ð¸Ð·Ð³Ð»ÐµÐ´Ð°" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Rotation with View" -msgstr "Изглед ОтдÑÑно." +msgstr "ПодравнÑване на ротациÑта Ñ Ð¸Ð·Ð³Ð»ÐµÐ´Ð°" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -7433,9 +7430,8 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "ÐаÑтройки" +msgstr "ÐаÑтройки…" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7502,9 +7498,8 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "Създайте нов/а %s" +msgstr "Създаване на Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy @@ -8073,9 +8068,8 @@ msgid "Region" msgstr "Режим на Завъртане" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Collision" -msgstr "Промени ÑъщеÑтвуващ полигон:" +msgstr "КолизиÑ" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8093,9 +8087,8 @@ msgid "Bitmask" msgstr "Режим на Завъртане" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Priority" -msgstr "Режим на изнаÑÑне:" +msgstr "Приоритет" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8108,9 +8101,8 @@ msgid "Region Mode" msgstr "Режим на Завъртане" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Collision Mode" -msgstr "Промени ÑъщеÑтвуващ полигон:" +msgstr "Режим на колизии" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8128,9 +8120,8 @@ msgid "Bitmask Mode" msgstr "Режим на Завъртане" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Priority Mode" -msgstr "Режим на изнаÑÑне:" +msgstr "Режим на приоритет" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8147,9 +8138,8 @@ msgid "Copy bitmask." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste bitmask." -msgstr "ПоÑтавÑне на възелите" +msgstr "ПоÑтавÑне на битова маÑка." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8216,30 +8206,32 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "Изтрий избраните файлове?" +msgstr "Изтриване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Rect." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." -msgstr "Избиране на текущата папка" +msgstr "" +"Изберете редактираната в момента под-плочка.\n" +"Щракнете върху друга плочка, за да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete polygon." -msgstr "Изтриване на анимациÑта?" +msgstr "Изтриване на полигона." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy 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 "Избиране на текущата папка" +msgstr "" +"ЛÑв бутон: включване на бита.\n" +"ДеÑен бутон: изключване на бита.\n" +"Shift + лÑв бутон: включване на бита за замеÑтване.\n" +"Щракнете на друга плочка, за да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8255,11 +8247,12 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select sub-tile to change its z index.\n" "Click on another Tile to edit it." -msgstr "Избиране на текущата папка" +msgstr "" +"Изберете под-плочка, за да промените индекÑа Ñ Ð¿Ð¾ Z.\n" +"Щракнете на друга плочка, за да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8281,9 +8274,8 @@ msgid "Edit Tile Bitmask" msgstr "Промени Филтрите" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Промени ÑъщеÑтвуващ полигон:" +msgstr "Редактиране на полигона за колизии" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8291,9 +8283,8 @@ msgid "Edit Occlusion Polygon" msgstr "ПриÑтавки" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Промени ÑъщеÑтвуващ полигон:" +msgstr "Редактиране на полигона за навигациÑ" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8354,23 +8345,20 @@ msgid "Make Concave" msgstr "ПремеÑтване на Полигон" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Collision Polygon" -msgstr "Създаване на папка" +msgstr "Създаване на полигон за колизии" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" -msgstr "Създаване на папка" +msgstr "Създаване на полигон за прикриване" #: editor/plugins/tile_set_editor_plugin.cpp msgid "This property can't be changed." -msgstr "" +msgstr "Това ÑвойÑтво не може да бъде променено." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "TileSet" -msgstr "Файл:" +msgstr "Плочен набор" #: editor/plugins/version_control_editor_plugin.cpp msgid "No VCS addons are available." @@ -8410,9 +8398,8 @@ msgid "Staging area" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "Създай нови възли." +msgstr "ЗаÑичане на новите промени" #: editor/plugins/version_control_editor_plugin.cpp msgid "Changes" @@ -8476,14 +8463,12 @@ msgid "(GLES3 only)" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Любими:" +msgstr "ДобавÑне на изход" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar" -msgstr "Мащаб:" +msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy @@ -8499,27 +8484,24 @@ msgid "Sampler" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add input port" -msgstr "Любими:" +msgstr "ДобавÑне на входÑщ порт" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add output port" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port type" -msgstr "Промени Името на ÐнимациÑта:" +msgstr "ПромÑна на типа на входÑÑ‰Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Change output port type" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port name" -msgstr "Промени Името на ÐнимациÑта:" +msgstr "ПромÑна на името на входÑÑ‰Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Change output port name" @@ -9008,9 +8990,8 @@ msgid "Scalar constant." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "ИзнаÑÑне към платформа" +msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." @@ -9033,9 +9014,8 @@ msgid "2D texture uniform lookup with triplanar." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Създаване на папка" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° транÑформациÑ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9077,19 +9057,16 @@ msgid "Multiplies vector by transform." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Създаване на папка" +msgstr "КонÑтанта за транÑформациÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Създаване на папка" +msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "Отиди на Ред" +msgstr "Векторна функциÑ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector operator." @@ -10133,9 +10110,8 @@ msgid "Batch Rename" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Replace:" -msgstr "ЗамÑна: " +msgstr "ЗамÑна:" #: editor/rename_dialog.cpp msgid "Prefix:" @@ -10246,9 +10222,8 @@ msgid "Reset" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expression Error:" -msgstr "Използване на регулÑрни изрази" +msgstr "Грешка в регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð·:" #: editor/rename_dialog.cpp msgid "At character %s" @@ -10500,9 +10475,8 @@ msgid "Change Type" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Reparent to New Node" -msgstr "Създай нови възли." +msgstr "ПремеÑтване под нов възел" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10522,9 +10496,8 @@ msgid "Copy Node Path" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "МолÑ, потвърдете..." +msgstr "Изтриване (без потвърждение)" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10573,9 +10546,8 @@ msgid "Button Group" msgstr "Копче 7" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "(Connecting From)" -msgstr "Свързване..." +msgstr "(Свързване от)" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" @@ -10600,9 +10572,8 @@ msgid "" msgstr "" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Open Script:" -msgstr "Ðова Ñцена" +msgstr "ОтварÑне на Ñкрипт:" #: editor/scene_tree_editor.cpp msgid "" @@ -10659,9 +10630,8 @@ msgid "Path is not local." msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid base path." -msgstr "Име:" +msgstr "Ðеправилен базов път." #: editor/script_create_dialog.cpp #, fuzzy @@ -10682,9 +10652,8 @@ msgid "Wrong extension chosen." msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error loading template '%s'" -msgstr "Грешка при зареждането на шрифта." +msgstr "Грешка при зареждане на шаблона „%s“" #: editor/script_create_dialog.cpp #, fuzzy @@ -10692,9 +10661,8 @@ msgid "Error - Could not create script in filesystem." msgstr "ÐеуÑпешно Ñъздаване на папка." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error loading script from %s" -msgstr "Грешка при зареждането на шрифта." +msgstr "Грешка при зареждане на Ñкрипт от %s" #: editor/script_create_dialog.cpp msgid "Overrides" @@ -10714,9 +10682,8 @@ msgid "Open Script" msgstr "Ðова Ñцена" #: editor/script_create_dialog.cpp -#, fuzzy msgid "File exists, it will be reused." -msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?" +msgstr "Файлът ÑъщеÑтвува и ще бъде преизползван." #: editor/script_create_dialog.cpp msgid "Invalid path." @@ -10744,9 +10711,8 @@ msgid "Built-in script (into scene file)." msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will create a new script file." -msgstr "Създаване на нов Ñкрипт" +msgstr "Ще Ñъздаде нов Ñкиптов файл." #: editor/script_create_dialog.cpp msgid "Will load an existing script file." @@ -10769,14 +10735,12 @@ msgid "Class Name:" msgstr "КлаÑ:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Шаблони" +msgstr "Шаблон:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Ðова Ñцена" +msgstr "Вграден Ñкрипт:" #: editor/script_create_dialog.cpp #, fuzzy @@ -10784,33 +10748,28 @@ msgid "Attach Node Script" msgstr "Ðова Ñцена" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote " -msgstr "ЗатварÑне на вÑичко" +msgstr "Отдалечено " #: editor/script_editor_debugger.cpp msgid "Bytes:" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Warning:" -msgstr "ПредупреждениÑ:" +msgstr "Предупреждение:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Error:" -msgstr "Грешки:" +msgstr "Грешка:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error" -msgstr "Грешки" +msgstr "Грешка в C++" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error:" -msgstr "Грешки:" +msgstr "Грешка в C++:" #: editor/script_editor_debugger.cpp msgid "C++ Source" @@ -10833,9 +10792,8 @@ msgid "Errors" msgstr "Грешки" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Child process connected." -msgstr "Разкачи" +msgstr "ДъщерниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ðµ Ñвързан." #: editor/script_editor_debugger.cpp msgid "Copy Error" @@ -11395,14 +11353,12 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Input Port" -msgstr "Любими:" +msgstr "ДобавÑне на входÑщ порт" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Output Port" -msgstr "Любими:" +msgstr "ДобавÑне на изходÑщ порт" #: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." @@ -11654,9 +11610,8 @@ msgid "Add Nodes..." msgstr "Добави Възел..." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function..." -msgstr "Отиди на Ред" +msgstr "ДобавÑне на функциÑ…" #: modules/visual_script/visual_script_editor.cpp msgid "function_name" @@ -11692,9 +11647,8 @@ msgid "Refresh Graph" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Member" -msgstr "Файл:" +msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -11816,6 +11770,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11826,9 +11788,8 @@ msgid "Invalid public key for APK expansion." msgstr "" #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid package name:" -msgstr "невалидно име на Група." +msgstr "Ðеправилно име на пакет:" #: platform/android/export/export.cpp msgid "" @@ -11861,6 +11822,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -11939,28 +11916,24 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not write file:" -msgstr "ÐеуÑпешно Ñъздаване на папка." +msgstr "Файлът не може да бъде запиÑан:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not open template for export:" -msgstr "ÐеуÑпешно Ñъздаване на папка." +msgstr "Шаблонът не може да Ñе отвори за изнаÑÑне:" #: platform/javascript/export/export.cpp msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read custom HTML shell:" -msgstr "ÐеуÑпешно Ñъздаване на папка." +msgstr "Ðе може да Ñе прочете перÑонализирана HTML-обвивка:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read boot splash image file:" -msgstr "ÐеуÑпешно Ñъздаване на папка." +msgstr "Ðе може да Ñе прочете файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ при Ñтартиране:" #: platform/javascript/export/export.cpp #, fuzzy @@ -11968,19 +11941,16 @@ msgid "Using default boot splash image." msgstr "ÐеуÑпешно Ñъздаване на папка." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package short name." -msgstr "невалидно име на Група." +msgstr "Ðеправилно кратко име на пакет." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package unique name." -msgstr "невалидно име на Група." +msgstr "Ðеправилно уникално име на пакет." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package publisher display name." -msgstr "невалидно име на Група." +msgstr "Ðеправилно име за показване на Ð¸Ð·Ð´Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° пакет." #: platform/uwp/export/export.cpp msgid "Invalid product GUID." @@ -12075,13 +12045,12 @@ msgstr "" "форма." #: scene/2d/collision_shape_2d.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" -"За да работи CollisionShape2D, е нужно да му Ñе даде форма. МолÑ, Ñъздайте " -"му Shape2D реÑурÑ." +"За да работи CollisionShape2D, е необходимо да Ñе зададе форма. МолÑ, " +"Ñъздайте реÑÑƒÑ€Ñ Ñ Ñ„Ð¾Ñ€Ð¼Ð° за него!" #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12534,7 +12503,7 @@ msgstr "" #: scene/gui/tree.cpp msgid "(Other)" -msgstr "" +msgstr "(Други)" #: scene/main/scene_tree.cpp msgid "" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 9d0dc019e0..4e960d8d50 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -1094,14 +1094,18 @@ msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à¦°à§€à¦¸à¦®à§‚হ:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ পà§à¦°à¦•à¦²à§à¦ª হতে অপসারণ করবেন? (অফেরৎযোগà§à¦¯)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "যেসব ফাইল অপসারিত হচà§à¦›à§‡ তারা অনà§à¦¯à¦¾à¦¨à§à¦¯ রিসোরà§à¦¸ ফাইলের কারà§à¦¯à¦•à¦°à¦°à§à¦ªà§‡ কাজ করার জনà§à¦¯ " "দরকারি।\n" @@ -2452,19 +2456,25 @@ msgid "Error saving TileSet!" msgstr "TileSet সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "লেআউট/নকশা সংরকà§à¦·à¦£à§‡à¦° চেষà§à¦Ÿà¦¾à§Ÿ সমসà§à¦¯à¦¾ হয়েছে!" +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." -msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° সাধারণ লেআউট/নকশা পরিবরà§à¦¤à¦¿à¦¤ হয়েছে।" +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "সাধারণ লেআউট/নকশা আদি সেটিংসে পà§à¦°à¦¤à§à¦¯à¦¾à¦¬à¦°à§à¦¤à¦¿à¦¤ হয়েছে।" #: editor/editor_node.cpp @@ -4011,6 +4021,11 @@ msgstr "à¦à¦–ানে সরান..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Autoload সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করà§à¦¨" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "নতà§à¦¨ দৃশà§à¦¯" @@ -12855,6 +12870,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12900,6 +12923,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13652,6 +13691,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "লেআউট/নকশা সংরকà§à¦·à¦£à§‡à¦° চেষà§à¦Ÿà¦¾à§Ÿ সমসà§à¦¯à¦¾ হয়েছে!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° সাধারণ লেআউট/নকশা পরিবরà§à¦¤à¦¿à¦¤ হয়েছে।" + #, fuzzy #~ msgid "Move pivot" #~ msgstr "কেনà§à¦¦à§à¦° সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করà§à¦¨" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index e930c8ea22..f8a9c61806 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -1041,14 +1041,19 @@ msgid "Owners Of:" msgstr "Propietaris de:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Eliminar els fitxers seleccionats del projecte? (No es pot restaurar)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Els fitxers seleccionats són utilitzats per altres recursos.\n" "Voleu Eliminar-los de totes maneres? (No es pot desfer!)" @@ -2321,19 +2326,25 @@ msgid "Error saving TileSet!" msgstr "Error en desar el TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Error en desar els canvis!" +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." -msgstr "S'han sobreescrit els Ajustos Predeterminats de l'Editor." +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 "No s'ha trobat el nom del Disseny!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "S'ha restaurat la configuració predeterminada." #: editor/editor_node.cpp @@ -3797,6 +3808,11 @@ msgid "Move To..." msgstr "Mou cap a..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Mou l'AutoCà rrega" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nova Escena..." @@ -12422,6 +12438,14 @@ msgstr "" "la configuració de l'editor." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp #, fuzzy msgid "" "Android build template not installed in the project. Install it from the " @@ -12469,6 +12493,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13292,6 +13332,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Les constants no es poden modificar." +#~ msgid "Error trying to save layout!" +#~ msgstr "Error en desar els canvis!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "S'han sobreescrit els Ajustos Predeterminats de l'Editor." + #~ msgid "Move pivot" #~ msgstr "Moure pivot" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index f5eab2658e..dbe18d831b 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -22,12 +22,14 @@ # ZbynÄ›k <zbynek.fiala@gmail.com>, 2020. # Daniel KřÞ <Daniel.kriz@protonmail.com>, 2020. # VladimirBlazek <vblazek042@gmail.com>, 2020. +# kubajz22 <til.jakubesko@seznam.cz>, 2020. +# Václav Blažej <vaclavblazej@seznam.cz>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-12 00:46+0000\n" -"Last-Translator: VladimirBlazek <vblazek042@gmail.com>\n" +"PO-Revision-Date: 2020-11-17 11:07+0000\n" +"Last-Translator: Václav Blažej <vaclavblazej@seznam.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" @@ -35,7 +37,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -277,9 +279,8 @@ msgid "Interpolation Mode" msgstr "InterpolaÄnà režim" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" -msgstr "Režim ovinuté smyÄky (interpolace konce se zaÄátkem ve smyÄce)" +msgstr "Režim uzavÅ™ené smyÄky (Interpolace mezi koncem a zaÄátkem smyÄky)" #: editor/animation_track_editor.cpp msgid "Remove this track." @@ -291,11 +292,11 @@ msgstr "ÄŒas (s): " #: editor/animation_track_editor.cpp msgid "Toggle Track Enabled" -msgstr "PÅ™epÃnacà Stopa Povolena" +msgstr "PÅ™epÃnacà stopa povolena" #: editor/animation_track_editor.cpp msgid "Continuous" -msgstr "NepÅ™etržité" +msgstr "Spojité" #: editor/animation_track_editor.cpp msgid "Discrete" @@ -307,7 +308,7 @@ msgstr "SpouÅ¡Å¥" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "Zachytit" +msgstr "SnÃmat" #: editor/animation_track_editor.cpp msgid "Nearest" @@ -323,9 +324,8 @@ msgid "Cubic" msgstr "Kubická" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Clamp Loop Interp" -msgstr "Režim svorkové smyÄky" +msgstr "Interpolace smyÄky svorkou" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" @@ -398,7 +398,7 @@ msgstr "Animace: Vložit stopu a klÃÄ" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" -msgstr "Animace: vložit klÃÄ" +msgstr "Animace: Vložit klÃÄ" #: editor/animation_track_editor.cpp msgid "Change Animation Step" @@ -406,7 +406,7 @@ msgstr "ZmÄ›nit krok animace" #: editor/animation_track_editor.cpp msgid "Rearrange Tracks" -msgstr "PÅ™eskupit stopy" +msgstr "Upravit poÅ™adà stop" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." @@ -446,7 +446,7 @@ msgstr "PÅ™idat Bézierovu stopu" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "Cesta stopy nenà validnÃ, nelze vložit klÃÄ." +msgstr "Cesta stopy nenà validnÃ, tak nelze pÅ™idat klÃÄ." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" @@ -492,8 +492,8 @@ msgstr "Animace: zmÄ›nit měřÃtko klÃÄů" msgid "" "This option does not work for Bezier editing, as it's only a single track." msgstr "" -"Tato možnost nefunguje pro úpravy Beziérovy kÅ™ivky , protože se jedná pouze " -"o jednu stopu." +"Tato možnost nefunguje pro úpravy Beziérovy kÅ™ivky, protože se jedná pouze o " +"jednu stopu." #: editor/animation_track_editor.cpp msgid "" @@ -522,9 +522,9 @@ msgid "Warning: Editing imported animation" msgstr "UpozornÄ›nÃ: Upravuje se importovaná animace" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "Pro úpravu animacà vyberte ze stromu scény uzel AnimationPlayer." +msgstr "" +"Pro pÅ™idánà a úpravu animacà vyberte ze stromu scény uzel AnimationPlayer." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -757,7 +757,7 @@ msgstr "ZvÄ›tÅ¡it" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom Out" -msgstr "ZmÄ›nÅ¡it" +msgstr "ZmenÅ¡it" #: editor/code_editor.cpp msgid "Reset Zoom" @@ -797,7 +797,7 @@ msgstr "PÅ™ipojit ke skriptu:" #: editor/connections_dialog.cpp msgid "From Signal:" -msgstr "Z signálu:" +msgstr "Ze signálu:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." @@ -918,9 +918,8 @@ msgid "Signals" msgstr "Signály" #: editor/connections_dialog.cpp -#, fuzzy msgid "Filter signals" -msgstr "Filtrovat soubory..." +msgstr "Filtrovat signály" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -992,7 +991,7 @@ msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" -"Scéna '%s' se právÄ› upravuje.\n" +"Scéna \"%s\" se právÄ› upravuje.\n" "ZmÄ›ny se projevà po opÄ›tovném naÄtenÃ." #: editor/dependency_editor.cpp @@ -1000,7 +999,7 @@ msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" -"Zdroj '%s' se právÄ› použÃvá.\n" +"Zdroj \"%s\" se právÄ› použÃvá.\n" "ZmÄ›ny se projevà po opÄ›tovném naÄtenÃ." #: editor/dependency_editor.cpp @@ -1048,14 +1047,19 @@ msgid "Owners Of:" msgstr "VlastnÃci:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Odebrat vybrané soubory z projektu? (Nelze vrátit zpÄ›t)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Soubory ke smazánà potÅ™ebujà jiné zdroje ke své Äinnosti.\n" "PÅ™esto je chcete smazat? (nelze vrátit zpÄ›t)" @@ -1164,18 +1168,16 @@ msgid "Gold Sponsors" msgstr "Zlatà sponzoÅ™i" #: editor/editor_about.cpp -#, fuzzy msgid "Silver Sponsors" -msgstr "StÅ™Ãbrnà dárci" +msgstr "StÅ™Ãbrnà sponzoÅ™i" #: editor/editor_about.cpp -#, fuzzy msgid "Bronze Sponsors" -msgstr "Bronzovà dárci" +msgstr "Bronzovà sponzoÅ™i" #: editor/editor_about.cpp msgid "Mini Sponsors" -msgstr "Malà sponzoÅ™i" +msgstr "Mini sponzoÅ™i" #: editor/editor_about.cpp msgid "Gold Donors" @@ -1211,7 +1213,7 @@ msgstr "" "Godot Engine závisà na volnÄ› dostupných a open source knihovnách od tÅ™etÃch " "stran; vÅ¡echny jsou kompatibilnà s podmÃnkami jeho MIT licence. Následuje " "plný výÄet tÄ›chto komponent tÅ™etÃch stran s jejich pÅ™ÃsluÅ¡nými popisy " -"autorských práv a s licenÄnÃmi podmÃnkami." +"autorských práv a licenÄnÃmi podmÃnkami." #: editor/editor_about.cpp msgid "All Components" @@ -1276,39 +1278,39 @@ msgstr "PÅ™idat efekt" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" -msgstr "PÅ™ejmenovat Audio Bus" +msgstr "PÅ™ejmenovat zvukovou sbÄ›rnici" #: editor/editor_audio_buses.cpp msgid "Change Audio Bus Volume" -msgstr "ZmÄ›nit hlasitost Audio Busu" +msgstr "ZmÄ›nit hlasitost zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "Hraje pouze tento Audio Bus" +msgstr "PÅ™epnout režim sólo zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "Ztlumit tento Audio Bus" +msgstr "PÅ™epnout ztlumenà zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" -msgstr "" +msgstr "PÅ™epnout bypass efektů na zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" -msgstr "" +msgstr "Vybrat pÅ™enos zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "PÅ™idat Audio Bus efekt" +msgstr "PÅ™idat efekt zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" -msgstr "PÅ™esunout Bus efekt" +msgstr "PÅ™esunout efekt zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Delete Bus Effect" -msgstr "Smazat Bus efekt" +msgstr "Smazat efekt zvukové sbÄ›rnice" #: editor/editor_audio_buses.cpp msgid "Drag & drop to rearrange." @@ -1471,7 +1473,7 @@ msgstr "PÅ™ejmenovat AutoLoad" #: editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "" +msgstr "PÅ™epnout auto-naÄÃtánà globálnÃch promÄ›nných" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" @@ -1491,7 +1493,7 @@ msgstr "PÅ™eskupit Autoloady" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "Nelze pÅ™idat auto-naÄÃtánÃ:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1516,7 +1518,7 @@ msgstr "Název" #: editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "Singleton (jedináÄek)" +msgstr "Singleton" #: editor/editor_data.cpp editor/inspector_dock.cpp msgid "Paste Params" @@ -1578,7 +1580,7 @@ msgstr "Ukládám soubor:" #: editor/editor_export.cpp msgid "No export template found at the expected path:" -msgstr "Na oÄekávané cestÄ› nebyly nalezeny žádné exportnà šablony:" +msgstr "Na oÄekávané cestÄ› nebyly nalezeny žádné Å¡ablony exportu:" #: editor/editor_export.cpp msgid "Packing" @@ -1613,34 +1615,31 @@ msgstr "" "Enabled'." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"CÃlová platforma vyžaduje kompresi textur 'ETC' pro GLES2. Povolte 'Import " -"Etc' v nastavenÃch projektu." +"CÃlová platforma vyžaduje kompresi textur 'PVRTC' pro GLES2. Povolte 'Import " +"Pvrtc' v nastavenà projektu." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"CÃlová platforma vyžaduje kompresi textur 'ETC2' pro GLES3. Povolte 'Import " -"Etc 2' v nastavenÃch projektu." +"CÃlová platforma vyžaduje kompresi textur 'ETC2' nebo 'PVRTC' pro GLES3. " +"Povolte 'Import Etc 2' nebo 'Import Pvrtc' v nastavenà projektu." #: editor/editor_export.cpp -#, fuzzy 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 "" -"CÃlová platforma vyžaduje kompresi textur 'ETC' pro použità GLES2 jako " +"CÃlová platforma vyžaduje kompresi textur 'PVRTC' pro použità GLES2 jako " "zálohy.\n" -"Povolte 'Import Etc' v nastavenÃch projektu, nebo vypnÄ›te 'Driver Fallback " +"Povolte 'Import Pvrtc' v nastavenà projektu, nebo vypnÄ›te 'Driver Fallback " "Enabled'." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -1680,18 +1679,16 @@ msgid "Scene Tree Editing" msgstr "Úpravy stromu scény" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Node Dock" -msgstr "Uzel pÅ™esunut" +msgstr "Panel uzlů" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "FileSystem Dock" msgstr "Souborový systém" #: editor/editor_feature_profile.cpp msgid "Import Dock" -msgstr "Importovat dok" +msgstr "Importovat panel" #: editor/editor_feature_profile.cpp msgid "Erase profile '%s'? (no undo)" @@ -1772,11 +1769,11 @@ msgstr "Nový" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Importovat" +msgstr "Import" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" -msgstr "Exportovat" +msgstr "Export" #: editor/editor_feature_profile.cpp msgid "Available Profiles:" @@ -1795,9 +1792,8 @@ msgid "Erase Profile" msgstr "Smazat profil" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Godot Feature Profile" -msgstr "Spravovat exportnà šablony" +msgstr "Godot feature profil" #: editor/editor_feature_profile.cpp msgid "Import Profile(s)" @@ -1968,7 +1964,7 @@ msgstr "Je nutné použÃt platnou pÅ™Ãponu." #: editor/editor_file_system.cpp msgid "ScanSources" -msgstr "" +msgstr "Sken zdrojů" #: editor/editor_file_system.cpp msgid "" @@ -2066,7 +2062,7 @@ msgstr "" #: editor/editor_help_search.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp msgid "Search Help" -msgstr "Prohledat nápovÄ›du" +msgstr "Hledat v dokumentaci" #: editor/editor_help_search.cpp msgid "Case Sensitive" @@ -2105,9 +2101,8 @@ msgid "Theme Properties Only" msgstr "Pouze vlastnosti motivu" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "ÄŒlenové" +msgstr "Typ Älena" #: editor/editor_help_search.cpp msgid "Class" @@ -2161,7 +2156,7 @@ msgstr "KopÃrovat výbÄ›r" #: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Clear" -msgstr "VyÄistit" +msgstr "Promazat" #: editor/editor_log.cpp msgid "Clear Output" @@ -2291,6 +2286,8 @@ 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 "" +"Tato scéna nemůže být uložena, protože obsahuje cyklickou referenci.\n" +"Odstraňte ji, a poté zkuste uložit znovu." #: editor/editor_node.cpp msgid "" @@ -2321,19 +2318,25 @@ msgid "Error saving TileSet!" msgstr "Chyba pÅ™i ukládánà TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Chyba pÅ™i pokusu uložit rozloženÃ!" +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." -msgstr "Výchozà rozloženà editoru pÅ™epsáno." +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 "Jméno rozloženà nenalezeno!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Obnoveno výchozà rozloženà na základnà nastavenÃ." #: editor/editor_node.cpp @@ -2410,7 +2413,7 @@ msgstr "Rychle otevÅ™Ãt scénu..." #: editor/editor_node.cpp msgid "Quick Open Script..." -msgstr "Rychlé otevÅ™enà skriptu..." +msgstr "Rychle otevÅ™Ãt skript..." #: editor/editor_node.cpp msgid "Save & Close" @@ -2481,10 +2484,12 @@ msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"Tato scéna obsahuje neuložené zmÄ›ny.\n" +"PÅ™esto znovu naÄÃst? Tuto akci nelze vrátit zpÄ›t." #: editor/editor_node.cpp msgid "Quick Run Scene..." -msgstr "Rychlé spuÅ¡tÄ›nà scény..." +msgstr "Rychle spustit scénu..." #: editor/editor_node.cpp msgid "Quit" @@ -2604,8 +2609,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"Vybraná scéna '%s' neexistuje, vybrat platnou? \n" -"PozdÄ›ji to můžete zmÄ›nit v \"Nastavenà projektu\" v kategorii 'application'." +"Vybraná scéna '%s' neexistuje, vybrat platnou?\n" +"PozdÄ›ji to můžete zmÄ›nit v \"Nastavenà projektu\" v kategorii 'application'." #: editor/editor_node.cpp msgid "" @@ -2613,6 +2618,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" +"Vybraná scéna '%s' nenà platný soubor scény. Vybrat jinou?\n" +"Můžete ji pozdÄ›ji zmÄ›nit v \"Nastavenà projektu\" v kategorii \"aplikace\"." #: editor/editor_node.cpp msgid "Save Layout" @@ -2722,7 +2729,7 @@ msgstr "Nová scéna" #: editor/editor_node.cpp msgid "New Inherited Scene..." -msgstr "Nová odvozená scéna..." +msgstr "Nová zdÄ›dÄ›ná scéna..." #: editor/editor_node.cpp msgid "Open Scene..." @@ -2793,7 +2800,7 @@ msgstr "Exportovat..." #: editor/editor_node.cpp msgid "Install Android Build Template..." -msgstr "" +msgstr "Nainstalovat kompilaÄnà šablonu pro Android..." #: editor/editor_node.cpp msgid "Open Project Data Folder" @@ -2829,14 +2836,17 @@ msgid "" "mobile device).\n" "You don't need to enable it to use the GDScript debugger locally." msgstr "" +"Pokud je tato možnost povolena, použità one-click deploy způsobÃ, že se " +"aplikace pokusà pÅ™ipojit k IP tohoto poÄÃtaÄe, takže spuÅ¡tÄ›ný projekt může " +"být ladÄ›n.\n" +"Tato možnost je urÄena pro vzdálené ladÄ›nà (typicky s mobilnÃm zaÅ™ÃzenÃm).\n" +"NemusÃte ji povolovat abyste mohli použÃt lokálnà ladÄ›nà GDScriptu." #: editor/editor_node.cpp -#, fuzzy msgid "Small Deploy with Network Filesystem" -msgstr "Minimálnà nasazenà se sÃÅ¥ovým FS" +msgstr "Tenké nasazenà pomocà sÃÅ¥ového souborového sistému" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, using one-click deploy for Android will only " "export an executable without the project data.\n" @@ -2845,72 +2855,67 @@ msgid "" "On Android, deploying will use the USB cable for faster performance. This " "option speeds up testing for projects with large assets." msgstr "" -"Když je tato možnost povolena, export nebo nasazenà bude vytvářet minimálnà " -"spustitelný soubor.\n" -"Souborový systém bude poskytnut editorem projektu pÅ™es sÃt.\n" -"Pro nasazenà na Android bude použÃt USB kabel pro dosaženà vyÅ¡Å¡Ãho výkonu. " -"Tato možnost urychluje testovánà objemných her." +"Když je tato možnost vybrána, Android Quick Deployment exportuje pouze " +"spustitelný soubor bez dat projektu.\n" +"Souborový systém bude z projektu sdÃlen editorem po sÃti.\n" +"V systému Android bude nasazenà použÃvat kabel USB pro rychlejÅ¡Ã výkon. Tato " +"možnost výraznÄ› zrychluje testovánà velkých her." #: editor/editor_node.cpp msgid "Visible Collision Shapes" msgstr "Viditelné koliznà tvary" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, collision shapes and raycast nodes (for 2D and " "3D) will be visible in the running project." msgstr "" -"Koliznà tvary a raycast uzly (pro 2D a 3D) budou viditelné bÄ›hem hry, po " -"aktivaci této volby." +"když je povolena tato volba, tak lze bÄ›hem hry vidÄ›t koliznà tvary a raycast " +"uzly (pro 2D a 3D)." #: editor/editor_node.cpp msgid "Visible Navigation" msgstr "Viditelná navigace" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, navigation meshes and polygons will be visible " "in the running project." msgstr "" -"NavigaÄnà meshe a polygony budou viditelné bÄ›hem hry, po aktivaci této volby." +"když je povolena tato volba, tak lze bÄ›hem hry vidÄ›t navigaÄnà meshe a " +"polygony." #: editor/editor_node.cpp -#, fuzzy msgid "Synchronize Scene Changes" msgstr "Synchronizovat zmÄ›ny scény" #: editor/editor_node.cpp -#, fuzzy 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 "" -"Když je zapnuta tato možnost, vÅ¡echny zmÄ›ny provedené ve scénÄ› v editoru " -"budou replikovány v běžÃcà hÅ™e.\n" -"PÅ™i použità se vzdáleným spuÅ¡tÄ›nÃm je toto vÃce efektivnà pÅ™i použità " -"sÃÅ¥ového souborového systému." +"Je-li tato možnost vybrána, budou se vÅ¡echny zmÄ›ny fáze v editoru opakovat, " +"zatÃmco hra běžÃ.\n" +"PÅ™i vzdáleném použità na zaÅ™Ãzenà je tato možnost efektivnÄ›jÅ¡Ã, když je " +"povolen sÃÅ¥ový souborový systém." #: editor/editor_node.cpp -#, fuzzy msgid "Synchronize Script Changes" -msgstr "Synchornizace zmÄ›n skriptu" +msgstr "Synchornizovat zmÄ›ny skriptu" #: editor/editor_node.cpp -#, fuzzy 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 "" -"Když je zapnuta tato volba, jakýkoliv skript, který je uložen bude znovu " -"nahrán do spuÅ¡tÄ›né hry.\n" -"PÅ™i použità se vzdáleným spuÅ¡tÄ›nÃm je toto vÃce efektivnà pÅ™i použità " -"sÃÅ¥ového souborového systému." +"Pokud je tato možnost povolena, jakýkoli uložený skript se znovu naÄte, když " +"je hra spuÅ¡tÄ›na.\n" +"PÅ™i vzdáleném použità na zaÅ™Ãzenà je tato možnost efektivnÄ›jÅ¡Ã, když je " +"povolen sÃÅ¥ový souborový systém." #: editor/editor_node.cpp editor/script_create_dialog.cpp msgid "Editor" @@ -2929,18 +2934,16 @@ msgid "Take Screenshot" msgstr "VytvoÅ™it snÃmek obrazovky" #: editor/editor_node.cpp -#, fuzzy msgid "Screenshots are stored in the Editor Data/Settings Folder." -msgstr "OtevÅ™Ãt složku s daty a nastavenÃm editoru" +msgstr "Screenshoty jsou uložené v Editor Data/Settings Folder." #: editor/editor_node.cpp msgid "Toggle Fullscreen" msgstr "PÅ™epnout celou obrazovku" #: editor/editor_node.cpp -#, fuzzy msgid "Toggle System Console" -msgstr "PÅ™epnout režim rozdÄ›lenÃ" +msgstr "Zapnout/Vypnout systémovou konzoli" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" @@ -2955,13 +2958,12 @@ msgid "Open Editor Settings Folder" msgstr "OtevÅ™Ãt složku s nastavenÃm editoru" #: editor/editor_node.cpp -#, fuzzy msgid "Manage Editor Features..." -msgstr "Spravovat exportnà šablony" +msgstr "Spravovat funkce editoru..." #: editor/editor_node.cpp msgid "Manage Export Templates..." -msgstr "Spravovat exportnà šablony..." +msgstr "Spravovat Å¡ablony exportu..." #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" @@ -2990,7 +2992,7 @@ msgstr "Nahlásit chybu" #: editor/editor_node.cpp msgid "Send Docs Feedback" -msgstr "" +msgstr "Odeslat zpÄ›tnou vazbu dokumentace" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -3010,7 +3012,7 @@ msgstr "Hrát" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." -msgstr "" +msgstr "Pozastavit bÄ›h scény pro ladÄ›nÃ." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3071,7 +3073,7 @@ msgstr "Inspektor" #: editor/editor_node.cpp msgid "Expand Bottom Panel" -msgstr "" +msgstr "RozÅ¡ÃÅ™it spodnà panel" #: editor/editor_node.cpp msgid "Output" @@ -3084,6 +3086,7 @@ msgstr "Neukládat" #: editor/editor_node.cpp msgid "Android build template is missing, please install relevant templates." msgstr "" +"Chybà kompilaÄnà šablona pro Android, prosÃm nainstalujte vhodnou Å¡ablonu." #: editor/editor_node.cpp msgid "Manage Templates" @@ -3099,6 +3102,13 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" +"Tato možnost pÅ™ipravà váš projekt na vaÅ¡e vlastnà sestavenà pro Android " +"instalacà zdrojové Å¡ablony v \"res://android/build\".\n" +"Poté můžete pÅ™i exportu pÅ™idat úpravy a vytvoÅ™it si vlastnà soubor APK " +"(pÅ™idánà modulů, zmÄ›na souboru AndroidManifest.xml, atd.)\n" +"Upozorňujeme, že pokud chcete vytvoÅ™it vlastnà sestavenà namÃsto použità " +"pÅ™ipraveného souboru APK, mÄ›la by být v exportnÃm profilu Androidu povolena " +"možnost \"PoužÃt vlastnà sestavenÃ\"." #: editor/editor_node.cpp msgid "" @@ -3107,6 +3117,9 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" +"KompilaÄnà šablona pro Android je pro tento projekt již nainstalovaná a " +"nebude pÅ™epsána.\n" +"Odstraňte složku \"res://android/build\" pÅ™ed dalÅ¡Ãm pokusem o tuto operaci." #: editor/editor_node.cpp msgid "Import Templates From ZIP File" @@ -3174,7 +3187,7 @@ msgstr "Nebyly nalezeny žádné dÃlÄà zdroje." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" -msgstr "" +msgstr "Vytvářenà náhledu modelu" #: editor/editor_plugin.cpp msgid "Thumbnail..." @@ -3239,7 +3252,7 @@ msgstr "InkluzivnÃ" #: editor/editor_profiler.cpp msgid "Self" -msgstr "" +msgstr "Tento objekt" #: editor/editor_profiler.cpp msgid "Frame #:" @@ -3259,7 +3272,7 @@ msgstr "Editovat text:" #: editor/editor_properties.cpp editor/script_create_dialog.cpp msgid "On" -msgstr "" +msgstr "Zapnout" #: editor/editor_properties.cpp msgid "Layer" @@ -3304,6 +3317,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"Na tomto zdroji nelze vytvoÅ™it ViewportTexture, protože nenà pro scénu " +"lokálnÃ.\n" +"Upravte jeho vlastnost \"lokálnà pro scénu\" (a vÅ¡echny zdroje, které jej " +"obsahujÃ, až po uzel)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -3314,9 +3331,8 @@ msgid "New Script" msgstr "Nový skript" #: editor/editor_properties.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "OtevÅ™Ãt skript" +msgstr "RozÅ¡ÃÅ™it skript" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New %s" @@ -3374,7 +3390,6 @@ msgid "Add Key/Value Pair" msgstr "Vložte pár klÃÄ/hodnota" #: editor/editor_run_native.cpp -#, fuzzy msgid "" "No runnable export preset found for this platform.\n" "Please add a runnable preset in the Export menu or define an existing preset " @@ -3382,7 +3397,8 @@ msgid "" msgstr "" "Nebylo nalezeno žádné spustilené pÅ™ednastavenà pro exportovánà na tuto " "platformu.\n" -"PÅ™idejte prosÃm spustitelné pÅ™ednastavenà v exportovacÃm menu." +"PÅ™idejte prosÃm spustitelné pÅ™ednastavenà v exportovacÃm menu nebo definujte " +"existujÃcà pÅ™ednastavenà jako spustitelné." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3409,16 +3425,14 @@ msgid "Did you forget the '_run' method?" msgstr "NezapomÄ›l jste metodu '_run'?" #: editor/editor_spin_slider.cpp -#, fuzzy msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." msgstr "" -"Podržte Ctrl k uvolnÄ›nà getteru. Podržte Shift k uvolnÄ›nà generického " -"podpisu." +"Podržte Ctrl pro zaokrouhlenà na celá ÄÃsla. Podržte Shift pro pÅ™esnÄ›jÅ¡Ã " +"úpravy." #: editor/editor_sub_scene.cpp -#, fuzzy msgid "Select Node(s) to Import" -msgstr "Vyberte uzly (Node) pro import" +msgstr "Vyberte uzly pro import" #: editor/editor_sub_scene.cpp editor/project_manager.cpp msgid "Browse" @@ -3451,7 +3465,7 @@ msgstr "Stáhnout" #: editor/export_template_manager.cpp msgid "Official export templates aren't available for development builds." -msgstr "" +msgstr "Oficiálnà šablony exportu nejsou k dispozici pro vývojová sestavenÃ." #: editor/export_template_manager.cpp msgid "(Missing)" @@ -3499,7 +3513,7 @@ msgstr "Chyba pÅ™i zÃskávánà seznamu zrcadel." #: editor/export_template_manager.cpp msgid "Error parsing JSON of mirror list. Please report this issue!" -msgstr "" +msgstr "Chyba parsovánà JSON mirror list. ProsÃm nahlaste tuto chybu!" #: editor/export_template_manager.cpp msgid "" @@ -3604,9 +3618,8 @@ msgid "SSL Handshake Error" msgstr "Selhánà SSL handshaku" #: editor/export_template_manager.cpp -#, fuzzy msgid "Uncompressing Android Build Sources" -msgstr "Dekomprese uživatelského obsahu" +msgstr "Dekomprese zdrojů sestavenà pro Android" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3630,7 +3643,7 @@ msgstr "Vybrat soubor Å¡ablony" #: editor/export_template_manager.cpp msgid "Godot Export Templates" -msgstr "Exportnà šablony Godotu" +msgstr "Å ablony exportu Godotu" #: editor/export_template_manager.cpp msgid "Export Template Manager" @@ -3708,7 +3721,7 @@ msgstr "Duplikace složky:" #: editor/filesystem_dock.cpp msgid "New Inherited Scene" -msgstr "Nová odvozená scéna" +msgstr "Nová zdÄ›dÄ›ná scéna" #: editor/filesystem_dock.cpp msgid "Set As Main Scene" @@ -3720,7 +3733,7 @@ msgstr "OtevÅ™Ãt scény" #: editor/filesystem_dock.cpp msgid "Instance" -msgstr "Instance:" +msgstr "Instance" #: editor/filesystem_dock.cpp msgid "Add to Favorites" @@ -3751,6 +3764,11 @@ msgid "Move To..." msgstr "PÅ™esunout do..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "PÅ™emÃstit Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nová scéna..." @@ -3848,6 +3866,8 @@ msgid "" "Include the files with the following extensions. Add or remove them in " "ProjectSettings." msgstr "" +"Zahrnout soubory s následujÃcÃmi pÅ™Ãponami. PÅ™idejte nebo odeberte je v " +"Nastavenà projektu." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3911,7 +3931,6 @@ msgid "Groups" msgstr "Skupiny" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes Not in Group" msgstr "Uzly nejsou ve skupinÄ›" @@ -3926,7 +3945,7 @@ msgstr "Uzly jsou ve skupinÄ›" #: editor/groups_editor.cpp msgid "Empty groups will be automatically removed." -msgstr "" +msgstr "Prázdné skupiny budou automaticky odstranÄ›ny." #: editor/groups_editor.cpp msgid "Group Editor" @@ -3938,43 +3957,43 @@ msgstr "Spravovat skupiny" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" -msgstr "" +msgstr "Importovat jako jednu scénu" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Animations" -msgstr "" +msgstr "Importovat s oddÄ›lenými animacemi" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials" -msgstr "" +msgstr "Importovat s oddÄ›lenými materiály" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects" -msgstr "" +msgstr "Importujte s oddÄ›lenými objekty" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials" -msgstr "" +msgstr "Importujte s oddÄ›lenými objekty a materiály" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Animations" -msgstr "" +msgstr "Importujte s oddÄ›lenými objekty a animacemi" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" -msgstr "" +msgstr "Importujte s oddÄ›lenými materiály a animacemi" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "" +msgstr "Importujte s oddÄ›lenými objekty, materiály a animacemi" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" -msgstr "" +msgstr "Importovat jako vÃce scén" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes+Materials" -msgstr "" +msgstr "Importovat jako vÃce scén a materiálů" #: editor/import/resource_importer_scene.cpp #: editor/plugins/mesh_library_editor_plugin.cpp @@ -3987,18 +4006,17 @@ msgstr "Importuji scénu..." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" -msgstr "" +msgstr "Generovánà svÄ›telné mapy" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " -msgstr "" +msgstr "Generovánà pro sÃÅ¥: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script..." -msgstr "" +msgstr "SpouÅ¡tÃm skript..." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Couldn't load post-import script:" msgstr "NepodaÅ™ilo se naÄÃst post-import script:" @@ -4012,7 +4030,7 @@ msgstr "Chyba pÅ™i spuÅ¡tÄ›nà post-import scriptu:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "" +msgstr "Vrátili jste objekt, který dÄ›dà z Node metodou `post_import()`?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4035,9 +4053,8 @@ msgid "Import As:" msgstr "Importovat jako:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "PÅ™edvolby" +msgstr "Profil" #: editor/import_dock.cpp msgid "Reimport" @@ -4045,17 +4062,18 @@ msgstr "Znovu importovat" #: editor/import_dock.cpp msgid "Save Scenes, Re-Import, and Restart" -msgstr "" +msgstr "Uložit scény, znovu importovat a restartovat" #: editor/import_dock.cpp -#, fuzzy msgid "Changing the type of an imported file requires editor restart." -msgstr "ZmÄ›na grafického ovladaÄe vyžaduje restart editoru." +msgstr "ZmÄ›na typu importovaného souboru vyžaduje restart editoru." #: editor/import_dock.cpp msgid "" "WARNING: Assets exist that use this resource, they may stop loading properly." msgstr "" +"VAROVÃNÃ: Existujà zdroje, který tento zdroj použÃvajÃ. Může se stát, že se " +"pÅ™estanou správnÄ› naÄÃtat." #: editor/inspector_dock.cpp msgid "Failed to load resource." @@ -4079,9 +4097,8 @@ msgid "Copy Params" msgstr "KopÃrovat parametry" #: editor/inspector_dock.cpp -#, fuzzy msgid "Edit Resource Clipboard" -msgstr "Schránka zdroje je prázdná!" +msgstr "Editovat schránku zdrojů" #: editor/inspector_dock.cpp msgid "Copy Resource" @@ -4089,7 +4106,7 @@ msgstr "KopÃrovat zdroj" #: editor/inspector_dock.cpp msgid "Make Built-In" -msgstr "" +msgstr "VytvoÅ™it vestavÄ›ný" #: editor/inspector_dock.cpp msgid "Make Sub-Resources Unique" @@ -4137,7 +4154,7 @@ msgstr "ZmÄ›ny mohou být ztraceny!" #: editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "" +msgstr "MultiNode sada" #: editor/node_dock.cpp msgid "Select a single node to edit its signals and groups." @@ -4230,17 +4247,16 @@ msgstr "NaÄÃst..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Move Node Point" -msgstr "PÅ™esunout body" +msgstr "PÅ™esunout body uzlů" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Limits" -msgstr "" +msgstr "Upravit hranice BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Labels" -msgstr "" +msgstr "Upravit popisky BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4250,24 +4266,21 @@ msgstr "Tento typ uzlu nelze použÃt. Jsou povoleny pouze koÅ™enové uzly." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Node Point" -msgstr "PÅ™idat uzel" +msgstr "PÅ™idat bod uzlu" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Animation Point" -msgstr "PÅ™idat animaci" +msgstr "PÅ™idat bod animace" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Remove BlendSpace1D Point" -msgstr "Odstranit bod cesty" +msgstr "Odstranit bod BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" -msgstr "" +msgstr "PÅ™esunout bod uzlu BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4277,11 +4290,14 @@ msgid "" "AnimationTree is inactive.\n" "Activate to enable playback, check node warnings if activation fails." msgstr "" +"AnimationTree je neaktvinÃ.\n" +"Aktivujte ho, aby zaÄlo pÅ™ehrávánÃ. Pokud aktivace nefunguje, tak " +"zkontrolujte varovánà uzlu." #: 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 "" +msgstr "Nastavit blending pozici v prostoru" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4321,34 +4337,31 @@ msgstr "PÅ™idat trojúhelnÃk" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Limits" -msgstr "" +msgstr "Upravit hranice BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Labels" -msgstr "" +msgstr "Upravit popisky BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Point" -msgstr "Odstranit bod cesty" +msgstr "Odstranit bod BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Triangle" -msgstr "Odstranit promÄ›nnou" +msgstr "Odstranit BlendSpace2D trojúhelnÃk" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." -msgstr "" +msgstr "BlendSpace2D nepatřà k AnimationTree uzlu." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "No triangles exist, so no blending can take place." -msgstr "" +msgstr "Neexistujà žádné trojúhelnÃky, takže nemůže nastat žádný blending." #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Toggle Auto Triangles" -msgstr "Zobrazit oblÃbené" +msgstr "Zapnout/Vypnout automatické trojúhelnÃky" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." @@ -4360,7 +4373,7 @@ msgstr "Odstranit body a trojúhelnÃky." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Generate blend triangles automatically (instead of manually)" -msgstr "" +msgstr "Vygenerovat blend trojúhelnÃky automaticky (ne manuálnÄ›)" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -4378,7 +4391,7 @@ msgstr "Editovat filtry" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Output node can't be added to the blend tree." -msgstr "" +msgstr "Výstupnà uzly nemohou být pÅ™idané do blend stromu." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Add Node to BlendTree" @@ -4414,7 +4427,7 @@ msgstr "Smazat uzel" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" -msgstr "Odstranit uzel/uzly" +msgstr "Odstranit uzly" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" @@ -4426,11 +4439,11 @@ msgstr "ZmÄ›nit filtr" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "No animation player set, so unable to retrieve track names." -msgstr "" +msgstr "Nenà nastavený pÅ™ehrávaÄ animacÃ, takže nelze zÃskat jména stop." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Player path set is invalid, so unable to retrieve track names." -msgstr "" +msgstr "Cesta k pÅ™ehrávaÄi je nevalidnÃ, takže nelze zÃskat jména stop." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -4438,6 +4451,8 @@ msgid "" "Animation player has no valid root node path, so unable to retrieve track " "names." msgstr "" +"PÅ™ehrávaÄ animacà nemá validnà cestu ke koÅ™enovému uzlu, takže nelze zÃskat " +"jména stop." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Anim Clips" @@ -4511,7 +4526,7 @@ msgstr "PÅ™ejmenovat animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "" +msgstr "Upraveno prolnutà na dalÅ¡Ã" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" @@ -4570,9 +4585,8 @@ msgid "Animation position (in seconds)." msgstr "Pozice animace (v sekundách)." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Scale animation playback globally for the node." -msgstr "Å kálovat playback animace globálnÄ› pro uzel" +msgstr "Å kálovat playback animace globálnÄ› pro uzel." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" @@ -4595,18 +4609,16 @@ msgid "Display list of animations in player." msgstr "Zobrazit seznam animacà v pÅ™ehrávaÄi." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Autoplay on Load" -msgstr "Autoplay pÅ™i naÄtenÃ" +msgstr "Auto-pÅ™ehránà pÅ™i naÄtenÃ" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "" +msgstr "Povolit Onion Skinning" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Onion Skinning Options" -msgstr "Možnosti pÅ™ichytávánÃ" +msgstr "Onion Skinning možnosti" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -4642,16 +4654,15 @@ msgstr "Pouze rozdÃly" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "Vynutit bÃlou modulaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" -msgstr "" +msgstr "Zahrnout Gizmos (3D)" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Pin AnimationPlayer" -msgstr "Vložit animaci" +msgstr "PÅ™ipnout AnimationPlayer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -4670,7 +4681,7 @@ msgstr "Chyba!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "" +msgstr "Blend Äasy:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" @@ -4678,7 +4689,7 @@ msgstr "DalÅ¡Ã (Automatická Å™ada):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "" +msgstr "PÅ™echodové Äasy prolnutà animacÃ" #: editor/plugins/animation_state_machine_editor.cpp msgid "Move Node" @@ -4703,7 +4714,7 @@ msgstr "Konec" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" -msgstr "" +msgstr "Okamžité" #: editor/plugins/animation_state_machine_editor.cpp msgid "Sync" @@ -4711,7 +4722,7 @@ msgstr "Synchronizovat" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "" +msgstr "Na konci" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" @@ -4719,12 +4730,11 @@ msgstr "Cestovat" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." -msgstr "" +msgstr "Pro pod-pÅ™echod jsou potÅ™eba zaÄáteÄnà a koncové uzly." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "No playback resource set at path: %s." -msgstr "Nenà v cestÄ› ke zdroji." +msgstr "Na cestÄ› nebyl nalezen žádný zdrojový playback: %s." #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Removed" @@ -4736,7 +4746,7 @@ msgstr "PÅ™echod odebrán" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" -msgstr "" +msgstr "Nastavit poÄáteÄnà uzel (Autoplay)" #: editor/plugins/animation_state_machine_editor.cpp msgid "" @@ -4744,6 +4754,9 @@ msgid "" "RMB to add new nodes.\n" "Shift+LMB to create connections." msgstr "" +"Vyberte a pÅ™esuňte uzly.\n" +"PTM pro pÅ™idánà nových uzlů.\n" +"Shift + LTM pro vytvářenà spojenÃ." #: editor/plugins/animation_state_machine_editor.cpp msgid "Create new nodes." @@ -4760,10 +4773,12 @@ msgstr "Odstranit vybraný uzel nebo pÅ™echod." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." msgstr "" +"PÅ™epnout automatické pÅ™ehrávánà této animace pÅ™i spuÅ¡tÄ›nÃ, restartovánà nebo " +"pÅ™etoÄenà zpÄ›t na nulu." #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." -msgstr "" +msgstr "Nastavit koncovou animaci. UžiteÄné pro pod-pÅ™echody." #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition: " @@ -4788,25 +4803,24 @@ msgid "Scale:" msgstr "ZvÄ›tÅ¡enÃ:" #: editor/plugins/animation_tree_player_editor_plugin.cpp -#, fuzzy msgid "Fade In (s):" -msgstr "Zmizenà do (s):" +msgstr "Objevenà za (s):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Fade Out (s):" -msgstr "" +msgstr "Zmizenà za (s):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend" -msgstr "" +msgstr "ProlnutÃ" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix" -msgstr "" +msgstr "Mix" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Auto Restart:" -msgstr "" +msgstr "Auto-restart:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Restart (s):" @@ -4835,7 +4849,7 @@ msgstr "ProlÃnánà 1:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "" +msgstr "X-Fade Äas (s):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Current:" @@ -4853,7 +4867,7 @@ msgstr "ÄŒistý Auto-Advance" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "" +msgstr "Nastavit auto-krok" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Delete Input" @@ -4909,7 +4923,7 @@ msgstr "Importovat animace..." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "" +msgstr "Editovat filtry uzlů" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Filters..." @@ -4953,14 +4967,13 @@ msgstr "OdpovÄ›Ä nelze uložit na:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." -msgstr "" +msgstr "Chyba zápisu." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" msgstr "Požadavek se nezdaÅ™il, pÅ™ÃliÅ¡ mnoho pÅ™esmÄ›rovánÃ" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." msgstr "Zacyklené pÅ™esmÄ›rovánÃ." @@ -4969,9 +4982,8 @@ msgid "Request failed, timeout" msgstr "Požadavek selhal, vyprÅ¡el Äasový limit" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "ÄŒas" +msgstr "ÄŒas vyprÅ¡el." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -5031,11 +5043,11 @@ msgstr "Stahovánà tohoto assetu právÄ› probÃhá!" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Recently Updated" -msgstr "" +msgstr "Naposledy upravené" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Least Recently Updated" -msgstr "" +msgstr "Naposledy neupravené" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (A-Z)" @@ -5087,7 +5099,7 @@ msgstr "Pluginy..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" -msgstr "Řadit:" +msgstr "Řadit podle:" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp @@ -5124,16 +5136,23 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Nelze urÄit cestu uloženà pro svÄ›telnou mapu obrázku.\n" +"Uložte scénu (obrázky se uložà do stejného adresáře) nebo vyberte cestu pro " +"uloženà z vlastnosti BakedLightmap." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." msgstr "" +"Žádné sÃtÄ› k zapeÄenÃ. UjistÄ›te se, že obsahujà kanál UV2 a že je nastaven " +"pÅ™Ãznak \"Zapéct svÄ›tlo\"." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"PÅ™i vytvářenà ligtmap doÅ¡lo k chybÄ›, ujistÄ›te se, že cesta nenà pouze pro " +"ÄtenÃ." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" @@ -5146,7 +5165,7 @@ msgstr "Náhled" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "Nastavenà pÅ™ichycovánÃ" +msgstr "Nastavenà pÅ™ichycenÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" @@ -5158,7 +5177,7 @@ msgstr "Krok mřÞky:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Primary Line Every:" -msgstr "" +msgstr "Hlavnà řádek každý:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "steps" @@ -5173,9 +5192,8 @@ msgid "Rotation Step:" msgstr "Krok rotace:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Step:" -msgstr "ZvÄ›tÅ¡enÃ:" +msgstr "Krok Å¡kálovánÃ:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" @@ -5207,66 +5225,63 @@ msgstr "VytvoÅ™it vodorovná a svislá vodÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Nastavit CanvasItem \"%s\" offset pivota na (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Rotovat CanvasItem" +msgstr "Rotovat %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Rotovat CanvasItem" +msgstr "Rotovat CanvasItem \"%s\" na %d stupňů" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "PÅ™emÃstit CanvasItem" +msgstr "PÅ™emÃstit CanvasItem \"%s\" kotva" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Å kálovat Node2D \"%s\" na (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Å kálovat Control \"%s\" na (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Å kálovat CanvasItem" +msgstr "Å kálovat %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Å kálovat CanvasItem" +msgstr "Å kálovat CanvasItem \"%s\" na (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "PÅ™emÃstit CanvasItem" +msgstr "PÅ™emÃstit %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "PÅ™emÃstit CanvasItem" +msgstr "PÅ™emÃstit CanvasItem \"%s\" na (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." msgstr "" +"Hodnoty ukotvenà a okrajů potomků uzlů kontejnerů jsou pÅ™epsány jejich " +"rodiÄem." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." -msgstr "" +msgstr "PÅ™ednastavenà pro hodnoty ukotvenà a okrajů Control ulzu." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" +"Když je aktivnÃ, pohybujÃcà se Control uzly mÄ›nà svoje ukotvenÃ, namÃsto " +"jejich okrajů." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Left" @@ -5302,43 +5317,39 @@ msgstr "UprostÅ™ed dole" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center" -msgstr "" +msgstr "UprostÅ™ed" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Left Wide" -msgstr "Pohled zleva" +msgstr "Vlevo po celé výšce" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Top Wide" -msgstr "Pohled shora" +msgstr "NahoÅ™e po celé Å¡ÃÅ™ce" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Right Wide" -msgstr "Pohled zprava" +msgstr "Vpravo po celé výšce" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Bottom Wide" -msgstr "Pohled zdola" +msgstr "Dole po celé Å¡ÃÅ™ce" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "VCenter Wide" -msgstr "" +msgstr "UprostÅ™ed po celé výšce" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "HCenter Wide" -msgstr "" +msgstr "UprostÅ™ed po celé Å¡ÃÅ™ce" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Full Rect" -msgstr "" +msgstr "Celý obdélnÃk" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Keep Ratio" -msgstr "Ponechat pomÄ›r" +msgstr "Zachovat pomÄ›r" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -5358,6 +5369,8 @@ msgid "" "Game Camera Override\n" "Overrides game camera with editor viewport camera." msgstr "" +"PÅ™epsat hernà kameru\n" +"Hernà kamera se nahradà kamerou z pohledu editoru." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5365,6 +5378,8 @@ msgid "" "Game Camera Override\n" "No game instance running." msgstr "" +"PÅ™epsat hernà kameru\n" +"Nenà spuÅ¡tÄ›na žádná instance hry." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5378,28 +5393,25 @@ msgstr "OdemÄÃt vybraný" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected" -msgstr "KopÃrovat výbÄ›r" +msgstr "Seskupit vybrané" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected" -msgstr "KopÃrovat výbÄ›r" +msgstr "Odskupit vybrané" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" -msgstr "" +msgstr "Vložit pózu" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Guides" msgstr "Vymazat vodÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Custom Bone(s) from Node(s)" -msgstr "VytvoÅ™it ze scény" +msgstr "VytvoÅ™it vlastnà kosti z uzlů" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" @@ -5407,17 +5419,19 @@ msgstr "Vymazat kosti" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "" +msgstr "VytvoÅ™it IK Å™etÄ›z" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "" +msgstr "ZruÅ¡it IK Å™etÄ›z" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." msgstr "" +"VarovánÃ: Pozici a velikost potomků kontejneru nastavuje pouze jejich " +"nadÅ™azený prvek." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -5441,11 +5455,12 @@ msgstr "Alt+TáhnutÃ: PÅ™emÃstit" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" +"StisknutÃm klávesy \"V\" se upravà pivot, stisknutÃm kláves \"Shift+V\" se " +"posune pivot (pÅ™i pohybu)." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Alt+RMB: Depth list selection" -msgstr "Alt+Pravé tlaÄÃko myÅ¡i:" +msgstr "Alt+PTM: VýbÄ›r hloubkového seznamu" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5468,63 +5483,60 @@ msgid "" "Show a list of all objects at the position clicked\n" "(same as Alt+RMB in select mode)." msgstr "" +"Zobrazit seznam objektů v bodÄ› kliknutÃ\n" +"(stejné jako Alt+PTM v režimu výbÄ›ru)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "" +msgstr "KliknutÃm zmÄ›nÃte stÅ™ed otáÄenà objektu." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" -msgstr "" +msgstr "Režim posouvánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Ruler Mode" msgstr "Režim pravÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "PÅ™epnout pÅ™ichycovánÃ." +msgstr "PÅ™epnout chytré pÅ™ichytávánÃ." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Smart Snap" -msgstr "PoužÃt chytré pÅ™ichycovánÃ" +msgstr "PoužÃt chytré pÅ™ichytávánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "PÅ™epnout pÅ™ichycovánÃ." +msgstr "PÅ™epnout mřÞkové pÅ™ichytávánÃ." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "PoužÃt pÅ™ichycovánÃ" +msgstr "PoužÃt mřÞkové pÅ™ichytávánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "Možnosti pÅ™ichytávánÃ" +msgstr "Možnosti pÅ™ichycenÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "" +msgstr "PoužÃt rotaÄnàpÅ™ichytávánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Scale Snap" -msgstr "PoužÃt pÅ™ichycovánÃ" +msgstr "PoužÃt Å¡kálovacàpÅ™ichytávánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "" +msgstr "PÅ™ichytávat relativnÄ›" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "" +msgstr "PÅ™ichytávat na pixely" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Smart Snapping" -msgstr "Chytré pÅ™ichytávánÃ" +msgstr "Chytré pÅ™ichcovánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5532,39 +5544,33 @@ msgid "Configure Snap..." msgstr "Nastavenà pÅ™ichytávánÃ..." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Parent" msgstr "PÅ™ichytit k rodiÄovi" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Anchor" -msgstr "PÅ™ichytit ke stÅ™edu uzlu" +msgstr "PÅ™ichytit k ukotvenà uzlu" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Sides" msgstr "PÅ™ichytit ke stranám uzlu" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Center" msgstr "PÅ™ichytit ke stÅ™edu uzlu" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Other Nodes" msgstr "PÅ™ichytit k jiným uzlům" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Guides" msgstr "PÅ™ichytit k vodÃtkům" #: 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 "UzamÄÃt vybraný objekt na mÃstÄ› (nemůže být pÅ™esunut)." +msgstr "Uzamknout vybraný objekt na mÃstÄ› (nemůže být pÅ™esunut)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5574,12 +5580,12 @@ msgstr "Uvolnit vybraný objekt (může být pÅ™esunut)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." -msgstr "" +msgstr "ZajistÃ, aby nebylo možné vybrat potomky objektu." #: 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 "" +msgstr "ObnovÃ, aby bylo možné vybrat potomky objektu." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton Options" @@ -5591,10 +5597,9 @@ msgstr "Zobrazit kosti" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Custom Bone(s) from Node(s)" -msgstr "" +msgstr "VytvoÅ™it kosti z uzlů" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Custom Bones" msgstr "Vymazat kosti" @@ -5604,9 +5609,8 @@ msgid "View" msgstr "ZobrazenÃ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Zobrazit mřÞku" +msgstr "Vždy zobrazit mřÞku" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5630,7 +5634,7 @@ msgstr "Zobrazit Viewport" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Zobrazit ikony skupiny a zámku" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -5642,24 +5646,23 @@ msgstr "VýbÄ›r snÃmku" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" -msgstr "" +msgstr "Náhled měřÃtka plátna" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." -msgstr "" +msgstr "Offset maska pro vkládánà klÃÄů." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation mask for inserting keys." -msgstr "" +msgstr "RotaÄnà maska pro vkládánà klÃÄů." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale mask for inserting keys." -msgstr "" +msgstr "Å kálovacà maska pro vkládánà klÃÄů." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "Vložit klÃÄ (existujÃcà stopy)" +msgstr "Vložit klÃÄ (založený na masce)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5668,16 +5671,19 @@ msgid "" "Keys are only added to existing tracks, no new tracks will be created.\n" "Keys must be inserted manually for the first time." msgstr "" +"Automaticky vkládat klÃÄe, když je objekt pÅ™esunut, otoÄen nebo zmenÅ¡en (na " +"základÄ› masky).\n" +"KlÃÄe se pÅ™idávajà pouze ke stávajÃcÃm cestám, žádné nové cesty se " +"nevytvoÅ™Ã.\n" +"Poprvé musà být klÃÄe vloženy ruÄnÄ›." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Auto Insert Key" -msgstr "Animace: vložit klÃÄ" +msgstr "Automaticky vložit klÃÄ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Animation Key and Pose Options" -msgstr "AnimaÄnà klÃÄ vložen." +msgstr "AnimaÄnà klÃÄ a možnosti pozice" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5693,16 +5699,15 @@ msgstr "Vymazat pózu" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" -msgstr "" +msgstr "Vynásobit krok mřÞky dvÄ›ma" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Divide grid step by 2" -msgstr "" +msgstr "VydÄ›lit krok mřÞky dvÄ›ma" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Pan View" -msgstr "Pohled zezadu" +msgstr "PÅ™esunout pohled" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -5714,7 +5719,7 @@ msgstr "PÅ™idávám %s..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Cannot instantiate multiple nodes without root." -msgstr "" +msgstr "Bez koÅ™enového uzlu nelze vytvoÅ™it vÃce uzlů." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -5727,7 +5732,6 @@ msgid "Error instancing scene from %s" msgstr "Chyba instancovánà scény z %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Change Default Type" msgstr "ZmÄ›nit výchozà typ" @@ -5736,6 +5740,8 @@ msgid "" "Drag & drop + Shift : Add node as sibling\n" "Drag & drop + Alt : Change node type" msgstr "" +"PÅ™etaženà + Shift: PÅ™idat uzel jako souseda\n" +"PÅ™etaženà + Alt: ZmÄ›nit typu uzlu" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Polygon3D" @@ -5751,7 +5757,7 @@ msgstr "Upravit polygon (Odstranit bod)" #: editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" -msgstr "" +msgstr "Nastavit úchyt" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5762,9 +5768,8 @@ msgstr "NaÄÃst emisnà masku" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Restart" -msgstr "Restartovat nynÃ" +msgstr "Restartovat" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5790,28 +5795,27 @@ msgstr "Emisnà maska" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Solid Pixels" -msgstr "" +msgstr "Pevné pixely" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Border Pixels" -msgstr "" +msgstr "HraniÄnà pixely" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Directed Border Pixels" -msgstr "Složky a soubory:" +msgstr "Pixely ohraniÄenÃ" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Capture from Pixel" -msgstr "" +msgstr "SnÃmánà z pixelu" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Colors" -msgstr "" +msgstr "Emisnà barvy" #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" @@ -5820,46 +5824,44 @@ msgstr "CPUParticles (Äástice)" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "" +msgstr "VytvoÅ™it emisnà body ze sÃtÄ›" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "" +msgstr "VytvoÅ™it emisnà body z uzlu" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat 0" -msgstr "Flat0" +msgstr "Plocha 0" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat 1" -msgstr "Flat1" +msgstr "Plocha 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" -msgstr "" +msgstr "Pozvolný vchod" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease Out" -msgstr "" +msgstr "Pozvolný odchod" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "" +msgstr "Plynulý krok" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" -msgstr "" +msgstr "Upravit bod kÅ™ivky" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Tangent" -msgstr "" +msgstr "Upravit teÄnu kÅ™ivky" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "" +msgstr "NaÄÃst pÅ™eddefinovanou kÅ™ivku" #: editor/plugins/curve_editor_plugin.cpp msgid "Add Point" @@ -5870,19 +5872,16 @@ msgid "Remove Point" msgstr "Odstranit bod" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Left Linear" -msgstr "LineárnÃ" +msgstr "Levé lineárnÃ" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right Linear" -msgstr "Pohled zprava" +msgstr "Pravé lineárnÃ" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Load Preset" -msgstr "NaÄÃst preset" +msgstr "NaÄÃst pÅ™ednastavenÃ" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -5890,24 +5889,23 @@ msgstr "Odstranit bod kÅ™ivky" #: editor/plugins/curve_editor_plugin.cpp msgid "Toggle Curve Linear Tangent" -msgstr "" +msgstr "PÅ™epne lineárnà teÄnu kÅ™ivky" #: editor/plugins/curve_editor_plugin.cpp msgid "Hold Shift to edit tangents individually" -msgstr "" +msgstr "PodrženÃm Shift zmÄ›nÃte teÄny jednotlivÄ›" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Pravý klik: Smazat bod" +msgstr "Pravý klik pro pÅ™idánà bodu" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "" +msgstr "Zapéct GI probe" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" -msgstr "" +msgstr "Gradient upraven" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -5930,49 +5928,44 @@ msgid "Mesh is empty!" msgstr "Mesh je prázdný!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Couldn't create a Trimesh collision shape." -msgstr "Nelze vytvoÅ™it složku." +msgstr "VytvoÅ™enà Trimesh koliznÃho tvaru se nezdaÅ™ilo." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" -msgstr "" +msgstr "VytvoÅ™it statické Trimesh Body" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" msgstr "Toto v koÅ™enu scény nefunguje!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Trimesh Static Shape" -msgstr "VytvoÅ™it Trimesh Shape" +msgstr "VytvoÅ™it statický Trimesh tvar" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Can't create a single convex collision shape for the scene root." -msgstr "" +msgstr "Pro koÅ™en scény nelze vytvoÅ™it jediný konvexnà koliznà tvar." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Couldn't create a single convex collision shape." -msgstr "" +msgstr "VytvoÅ™enà jediného konvexnÃho koliznÃho tvaru se nezdaÅ™ilo." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Single Convex Shape" -msgstr "VytvoÅ™it Convex Shape" +msgstr "VytvoÅ™it jediný konvexnà tvar" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Can't create multiple convex collision shapes for the scene root." -msgstr "" +msgstr "Pro koÅ™en scény nelze vytvoÅ™it vÃce konvexnÃch tvarů kolize." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Couldn't create any collision shapes." -msgstr "Nelze vytvoÅ™it složku." +msgstr "Nelze vytvoÅ™it žádný z konvexnÃch tvarů kolize." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Multiple Convex Shapes" -msgstr "VytvoÅ™it Convex Shape" +msgstr "VytvoÅ™it vÃce konvexnÃch tvarů kolize" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" @@ -5984,7 +5977,7 @@ msgstr "Obsažená mesh nenà typu ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "Rozbalenà UV se nezdaÅ™ilo, možná je nesprávně sÃÅ¥?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." @@ -6004,7 +5997,7 @@ msgstr "Mesh némá povrch z jakého vytvoÅ™it obrysy!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" -msgstr "" +msgstr "Typ primitivnà sÃtÄ› nenà PRIMITIVE_TRIANGLES!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -6020,7 +6013,7 @@ msgstr "Mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "" +msgstr "VytvoÅ™it statické Trimesh tÄ›lo" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6028,42 +6021,49 @@ msgid "" "automatically.\n" "This is the most accurate (but slowest) option for collision detection." msgstr "" +"Vytvořà uzel StaticBody a automaticky mu pÅ™iÅ™adà koliznà tvar na základÄ› " +"polygonu.\n" +"Toto je nejpÅ™esnÄ›jÅ¡Ã (ale nejpomalejÅ¡Ã) možnost detekce kolizÃ." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" -msgstr "" +msgstr "VytvoÅ™it sourozence Trimesh kolize" #: 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 "" +"Vytvořà polygonový koliznà tvar.\n" +"Toto je nejpÅ™esnÄ›jÅ¡Ã (ale nejpomalejÅ¡Ã) možnost detekce kolizÃ." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Single Convex Collision Sibling" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "VytvoÅ™it jediného konvexnÃho koliznÃho sourozence" #: 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 "" +"Vytvořà jeden konvexnà koliznà tvar.\n" +"Toto je nejrychlejÅ¡Ã (ale nejménÄ› pÅ™esná) možnost detekce kolizÃ." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Multiple Convex Collision Siblings" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "VytvoÅ™it vÃce konvexnÃch koliznÃch sourozenců" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" "Creates a polygon-based collision shape.\n" "This is a performance middle-ground between the two above options." msgstr "" +"Vytvořà polygonový koliznà tvar.\n" +"Toto je kompromis výkonu a pÅ™esnosti z dvou možnostà uvedených výše." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." -msgstr "" +msgstr "VytvoÅ™it obrysovou mřÞku..." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6072,6 +6072,10 @@ msgid "" "This can be used instead of the SpatialMaterial Grow property when using " "that property isn't possible." msgstr "" +"Vytvořà statickou obrysovou sÃÅ¥. Obrysové sÃÅ¥i se automaticky pÅ™evrátà " +"normály.\n" +"To lze použÃt namÃsto vlastnosti Grow ve SpatialMaterial, když vlastnost " +"Grow nelze použÃt." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV1" @@ -6086,9 +6090,8 @@ msgid "Unwrap UV2 for Lightmap/AO" msgstr "Rozbalit UV2 pro Lightmapu/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Outline Mesh" -msgstr "VytvoÅ™it mesh obrysu" +msgstr "VytvoÅ™it sÃÅ¥ obrysu" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" @@ -6096,7 +6099,7 @@ msgstr "Velikost obrysu:" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Channel Debug" -msgstr "" +msgstr "LadÄ›nà UV kanálu" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" @@ -6111,9 +6114,8 @@ msgstr "" "%s" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "Mesh Library" -msgstr "MeshLibrary..." +msgstr "Knihovna sÃÅ¥Ã" #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -6155,31 +6157,31 @@ msgstr "Zdroj meshe je neplatný (neobsahuje žádný Mesh zdroj)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." -msgstr "" +msgstr "Zdroj povrchu nenà nastaven." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "" +msgstr "Zdroj povrchu je neplatný (neplatná cesta)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." -msgstr "" +msgstr "Zdroj povrchu je neplatný (žádná geometrie)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no faces)." -msgstr "" +msgstr "Povrch je neplatný (žádné stÄ›ny)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "" +msgstr "Vyberte zdrojovou sÃÅ¥:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "" +msgstr "Vyberte cÃlový povrch:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" -msgstr "" +msgstr "Zaplnit povrch" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" @@ -6207,7 +6209,7 @@ msgstr "Osa Z" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "" +msgstr "Osa mřÞky nahoru:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -6236,17 +6238,16 @@ msgid "Convert to CPUParticles" msgstr "PÅ™evést na CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Generovánà C# projektu..." +msgstr "Generovánà obdélnÃku viditelnosti" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" -msgstr "" +msgstr "Vygenerovat obdélnÃk viditelnosti" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" -msgstr "" +msgstr "Bod lze vložit pouze do process materiálu ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6255,60 +6256,59 @@ msgstr "ÄŒas generovánà (sec):" #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry's faces don't contain any area." -msgstr "" +msgstr "StÄ›ny geometrie neobsahujà žádnou oblast." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry doesn't contain any faces." -msgstr "Scéna neobsahuje žádný skript." +msgstr "Geometrie neobsahuje žádné stÄ›ny." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." -msgstr "" +msgstr "\"%s\" nedÄ›dà ze Spatial." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain geometry." -msgstr "" +msgstr "\"%s\" neobsahuje geometrii." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain face geometry." -msgstr "" +msgstr "\"%s\" neobsahuje geometrii stÄ›n." #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" -msgstr "" +msgstr "VytvoÅ™it Emitter" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Points:" -msgstr "" +msgstr "Emisnà body:" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" -msgstr "" +msgstr "Povrchové body" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "" +msgstr "Povrchové body+Normály (orientované)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" -msgstr "" +msgstr "Hlasitost" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Source: " -msgstr "" +msgstr "Zdroje emisÃ: " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "" +msgstr "Je vyžadován materiál pro typ \"ParticlesMaterial\"." #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "" +msgstr "Generovánà AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate Visibility AABB" -msgstr "" +msgstr "Generovat viditelnostnà AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" @@ -6320,11 +6320,11 @@ msgstr "Odstranit bod z kÅ™ivky" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Out-Control from Curve" -msgstr "" +msgstr "Odstranit odchozà kontrolnà bod kÅ™ivky" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove In-Control from Curve" -msgstr "" +msgstr "Odstranit pÅ™Ãchozà kontrolnà bod kÅ™ivky" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6341,11 +6341,11 @@ msgstr "PÅ™esunout bod v kÅ™ivce" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move In-Control in Curve" -msgstr "" +msgstr "Odstranit vnitÅ™nà kontrolnà bod kÅ™ivky" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Out-Control in Curve" -msgstr "" +msgstr "PÅ™esunout odchozà kontrolnà bod kÅ™ivky" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6354,9 +6354,8 @@ msgstr "Vybrat body" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Shift+Drag: Select Control Points" -msgstr "Shift+TáhnutÃ:" +msgstr "Shift+TáhnutÃ: Vybrat kontrolnà body" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6374,12 +6373,12 @@ msgstr "Pravý klik: Smazat bod" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" -msgstr "" +msgstr "Vybrat kontrolnà body kÅ™ivky (Shift+Drag)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Add Point (in empty space)" -msgstr "" +msgstr "PÅ™idat bod (na prázdném mÃstÄ›)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6400,12 +6399,12 @@ msgstr "Možnosti" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Angles" -msgstr "" +msgstr "Zrcadlit úhly úchytů" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Lengths" -msgstr "" +msgstr "Zrcadlit délku úchytů" #: editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" @@ -6417,12 +6416,11 @@ msgstr "Nastavit pozici bodu kÅ™ivky" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Position" -msgstr "Nastavit kÅ™ivku na pozici" +msgstr "Nastavit bod do kÅ™ivky" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Set Curve Out Position" -msgstr "Odstranit signál" +msgstr "Nastavit bod z kÅ™ivky" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" @@ -6433,27 +6431,25 @@ msgid "Remove Path Point" msgstr "Odstranit bod cesty" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Remove Out-Control Point" -msgstr "Odstranit funkci" +msgstr "Odebrat výstupnà kontrolnà body" #: editor/plugins/path_editor_plugin.cpp msgid "Remove In-Control Point" -msgstr "" +msgstr "Odebrat vstupnàkontrolnà body" #: editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" msgstr "RozdÄ›lit segment (v kÅ™ivce)" #: editor/plugins/physical_bone_plugin.cpp -#, fuzzy msgid "Move Joint" -msgstr "PÅ™esunout bod" +msgstr "PÅ™esunout kloub" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "" +msgstr "Vlastnost kostry v Polygon2D neukazuje na Skeleton2D uzel" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Sync Bones" @@ -6464,6 +6460,8 @@ msgid "" "No texture in this polygon.\n" "Set a texture to be able to edit UV." msgstr "" +"Tento polygon nemá textury.\n" +"Nastav texturu aby se dalo editovat UV." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" @@ -6473,7 +6471,7 @@ msgstr "VytvoÅ™it UV mapu" msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." -msgstr "" +msgstr "Polygon 2D má vnitÅ™nà vrcholy, a proto nelze editovat ve viewport." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" @@ -6509,16 +6507,15 @@ msgstr "Transformovat polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" -msgstr "" +msgstr "ZmÄ›nit hmotnost kostÃ" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Open Polygon 2D UV editor." -msgstr "OtevÅ™Ãt 2D editor" +msgstr "OtevÅ™Ãt editor 2D UV polygonu." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" -msgstr "" +msgstr "Polygon 2D UV Editor" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV" @@ -6541,18 +6538,16 @@ msgid "Move Points" msgstr "PÅ™esunout body" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "TáhnutÃ: OtoÄit" +msgstr "PÅ™Ãkaz: OtoÄit" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: PÅ™esunout vÅ¡e" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: ZmÄ›nit měřÃtko" +msgstr "Shift+PÅ™Ãkaz: Å kálovat" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6588,25 +6583,23 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." -msgstr "" +msgstr "ZmÄ›nit hmotnost se zadanou intenzitou." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Unpaint weights with specified intensity." -msgstr "" +msgstr "Odebrat hmotnost se zadanou intnzitou." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" msgstr "PolomÄ›r:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "VytvoÅ™it polygon a UV" +msgstr "KopÃrovat polygon do UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "PÅ™esunout polygon" +msgstr "KopÃrovat UV do polygonu" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -6653,9 +6646,8 @@ msgid "Grid Step Y:" msgstr "Krok mřÞky Y:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones to Polygon" -msgstr "ZmÄ›nit měřÃtko mnohoúhelnÃku" +msgstr "Synchronizovat kosti do polygonu" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" @@ -6685,7 +6677,7 @@ msgstr "Vložit zdroj" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/scene_tree_editor.cpp msgid "Instance:" -msgstr "Instance" +msgstr "Instance:" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp @@ -6765,20 +6757,22 @@ msgstr "Uložit soubor jako..." #: editor/plugins/script_editor_plugin.cpp msgid "Can't obtain the script for running." -msgstr "" +msgstr "Neexistuje žádný skript ke spuÅ¡tÄ›nÃ." #: editor/plugins/script_editor_plugin.cpp msgid "Script failed reloading, check console for errors." -msgstr "" +msgstr "NaÄtenà skriptu se nezdaÅ™ilo, zkontrolujte chyby v konzoli." #: editor/plugins/script_editor_plugin.cpp msgid "Script is not in tool mode, will not be able to run." -msgstr "" +msgstr "Skript nenà v režimu nástroje, nelze jej spustit." #: editor/plugins/script_editor_plugin.cpp msgid "" "To run this script, it must inherit EditorScript and be set to tool mode." msgstr "" +"Chcete-li spustit tento skript, musà zdÄ›dit EditorScript a musà být nastaven " +"do režimu editoru." #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" @@ -6983,9 +6977,8 @@ msgid "Clear Recent Scripts" msgstr "Vymazat nedávné skripty" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Connections to method:" -msgstr "PÅ™ipojit k uzlu:" +msgstr "PÅ™ipojenà k metodÄ›:" #: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp msgid "Source" @@ -6993,18 +6986,16 @@ msgstr "Zdroj" #: editor/plugins/script_text_editor.cpp msgid "Target" -msgstr "" +msgstr "CÃl" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "Odpojit '%s' od '%s'" +msgstr "Chybà metoda '%s' napojená na signál '%s' z uzlu '%s' do uzlu '%s'." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "[Ignore]" -msgstr "(ignorovat)" +msgstr "[Ignorovat]" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -7016,16 +7007,16 @@ msgstr "PÅ™ejÃt na funkci" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." -msgstr "" +msgstr "Sem lze pÅ™esunout pouze zdroje ze souborového systému." #: 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 "" +msgstr "Nelze zruÅ¡it uzly, protože skript \"%s\" se v této scénÄ› nepoužÃvá." #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "" +msgstr "Vyhledat symbol" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -7054,17 +7045,16 @@ msgstr "ZvýrazňovaÄ syntaxe" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Bookmarks" -msgstr "" +msgstr "Záložky" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Breakpoints" -msgstr "VytvoÅ™it body." +msgstr "Breakpointy" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Go To" -msgstr "" +msgstr "JÃt do" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -7106,16 +7096,15 @@ msgstr "Rozložit vÅ¡echny řádky" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "" +msgstr "Duplikovat dolů" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "" +msgstr "Kompletnà symbol" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "ZmÄ›nit měřÃtko výbÄ›ru" +msgstr "VyhodnoÅ¥ vybraný výraz" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -7142,24 +7131,20 @@ msgid "Contextual Help" msgstr "Kontextová nápovÄ›da" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Toggle Bookmark" -msgstr "PÅ™epnout volný pohled" +msgstr "Vypnout/Zapnout záložku" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Bookmark" -msgstr "PÅ™ejÃt na dalÅ¡Ã breakpoint" +msgstr "PÅ™ejÃt na dalÅ¡Ã záložku" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Bookmark" -msgstr "PÅ™ejÃt na pÅ™edchozà breakpoint" +msgstr "PÅ™ejÃt na pÅ™edchozà záložku" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Remove All Bookmarks" -msgstr "Odstranit vÅ¡echny položky" +msgstr "Odstranit vÅ¡echny zálóžky" #: editor/plugins/script_text_editor.cpp msgid "Go to Function..." @@ -7200,16 +7185,15 @@ msgstr "Shader" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "" +msgstr "Kostra nemá žádné kosti, vytvoÅ™ nÄ›jaké potomky Bone2D." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Create Rest Pose from Bones" -msgstr "VytvoÅ™it ze scény" +msgstr "VytvoÅ™it klidovou pózu z kostÃ" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" -msgstr "" +msgstr "Nastavit kosti podle klidové pózy" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" @@ -7217,11 +7201,11 @@ msgstr "Skeleton2D (Kostra 2D)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" -msgstr "" +msgstr "VytvoÅ™it klidovou pózu (z kostÃ)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "" +msgstr "UmÃstit kosti do klidové pózy" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Create physical bones" @@ -7265,7 +7249,7 @@ msgstr "ZmÄ›nit osu Z." #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "" +msgstr "Zobrazit transformaci roviny." #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " @@ -7281,7 +7265,7 @@ msgstr "Rotuji %s stupňů." #: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." -msgstr "" +msgstr "KlÃÄovánà je deaktivováno (nenà vložen žádný klÃÄ)." #: editor/plugins/spatial_editor_plugin.cpp msgid "Animation Key Inserted." @@ -7289,11 +7273,11 @@ msgstr "AnimaÄnà klÃÄ vložen." #: editor/plugins/spatial_editor_plugin.cpp msgid "Pitch" -msgstr "" +msgstr "StoupánÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Náklon" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -7364,48 +7348,44 @@ msgid "Rear" msgstr "ZadnÃ" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Transform with View" -msgstr "Zarovnat s výhledem" +msgstr "Zarovnat se zobrazenÃm" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Rotation with View" -msgstr "Zarovnat výbÄ›r s pohledem" +msgstr "Zarovnat rotaci se zobrazenÃm" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." -msgstr "" +msgstr "Neexistuje žádný rodiÄ, u kterého by se vytvoÅ™ila instance potomka." #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." msgstr "Tato operace vyžaduje jeden vybraný uzel." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Auto Orthogonal Enabled" -msgstr "OrtogonálnÃ" +msgstr "Auto-ortogonalizace zapnutá" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock View Rotation" -msgstr "Zobrazit informace" +msgstr "Uzamknout rotaci pohledu" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" -msgstr "" +msgstr "Normálnà pohled" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Wireframe" -msgstr "" +msgstr "Drátový pohled" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Overdraw" -msgstr "" +msgstr "Rentgen pohled" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Unshaded" -msgstr "" +msgstr "BezestÃnový pohled" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Environment" @@ -7413,7 +7393,7 @@ msgstr "Zobrazit prostÅ™edÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" -msgstr "" +msgstr "Zobrazit Gizmos" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" @@ -7429,20 +7409,19 @@ msgstr "PoloviÄnà rozliÅ¡enÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" -msgstr "" +msgstr "PosluchaÄ zvuku" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Enable Doppler" -msgstr "Povolit filtrovánÃ" +msgstr "Povolit Doppler" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" -msgstr "" +msgstr "Filmový náhled" #: editor/plugins/spatial_editor_plugin.cpp msgid "Not available when using the GLES2 renderer." -msgstr "" +msgstr "Nenà k dispozici pÅ™i použità vykreslovacÃho modulu GLES2." #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -7473,20 +7452,20 @@ msgid "Freelook Speed Modifier" msgstr "Rychlost volného pohledu" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Rychlost volného pohledu" +msgstr "Zpomalenà volného pohledu" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Zobrazit informace" +msgstr "Rotace pohledu uzamknuta" #: 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 "" +"Poznámka: Zobrazená hodnota FPS pocházà z editoru.\n" +"Nelze jej použÃt jako spolehlivý ukazatel výkonu ve hÅ™e." #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -7500,15 +7479,19 @@ msgid "" "Closed eye: Gizmo is hidden.\n" "Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." msgstr "" +"KliknutÃm pÅ™epnete mezi stavy viditelnosti.\n" +"\n" +"OtevÅ™ené oko: Gizmo je viditelný.\n" +"ZavÅ™ené oko: Gizmo je skrytý.\n" +"PolootevÅ™ené oko: Gizmo je viditelné pÅ™es neprůhledné (rentgenové) povrchy." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Nodes To Floor" -msgstr "PÅ™ichytit k mřÞce" +msgstr "PÅ™ichytit uzly k podlaze" #: editor/plugins/spatial_editor_plugin.cpp msgid "Couldn't find a solid floor to snap the selection to." -msgstr "" +msgstr "Nelze najÃt pevnou podlahu, na kterou by se pÅ™ichytil výbÄ›r." #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7522,11 +7505,11 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Local Space" -msgstr "" +msgstr "PoužÃt mÃstnà prostor" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "PoužÃt pÅ™ichycovánÃ" +msgstr "PoužÃt pÅ™ichycenÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -7553,7 +7536,6 @@ msgid "Right View" msgstr "Pohled zprava" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Switch Perspective/Orthogonal View" msgstr "PÅ™epnout perspektivnÃ/ortogonálnà pohled" @@ -7576,16 +7558,15 @@ msgstr "PÅ™epnout volný pohled" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Transform" -msgstr "" +msgstr "Transformace" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Object to Floor" -msgstr "PÅ™ichytit k mřÞce" +msgstr "PÅ™ichytit objekt k podlaze" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." -msgstr "" +msgstr "TransformaÄnà dialog..." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" @@ -7613,7 +7594,7 @@ msgstr "4 výřezy" #: editor/plugins/spatial_editor_plugin.cpp msgid "Gizmos" -msgstr "" +msgstr "Gizmos" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7625,9 +7606,8 @@ msgstr "Zobrazit mřÞku" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "NastavenÃ" +msgstr "NastavenÃ..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7635,18 +7615,17 @@ msgstr "Nastavenà pÅ™ichycenÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "" +msgstr "PÅ™ichycenà transformace:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "PÅ™ichycenà rotaze (stupnÄ›):" +msgstr "PÅ™ichycenà rotace (stupnÄ›):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "PÅ™ichycenà zvÄ›tÅ¡enà (%):" +msgstr "Å kálovacà pÅ™ichytávánà (%):" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Viewport Settings" msgstr "Nastavenà viewportu" @@ -7656,11 +7635,11 @@ msgstr "Perspektivnà FOV (stupnÄ›):" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" -msgstr "" +msgstr "Pohled Z-blÃzko:" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Far:" -msgstr "" +msgstr "Pohled Z-daleko:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" @@ -7692,46 +7671,39 @@ msgstr "Po" #: editor/plugins/spatial_editor_plugin.cpp msgid "Nameless gizmo" -msgstr "" +msgstr "Gizmo beze jména" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "VytvoÅ™it 2D mesh" +msgstr "VytvoÅ™it Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Mesh2D Preview" -msgstr "Náhled" +msgstr "Náhled Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Polygon2D" msgstr "VytvoÅ™it Polygon3D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Polygon2D Preview" -msgstr "" +msgstr "Náhled Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "VytvoÅ™it CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "CollisionPolygon2D Preview" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "Náhled CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D" -msgstr "VytvoÅ™it Occluder Polygon" +msgstr "VytvoÅ™it LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "LightOccluder2D Preview" -msgstr "VytvoÅ™it Occluder Polygon" +msgstr "Náhled LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -7739,59 +7711,55 @@ msgstr "Sprite je prázdný!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." -msgstr "" +msgstr "Nelze pÅ™evést sprite pomocà animaÄnÃch snÃmků na sÃÅ¥." #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "" +msgstr "Neplatná geometrie, nelze nahradit sÃtÃ." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Mesh2D" -msgstr "Konvertovat na 2D mesh" +msgstr "Konvertovat na Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." -msgstr "" +msgstr "Neplatná geometrie, nelze vytvoÅ™it polygon." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Polygon2D" -msgstr "PÅ™esunout polygon" +msgstr "Konvertovat na Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." -msgstr "" +msgstr "Neplatná geometrie, nelze vytvoÅ™it koliznà polygon." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D Sibling" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "VytvoÅ™it sourozence CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." -msgstr "" +msgstr "Neplatná geometrie, nelze vytvoÅ™it light occluder." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D Sibling" -msgstr "VytvoÅ™it Occluder Polygon" +msgstr "VytvoÅ™it sourozence LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" -msgstr "" +msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " -msgstr "" +msgstr "ZjednoduÅ¡enÃ: " #: editor/plugins/sprite_editor_plugin.cpp msgid "Shrink (Pixels): " -msgstr "" +msgstr "ZmenÅ¡enà (pixely): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " -msgstr "" +msgstr "ZvÄ›tÅ¡enà (pixely): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Update Preview" @@ -7802,23 +7770,20 @@ msgid "Settings:" msgstr "NastavenÃ:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "No Frames Selected" -msgstr "VýbÄ›r snÃmku" +msgstr "Nebyly vybrány žádné snÃmky" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add %d Frame(s)" -msgstr "PÅ™idat snÃmek" +msgstr "PÅ™idat %d snÃmků" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" msgstr "PÅ™idat snÃmek" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Unable to load images" -msgstr "Selhalo nahránà zdroje." +msgstr "Selhalo nahránà obrázků" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" @@ -7826,7 +7791,7 @@ msgstr "CHYBA: Nelze naÄÃst zdroj snÃmku!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Resource clipboard is empty or not a texture!" -msgstr "" +msgstr "Schránka zdrojů je prázdná nebo to nenà textura!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Paste Frame" @@ -7857,9 +7822,8 @@ msgid "New Animation" msgstr "Nová animace" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Speed:" -msgstr "Rychlost (FPS):" +msgstr "Rychlost:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" @@ -7870,13 +7834,12 @@ msgid "Animation Frames:" msgstr "SnÃmky animace:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add a Texture from File" -msgstr "PÅ™idat uzel(y) ze stromu" +msgstr "PÅ™idat texturu ze souboru" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frames from a Sprite Sheet" -msgstr "" +msgstr "PÅ™idat rámeÄky ze Sprite Sheet" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7899,40 +7862,36 @@ msgid "Select Frames" msgstr "Vybrat snÃmky" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Horizontal:" -msgstr "PÅ™evrátit horizontálnÄ›" +msgstr "HorizonálnÄ›:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Vertical:" -msgstr "Vrcholy" +msgstr "VertikálnÄ›:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select/Clear All Frames" -msgstr "Vybrat vÅ¡e" +msgstr "Vybrat vÅ¡echny/žádné rámeÄky" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Create Frames from Sprite Sheet" -msgstr "VytvoÅ™it ze scény" +msgstr "VytvoÅ™it rámeÄky ze Sprite Sheet" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" -msgstr "" +msgstr "SpriteFrames" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" -msgstr "" +msgstr "Nastavit oblast textury" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Margin" -msgstr "" +msgstr "Nastavit okraj" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "" +msgstr "Režim pÅ™ichycenÃ:" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp @@ -7941,15 +7900,15 @@ msgstr "Žádné" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "" +msgstr "PÅ™ichycenà na pixely" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "" +msgstr "PÅ™ichycenà na mřÞku" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" -msgstr "" +msgstr "Automatický Å™ez" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Offset:" @@ -7961,10 +7920,9 @@ msgstr "Krok:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" -msgstr "" +msgstr "OddÄ›lovaÄ:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "TextureRegion" msgstr "Oblast textury" @@ -8013,71 +7971,64 @@ msgid "Create From Current Editor Theme" msgstr "VytvoÅ™it ze souÄasného motivu editoru" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Toggle Button" -msgstr "TlaÄÃtko myÅ¡i" +msgstr "PÅ™epÃnatelné tlaÄÃtko" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Button" -msgstr "ProstÅ™ednà tlaÄÃtko" +msgstr "Deaktivované tlaÄÃtko" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" msgstr "Položka" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Item" -msgstr "Zakázáno" +msgstr "Deaktivovaná položka" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Check Item" -msgstr "Zkontrolovat položku" +msgstr "ZaÅ¡krtávátko" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "" +msgstr "ZaÅ¡krtávacà položka" #: editor/plugins/theme_editor_plugin.cpp msgid "Radio Item" -msgstr "" +msgstr "Položka volby" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Radio Item" -msgstr "" +msgstr "PÅ™epÃnatelná položka volby" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." -msgstr "" +msgstr "Nazvaný oddÄ›lovaÄ" #: editor/plugins/theme_editor_plugin.cpp msgid "Submenu" -msgstr "" +msgstr "Podmenu" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 1" -msgstr "Položka" +msgstr "Podpoložka 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 2" -msgstr "Položka" +msgstr "Podpoložka 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "Má" #: editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "Mnoho" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled LineEdit" -msgstr "Zakázáno" +msgstr "Deaktivovaný LineEdit" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -8092,13 +8043,12 @@ msgid "Tab 3" msgstr "Tab 3" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Editable Item" -msgstr "Upravit promÄ›nnou" +msgstr "Upravitelná položka" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" -msgstr "" +msgstr "Podstrom" #: editor/plugins/theme_editor_plugin.cpp msgid "Has,Many,Options" @@ -8139,13 +8089,12 @@ msgstr "Opravit neplatné dlaždice" #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Vycentrovat výbÄ›r" +msgstr "VýbÄ›r Å™ezu" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" -msgstr "" +msgstr "Nakreslit TileMap" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Line Draw" @@ -8153,11 +8102,11 @@ msgstr "Nakreslit Äáru" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rectangle Paint" -msgstr "" +msgstr "Nakreslit obdélnÃk" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket Fill" -msgstr "" +msgstr "Vyplnit barvou" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase TileMap" @@ -8173,37 +8122,39 @@ msgstr "Transponovat" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Disable Autotile" -msgstr "" +msgstr "Deaktivovat Autotile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Enable Priority" -msgstr "Editovat filtry" +msgstr "Zapnout priority" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "Filtrovat soubory..." +msgstr "Filtrovat dlaždice" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." -msgstr "" +msgstr "PÅ™idejte TileSet zdroj tomuto TileMap, aby mohl použÃt jeho dlaždice." #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" -msgstr "" +msgstr "Nakreslit dlaždici" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" +"Shift+LTM: Nakreslit Äáru\n" +"Shift+PÅ™Ãkaz+LMB: Nakreslit obdélnÃk" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" "Shift+LMB: Line Draw\n" "Shift+Ctrl+LMB: Rectangle Paint" msgstr "" +"Shift+LTM: Nakreslit Äáru\n" +"Shift+Ctrl+LTM: Nakreslit obdélnÃk" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" @@ -8226,14 +8177,12 @@ msgid "Flip Vertically" msgstr "PÅ™evrátit vertikálnÄ›" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear Transform" -msgstr "Animace: zmÄ›na transformace" +msgstr "Promazat transformaci" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Add Texture(s) to TileSet." -msgstr "PÅ™idat uzel(y) ze stromu" +msgstr "PÅ™idat textury do TileSet." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected Texture from TileSet." @@ -8249,69 +8198,59 @@ msgstr "SlouÄit ze scény" #: editor/plugins/tile_set_editor_plugin.cpp msgid "New Single Tile" -msgstr "" +msgstr "Nová dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "New Autotile" -msgstr "Nový textový soubor" +msgstr "Nové auto-kachliÄky" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "New Atlas" -msgstr "Nový %s" +msgstr "Nový Atlas" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Next Coordinate" -msgstr "DalÅ¡Ã skript" +msgstr "DalÅ¡Ã koordináta" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." -msgstr "" +msgstr "Vybrat dalÅ¡Ã tvar, dÃlÄà dlaždici nebo dlaždici." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Previous Coordinate" -msgstr "PÅ™edchozà skript" +msgstr "PÅ™edchozà koordináta" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." -msgstr "" +msgstr "Vybrat pÅ™edchozà tvar, dÃlÄà dlaždici nebo dlaždici." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Region" -msgstr "Režim otáÄenÃ" +msgstr "Oblast" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Collision" -msgstr "InterpolaÄnà režim" +msgstr "Kolize" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Occlusion" -msgstr "Editovat polygon" +msgstr "Okluze" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Navigation" msgstr "Navigace" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Bitmask" -msgstr "Režim otáÄenÃ" +msgstr "Bitmaska" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Priority" -msgstr "Expertnà režim:" +msgstr "Priority" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Z Index" -msgstr "Index:" +msgstr "Z-Index" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" @@ -8322,9 +8261,8 @@ msgid "Collision Mode" msgstr "Koliznà režim" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Occlusion Mode" -msgstr "Editovat polygon" +msgstr "Režim okluze" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Navigation Mode" @@ -8335,9 +8273,8 @@ msgid "Bitmask Mode" msgstr "Režim bitové masky" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Priority Mode" -msgstr "Expertnà režim:" +msgstr "Prioritnà mód" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon Mode" @@ -8345,7 +8282,7 @@ msgstr "Režim ikony" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Z Index Mode" -msgstr "" +msgstr "Režim Z-indexu" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." @@ -8360,9 +8297,8 @@ msgid "Erase bitmask." msgstr "Vymazat bitovou masku." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "VytvoÅ™it nové uzly." +msgstr "VytvoÅ™it nový obdélnÃk." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." @@ -8370,20 +8306,22 @@ msgstr "VytvoÅ™it nový polygon." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." -msgstr "" +msgstr "Udržovat mnohoúhelnÃk uvnitÅ™ obdélnÃku." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "" +msgstr "Zapnout pÅ™ichycenà a zobrazit mřÞku (konfigurovatelnou v inspektoru)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" -msgstr "" +msgstr "Zobrazit názvy dlaždic (podržet Alt)" #: 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 "" +"PÅ™idejte nebo vyberte texturu v levém podoknÄ› a upravte k nà pÅ™ipojené " +"dlaždice." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected texture? This will remove all tiles which use it." @@ -8397,7 +8335,7 @@ msgstr "Nevybrali jste texturu k odstranÄ›nÃ." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "" +msgstr "VytvoÅ™it ze scény? Aktuálnà dlaždice budou pÅ™epsány." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" @@ -8409,38 +8347,43 @@ msgstr "Odstranit texturu" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." -msgstr "" +msgstr "%s soubory nebyly pÅ™idány, protože již byly v seznamu." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Drag handles to edit Rect.\n" "Click on another Tile to edit it." msgstr "" +"PÅ™etaženÃm úchytů upravte obdélnÃk.\n" +"KliknutÃm na jinou dlaždici ji upravÃte." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "Odstranit vybrané soubory?" +msgstr "Smazat vybraný obdélnÃk." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." -msgstr "VytvoÅ™it složku" +msgstr "" +"Vyberte aktuálnÄ› upravovanou pod-dlaždici.\n" +"KliknutÃm na jinou dlaždici pro jejà úpravu." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete polygon." msgstr "Smazat polygon." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy 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 "VytvoÅ™it složku" +msgstr "" +"LTM: Zapnout bit.\n" +"PTM: Vypnout bit.\n" +"Shift+LTM: Nastavit wildcard bit.\n" +"KliknÄ›te na dalÅ¡Ã Dlaždici pro úpravu." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8448,24 +8391,29 @@ msgid "" "bindings.\n" "Click on another Tile to edit it." msgstr "" +"Vyberte dÃlÄà dlaždici, kterou chcete použÃt jako ikonu. Bude také použita " +"pro nesprávnÄ› nastavené automatické dlaždice.\n" +"KliknutÃm na jinou dlaždici ji upravÃte." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Select sub-tile to change its priority.\n" "Click on another Tile to edit it." msgstr "" +"Vyberte dÃlÄà dlaždici a změňte jejà prioritu.\n" +"KliknutÃm na jinou dlaždici ji upravÃte." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select sub-tile to change its z index.\n" "Click on another Tile to edit it." -msgstr "VytvoÅ™it složku" +msgstr "" +"Vybrat pod-dlaždici pro zmÄ›nu jejÃho indexu.\n" +"KliknÄ›te na dalÅ¡Ã dlaždici pro úpravu." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Oblast textury" +msgstr "Nastavit oblast textury" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Tile" @@ -8473,26 +8421,23 @@ msgstr "VytvoÅ™it dlaždici" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "Nastavit ikonu dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Bitmask" msgstr "Upravit bitovou masku dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Upravit existujÃcà polygon:" +msgstr "Upravit polygon kolize" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Editovat polygon" +msgstr "Editovat okluznà polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "Upravit navigaÄnà polygon" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Paste Tile Bitmask" @@ -8500,64 +8445,55 @@ msgstr "Vložit bitovou masku dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "Odebrat bitovou masku dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Concave" -msgstr "PÅ™esunout polygon" +msgstr "ZmÄ›nit polygon na konkávnÃ" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Convex" -msgstr "PÅ™esunout polygon" +msgstr "ZmÄ›nit polygon na konvexnÃ" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Tile" msgstr "Odstranit dlaždici" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Odstranit polygon a bod" +msgstr "Odstranit koliznà polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "VytvoÅ™it Occluder Polygon" +msgstr "Odebrat okluznà polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "VytvoÅ™it navigaÄnà polygon" +msgstr "Odstranit navigaÄnà polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Editovat filtry" +msgstr "Upravit prioritu dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "" +msgstr "Upravit Z Index dlaždice" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Convex" -msgstr "PÅ™esunout polygon" +msgstr "ZmÄ›nit na konvexnÃ" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Concave" -msgstr "PÅ™esunout polygon" +msgstr "ZmÄ›nit na konkávnÃ" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "VytvoÅ™it koliznà polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" -msgstr "VytvoÅ™it Occluder Polygon" +msgstr "VytvoÅ™it okluznà polygon" #: editor/plugins/tile_set_editor_plugin.cpp msgid "This property can't be changed." @@ -8568,92 +8504,80 @@ msgid "TileSet" msgstr "TileSet (Sada dlaždic)" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS addons are available." -msgstr "Jméno rodiÄe uzlu, pokud dostupné" +msgstr "K dispozici nejsou žádná VCS rozÅ¡ÃÅ™enÃ." #: editor/plugins/version_control_editor_plugin.cpp msgid "Error" msgstr "Chyba" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided" -msgstr "Nebylo poskytnuto žádné jméno" +msgstr "Nebyla poskytnuta commit message" #: editor/plugins/version_control_editor_plugin.cpp msgid "No files added to stage" -msgstr "" +msgstr "Zádné soubory nebyly pÅ™idány k zápisu" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit" -msgstr "Komunita" +msgstr "Commit" #: editor/plugins/version_control_editor_plugin.cpp msgid "VCS Addon is not initialized" -msgstr "" +msgstr "VCS rozÅ¡ÃÅ™enà nejnà inicializováno" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" -msgstr "" +msgstr "Verzovánà (VCS)" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Initialize" -msgstr "Velká pÃsmena" +msgstr "Inicializovat" #: editor/plugins/version_control_editor_plugin.cpp msgid "Staging area" -msgstr "" +msgstr "K zápsánÃ" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "VytvoÅ™it nové uzly." +msgstr "Detekovat nové zmÄ›ny" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Changes" -msgstr "ZmÄ›nit" +msgstr "ZmÄ›ny" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" -msgstr "" +msgstr "Úpravy" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Renamed" -msgstr "PÅ™ejmenovat" +msgstr "PÅ™ejmenovánÃ" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Deleted" -msgstr "Odstranit" +msgstr "OdstranÄ›ny" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Typechange" -msgstr "ZmÄ›nit" +msgstr "ZmÄ›nit typ" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage Selected" -msgstr "Smazat vybraný" +msgstr "PÅ™ipravit vybrané k zapsánÃ" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage All" -msgstr "Uložit vÅ¡e" +msgstr "PÅ™ipravit k zapsánà vÅ¡e" #: editor/plugins/version_control_editor_plugin.cpp msgid "Add a commit message" -msgstr "" +msgstr "PÅ™idat zprávu commitu" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Changes" -msgstr "Synchornizace zmÄ›n skriptu" +msgstr "Commitnout zmÄ›ny" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -8662,15 +8586,15 @@ msgstr "Status" #: editor/plugins/version_control_editor_plugin.cpp msgid "View file diffs before committing them to the latest version" -msgstr "" +msgstr "PodÃvat se na rozdÃly, než se commitnou jako nejnovÄ›jšàverze" #: editor/plugins/version_control_editor_plugin.cpp msgid "No file diff is active" -msgstr "" +msgstr "Žádné aktivnà porovnánà zmÄ›n" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect changes in file diff" -msgstr "" +msgstr "Zjistit zmÄ›ny v souborech" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" @@ -8694,79 +8618,67 @@ msgstr "Boolean" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sampler" -msgstr "" +msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add input port" -msgstr "PÅ™idat vstup" +msgstr "PÅ™idat vstupnà port" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add output port" -msgstr "" +msgstr "PÅ™idat výstupnà port" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port type" -msgstr "ZmÄ›nit výchozà typ" +msgstr "ZmÄ›nit typ vstupnÃho portu" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port type" -msgstr "ZmÄ›nit výchozà typ" +msgstr "ZmÄ›nit typ vystupnÃho portu" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port name" -msgstr "ZmÄ›nit název vstupu" +msgstr "ZmÄ›nit název vstupnÃho portu" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port name" -msgstr "ZmÄ›nit název vstupu" +msgstr "ZmÄ›nit název výstupnÃho portu" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Remove input port" -msgstr "Odstranit bod" +msgstr "Odstranit vstupnà port" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Remove output port" -msgstr "Odstranit bod" +msgstr "Odstranit výstupnà port" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set expression" -msgstr "ZmÄ›nit výraz" +msgstr "Nastavit výraz" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Resize VisualShader node" -msgstr "VisualShader" +msgstr "Å kálovat uzel VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" -msgstr "" +msgstr "Nastavit uniformnà jméno" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Input Default Port" -msgstr "" +msgstr "Nastavit výchozà vstupnà port" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node to Visual Shader" -msgstr "VisualShader" +msgstr "PÅ™idat uzel do VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" msgstr "Uzel pÅ™esunut" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" -msgstr "Duplikovat uzel/uzly" +msgstr "Duplikovat uzly" #: editor/plugins/visual_shader_editor_plugin.cpp #: modules/visual_script/visual_script_editor.cpp @@ -8774,18 +8686,16 @@ msgid "Paste Nodes" msgstr "Vložit uzly" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Nodes" -msgstr "Smazat uzel" +msgstr "Smazat uzly" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" -msgstr "" +msgstr "Typ vstupu Visual Shader zmÄ›nÄ›n" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "ZmÄ›na transformace" +msgstr "Název UniformRef byl zmÄ›nÄ›n" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -8800,198 +8710,191 @@ msgid "Light" msgstr "SvÄ›tlo" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Show resulted shader code." -msgstr "VytvoÅ™it uzel" +msgstr "Zobrazit výsledný kód shaderu." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Create Shader Node" -msgstr "VytvoÅ™it uzel" +msgstr "VytvoÅ™it shader uzel" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color function." -msgstr "PÅ™ejÃt na funkci" +msgstr "Funkce obarvenÃ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color operator." -msgstr "" +msgstr "Operátor barvy." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Grayscale function." -msgstr "VytvoÅ™it funkci" +msgstr "Funkce stupnÄ› Å¡edi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "" +msgstr "PÅ™evede vektor HSV na ekvivalentnà RGB." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "" +msgstr "PÅ™evede vektor RGB na ekvivalentnà HSV." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sepia function." -msgstr "PÅ™ejmenovat funkci" +msgstr "Funkce sépie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Burn operator." -msgstr "" +msgstr "Operátor vypálenÃ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Darken operator." -msgstr "" +msgstr "Operátor ztmavenÃ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Difference operator." -msgstr "Pouze rozdÃly" +msgstr "Operátor rozdÃlu." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Dodge operator." -msgstr "" +msgstr "Operátor uhnutÃ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "HardLight operator." -msgstr "ZmÄ›nit skalárnà operátor" +msgstr "Operátor tvrdého svÄ›tla." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." -msgstr "" +msgstr "Operátor zesvÄ›tlenÃ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Overlay operator." -msgstr "" +msgstr "Operátor pÅ™ekrytÃ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Screen operator." -msgstr "" +msgstr "Operátor screen." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "SoftLight operator." -msgstr "" +msgstr "Operátor mÄ›kkého svÄ›tla." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." -msgstr "KonstantnÃ" +msgstr "Konstantnà barva." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color uniform." -msgstr "Animace: zmÄ›na transformace" +msgstr "Uniformnà barva." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Returns the boolean result of the %s comparison between two parameters." -msgstr "Vrátà inverznà odmocninu z parametru." +msgstr "Vrátà booleovský výsledek %s porovnánà mezi dvÄ›ma parametry." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" -msgstr "" +msgstr "Rovnost (==)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than (>)" -msgstr "" +msgstr "VÄ›tÅ¡Ã než (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "" +msgstr "VÄ›tÅ¡Ã nebo rovno (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided scalars are equal, greater or " "less." msgstr "" +"Vrátà pÅ™idružený vektor, pokud jsou dané skaláry stejné, vÄ›tÅ¡Ã nebo menÅ¡Ã." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF and a scalar " "parameter." -msgstr "" +msgstr "Vrátà booleovský výsledek srovnánà mezi INF a skalárnÃm parametrem." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between NaN and a scalar " "parameter." -msgstr "" +msgstr "Vrátà booleovský výsledek srovnánà mezi NaN a skalárnÃm parametrem." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than (<)" -msgstr "" +msgstr "MenÅ¡Ã než (<)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than or Equal (<=)" -msgstr "" +msgstr "Menšànebo rovno (<=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Not Equal (!=)" -msgstr "" +msgstr "Nenà rovno (!=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided boolean value is true or false." msgstr "" +"Vrátà pÅ™idružený vektor, pokud je daná logická hodnota true nebo false." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated scalar if the provided boolean value is true or false." msgstr "" +"Vrátà pÅ™idružený skalár, pokud je daná logická hodnota true nebo false." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Returns the boolean result of the comparison between two parameters." -msgstr "Vrátà tangens parametru." +msgstr "Vrátà booleovský výsledek porovnánà mezi dvÄ›ma parametry." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF (or NaN) and a " "scalar parameter." msgstr "" +"Vrátà booleovský výsledek srovnánà mezi INF (nebo NaN) a skalárnÃm " +"parametrem." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean constant." -msgstr "" +msgstr "Booleovská konstanta." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean uniform." -msgstr "" +msgstr "Bool uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for all shader modes." -msgstr "" +msgstr "Zadejte parametr \"%s\" pro vÅ¡echny režimy shaderu." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Input parameter." -msgstr "PÅ™ichytit k rodiÄovi" +msgstr "Vstupnà parametr." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." -msgstr "" +msgstr "Vstupnà parametr \"%s\" pro režimy shaderu vrcholů a fragmentů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." -msgstr "" +msgstr "Zadejte parametr \"%s\" pro fragmentový a svÄ›telný shader." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment shader mode." -msgstr "" +msgstr "Vstupnà parametr \"%s\" pro režim shaderu fragmentu." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for light shader mode." -msgstr "'%s' vstupnà parametr pro mód svÄ›telného shaderu." +msgstr "\"%s\" vstupnà parametr pro mód svÄ›telného shaderu." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex shader mode." -msgstr "'%s' vstupnà parametr pro mód vertexového shaderu." +msgstr "\"%s\" vstupnà parametr pro mód vertexového shaderu." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader mode." -msgstr "'%s' vstupnà parametr pro mód vertexového a fragmentového shaderu." +msgstr "\"%s\" vstupnà parametr pro mód vertexového a fragmentového shaderu." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar function." @@ -9184,6 +9087,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"Funkce plynulého pÅ™echodu( skalár(edge0), skalár(edge1), skalár(x) ).\n" +"\n" +"Vrátà 0.0, pokud \"x\" je menÅ¡Ã než \"edge0\" a 1.0, pokud \"x\" je vÄ›tÅ¡Ã " +"než \"edge1\". V opaÄném pÅ™ÃpadÄ› vrátà interpolovanou hodnotu mezi 0.0 a 1.0 " +"vypoÄtenou pomocà Hermitových polynomů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9191,6 +9099,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Skoková funkce( skalár(hrana), skalár(x) ).\n" +"\n" +"Vrátà 0.0, pokud je \"x\" menÅ¡Ã než hrana, jinak vrátà 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." @@ -9201,9 +9112,8 @@ msgid "Returns the hyperbolic tangent of the parameter." msgstr "Vrátà hyperbolický tangens parametru." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Finds the truncated value of the parameter." -msgstr "Vrátà absolutnà hodnotu parametru." +msgstr "Vrátà zkrácenou hodnotu parametru." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds scalar to scalar." @@ -9219,46 +9129,43 @@ msgstr "Vynásobà skalár skalárem." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two scalars." -msgstr "" +msgstr "Vrátà zbytek dvou skalárů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts scalar from scalar." -msgstr "" +msgstr "OdeÄte skalár od skaláru." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar constant." -msgstr "ZmÄ›nit skalárnà konstantu" +msgstr "Konstantnà skalár." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Animace: zmÄ›na transformace" +msgstr "Uniformnà skalár." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." -msgstr "" +msgstr "Provést vyhledánà kubické textury." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the texture lookup." -msgstr "" +msgstr "Provést vyhledávánà textury." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Cubic texture uniform lookup." -msgstr "" +msgstr "Uniformnà vyhledánà kubické textury." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "2D texture uniform lookup." -msgstr "" +msgstr "Uniformnà vyhledánà 2D textury." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "2D texture uniform lookup with triplanar." -msgstr "" +msgstr "Uniformnà vyhledánà 2D textury s triplanar mapovánÃm." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Transformovat polygon" +msgstr "Funkce transformace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9270,73 +9177,76 @@ 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 "" +"VypoÄte dyadický souÄin dvojice vektorů.\n" +"\n" +"OuterProduct vezme prvnà parametr \"c\" jako vektor sloupce (matice s jednÃm " +"sloupcem) a druhý parametr \"r\" jako vektor řádku (matice s jednÃm řádkem) " +"a provede násobenà matice \"c * r\", což má za výsledek matici s poÄtem " +"řádků stejný jako v \"c\" a poÄet sloupců stejný jako v \"r\"." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes transform from four vectors." -msgstr "" +msgstr "Složà transformaci ze ÄtyÅ™ vektorů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes transform to four vectors." -msgstr "" +msgstr "Rozložà transformaci na ÄtyÅ™i vektory." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the determinant of a transform." -msgstr "" +msgstr "VypoÄÃtá determinant transformace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the inverse of a transform." -msgstr "" +msgstr "PoÄÃtá inverznà transformaci." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the transpose of a transform." -msgstr "" +msgstr "VypoÄÃtá transpozici tranformace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies transform by transform." -msgstr "" +msgstr "Pronásobà transformaci transformacÃ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by transform." -msgstr "" +msgstr "Pronásobà vektor transformacÃ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Transformace zruÅ¡ena." +msgstr "TransformaÄnà konstanta." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Transformace zruÅ¡ena." +msgstr "Uniformnà transformace." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "PÅ™ejÃt na funkci..." +msgstr "Vektorová funkce." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector operator." -msgstr "" +msgstr "Vektorový operátor." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes vector from three scalars." -msgstr "" +msgstr "Skládá vektor ze třà skalárů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes vector to three scalars." -msgstr "" +msgstr "Rozložà vektor na tÅ™i skaláry." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the cross product of two vectors." -msgstr "" +msgstr "SpoÄÃtá vektorový produkt dvou vektorů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the distance between two points." -msgstr "" +msgstr "Vrátà vzdálenost mezi dvÄ›ma body." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the dot product of two vectors." -msgstr "" +msgstr "VypoÄÃtá skalárnà souÄin dvou vektorů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9345,41 +9255,46 @@ msgid "" "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 "" +"Vrátà vektor, který ukazuje ve stejném smÄ›ru referenÄnà vektor. Funkce má " +"tÅ™i vektorové parametry: orientovaný vektor N, sousednà vektor I a " +"referenÄnà vektor Nref. Pokud je skalárnà souÄin I a Nref menÅ¡Ã než nula, " +"vrátà se N. Jinak se vrátà -N." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the length of a vector." -msgstr "" +msgstr "SpoÄÃtá délku vektoru." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two vectors." -msgstr "" +msgstr "Lineárnà interpolace mezi dvÄ›ma vektory." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Linear interpolation between two vectors using scalar." -msgstr "Lineárnà interpolace mezi dvÄ›ma skaláry." +msgstr "Lineárnà interpolace mezi dvÄ›ma vektory pomocà skaláru." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the normalize product of vector." -msgstr "" +msgstr "SpoÄÃtá normalizovaný vektor." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - vector" -msgstr "" +msgstr "1.0 - vektor" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / vector" -msgstr "" +msgstr "1.0 / vektor" #: 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 "" +"Vrátà vektor směřujÃcà ve smÄ›ru odrazu ( a : vektor dopadu, b : normálový " +"vektor )." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the vector that points in the direction of refraction." -msgstr "" +msgstr "Vrátà vektor ve smÄ›ru lomu svÄ›tla." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9389,6 +9304,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"Funkce plynulého pÅ™echodu ( vektor(edge0), vektor(edge1), vektor(x) ).\n" +"\n" +"Vrátà 0.0, pokud \"x\" je menÅ¡Ã než \"edge0\" a 1.0, pokud x je vÄ›tÅ¡Ã než " +"\"edge1\". V opaÄném pÅ™ÃpadÄ› vrátà interpolovanou hodnotu mezi 0.0 a 1.0 " +"vypoÄtenou pomocà Hermitových polynomů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9398,6 +9318,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"Funkce plynulého pÅ™echodu( skalár(edge0), skalár(edge1), vektor(x) ).\n" +"\n" +"Vrátà 0.0, pokud \"x\" je menÅ¡Ã než \"edge0\" a 1.0, pokud \"x\" je vÄ›tÅ¡Ã " +"než \"edge1\". V opaÄném pÅ™ÃpadÄ› vrátà interpolovanou hodnotu mezi 0.0 a 1.0 " +"vypoÄtenou pomocà Hermitových polynomů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9405,6 +9330,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Skoková funkce( vektor(hrana), vektor(x) ).\n" +"\n" +"Vrátà 0.0, pokud je \"x\" menÅ¡Ã než \"hrana\", jinak vrátà 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9412,34 +9340,37 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Skoková funkce( skalár(hrana), vektor(x) ).\n" +"\n" +"Vrátà 0.0, pokud je \"x\" menÅ¡Ã než \"hrana\", jinak vrátà 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." -msgstr "" +msgstr "PÅ™iÄte vektor k vektoru." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides vector by vector." -msgstr "" +msgstr "VydÄ›là vektor vektorem." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by vector." -msgstr "" +msgstr "Pronásobà vektor vektorem." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two vectors." -msgstr "" +msgstr "Vrátà zbytek po dÄ›lenà dvou vektorů." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts vector from vector." -msgstr "" +msgstr "OdeÄte vektor od vektoru." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector constant." -msgstr "" +msgstr "Konstantnà vektor." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector uniform." -msgstr "" +msgstr "Uniformnà vektor." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9447,12 +9378,17 @@ msgid "" "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 "" +"Vlastnà výraz v jazyce shaderu Godot s vlastnÃm poÄtem vstupnÃch a " +"výstupnÃch portů. Toto je pÅ™Ãmé vkládánà kódu do funkcà vrcholů/fragmentů/" +"osvÄ›tlenÃ, nepoužÃvat k deklaraci funkcÃ." #: 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 "" +"Vrátà sklon na základÄ› skalárnÃho souÄinu normály povrchu a smÄ›ru pohledu " +"kamery (zde zadejte vstup)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9461,68 +9397,82 @@ msgid "" "it later in the Expressions. You can also declare varyings, uniforms and " "constants." msgstr "" +"Vlastnà výraz v jazyce shaderu Godot, který bude umÃstÄ›n nad výsledek " +"shaderu. UvnitÅ™ můžete vytvoÅ™it různé definice funkcà a pozdÄ›ji je volat " +"pomocà Expressions. Můžete také deklarovat promÄ›nné, \"uniforms\" a " +"konstanty." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Reference na existujÃcà uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." -msgstr "" +msgstr "(Pouze pro režim Fragment/Light) Skalárnà derivace funkce." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Vector derivative function." -msgstr "" +msgstr "(Pouze pro režim Fragment/Light) Vektorová derivace funkce." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'x' using local " "differencing." msgstr "" +"(Pouze pro režim Fragment/Light) (Vektor) Derivace podle \"x\" pomocà mÃstnà " +"variace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " "differencing." msgstr "" +"(Pouze pro režim Fragment/Light) (SkalárnÃ) Derivace podle \"x\" pomocà " +"mÃstnà variace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'y' using local " "differencing." msgstr "" +"(Pouze pro režim Fragment/Light) (Vektor) Derivace podle \"y\" pomocà mÃstnà " +"variace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " "differencing." msgstr "" +"(Pouze pro režim Fragment/Light) (Skalár) Derivace podle \"y\" pomocà mÃstnà " +"variace." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " "'y'." msgstr "" +"(Pouze pro režim Fragment/Light) (Vektor) SouÄet absolutnà derivace podle \"x" +"\" a \"y\"." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " "'y'." msgstr "" +"(Pouze pro režim Fragment/Light) (Skalár) SouÄet absolutnà derivace podle \"x" +"\" a \"y\"." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "VisualShader" msgstr "VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Edit Visual Property" -msgstr "Editovat filtry" +msgstr "Upravit vizuálnà vlastnost" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Visual Shader Mode Changed" -msgstr "ZmÄ›ny shaderu" +msgstr "ZmÄ›nit režim vizuálnÃho shaderu" #: editor/project_export.cpp msgid "Runnable" @@ -9537,6 +9487,8 @@ msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" +"Export projektu pro platformu \"%s\" se nezdaÅ™il.\n" +"Zdá se, že Å¡ablony exportu chybà nebo jsou neplatné." #: editor/project_export.cpp msgid "" @@ -9544,6 +9496,9 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" +"Export projektu pro platformu \"%s\" se nezdaÅ™il.\n" +"Může to být způsobeno problémem s konfiguracà v export profilu nebo v " +"nastavenà exportu." #: editor/project_export.cpp msgid "Release" @@ -9554,13 +9509,12 @@ msgid "Exporting All" msgstr "Exportovánà vÅ¡eho" #: editor/project_export.cpp -#, fuzzy msgid "The given export path doesn't exist:" -msgstr "Cesta neexistuje." +msgstr "Zadaná cesta pro export neexistuje:" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" -msgstr "Exportnà šablony pro tuto platformu chybà nebo jsou poÅ¡kozené:" +msgstr "Å ablony exportu pro tuto platformu chybà nebo jsou poÅ¡kozené:" #: editor/project_export.cpp msgid "Presets" @@ -9575,6 +9529,8 @@ 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 "" +"Když je zaÅ¡krtlé, tak bude profil k dispozici pro rychlé nasazenÃ.\n" +"Pouze jeden profil na platformÄ› může být oznaÄen jako spuÅ¡tÄ›ný." #: editor/project_export.cpp msgid "Export Path" @@ -9609,12 +9565,16 @@ msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" +"Filtry pro export souborů/složek, které nejsou zdroji\n" +"(oddÄ›lené Äárkou, napÅ™. *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" +"Filtry pro vynechánà souborů/složek z projektu\n" +"(oddÄ›lené Äárkou, napÅ™. *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Features" @@ -9678,49 +9638,45 @@ msgstr "Soubor ZIP" #: editor/project_export.cpp msgid "Godot Game Pack" -msgstr "" +msgstr "Hracà balÃÄek Godot" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" -msgstr "Exportnà šablony pro tuto platformu chybÃ:" +msgstr "Å ablony exportu pro tuto platformu chybÃ:" #: editor/project_export.cpp msgid "Manage Export Templates" -msgstr "Spravovat exportnà šablony" +msgstr "Spravovat Å¡ablony exportu" #: editor/project_export.cpp msgid "Export With Debug" -msgstr "" +msgstr "Exportovat s ladÄ›nÃm" #: editor/project_manager.cpp -#, fuzzy msgid "The path specified doesn't exist." -msgstr "Cesta neexistuje." +msgstr "Zadaná cesta neexistuje." #: editor/project_manager.cpp -#, fuzzy msgid "Error opening package file (it's not in ZIP format)." -msgstr "NepodaÅ™ilo se otevÅ™Ãt balÃÄek, nenà ve formátu ZIP." +msgstr "Chyba pÅ™i otevÃránà balÃÄku (nenà ve formátu ZIP)." #: editor/project_manager.cpp -#, fuzzy msgid "" "Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file." -msgstr "Neplatný projektový '.zip' soubor; neobsahuje soubor 'project.godot'." +msgstr "" +"Neplatný soubor projektu \".zip\"; neobsahuje soubor \"project.godot\"." #: editor/project_manager.cpp msgid "Please choose an empty folder." msgstr "Zvolte prosÃm prázdnou složku." #: editor/project_manager.cpp -#, fuzzy msgid "Please choose a \"project.godot\" or \".zip\" file." -msgstr "Zvolte prosÃm soubor 'project.godot' nebo '.zip'." +msgstr "Vyberte prosÃm soubor \"project.godot\" nebo \".zip\"." #: editor/project_manager.cpp -#, fuzzy msgid "This directory already contains a Godot project." -msgstr "Složka již obsahuje projekt Godotu." +msgstr "Složka již obsahuje Godot projekt." #: editor/project_manager.cpp msgid "New Game Project" @@ -9929,18 +9885,20 @@ msgid "" "Can't run project: Assets need to be imported.\n" "Please edit the project to trigger the initial import." msgstr "" +"Nelze spustit projekt: Musà být importovány zdroje.\n" +"OtevÅ™ete projekt, aby se spustilo prvotnà importovánÃ." #: editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run %d projects at once?" -msgstr "Jste si jisti, že chcete spustit vÃce než jeden projekt?" +msgstr "Jste si jisti, že chcete spustit %d projektů najednou?" #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." -msgstr "Odstranit projekt ze seznamu? (Obsah složky zůstane nedotÄen)" +msgstr "" +"Odebrat %d projekty ze seznamu?\n" +"Obsah složek projektů zůstane nedotÄen." #: editor/project_manager.cpp msgid "" @@ -9951,23 +9909,28 @@ msgstr "" "Obsah složky zůstane nedotÄen." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." -msgstr "Odstranit projekt ze seznamu? (Obsah složky zůstane nedotÄen)" +msgstr "" +"Odstranit vÅ¡echny chybÄ›jÃcà projekty ze seznamu?\n" +"Obsah složek projektů zůstane nedotÄen." #: editor/project_manager.cpp msgid "" "Language changed.\n" "The interface will update after restarting the editor or project manager." msgstr "" +"Jazyk byl zmÄ›nÄ›n.\n" +"Rozhranà se aktualizuje po restartovánà editoru nebo projektového manažera." #: editor/project_manager.cpp msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." msgstr "" +"Opravdu hledat projekty Godot ve složce %s?\n" +"Může to chvÃli trvat." #. TRANSLATORS: This refers to the application where users manage their Godot projects. #: editor/project_manager.cpp @@ -9980,7 +9943,7 @@ msgstr "Projekty" #: editor/project_manager.cpp msgid "Last Modified" -msgstr "" +msgstr "Datum modifikace" #: editor/project_manager.cpp msgid "Scan" @@ -10024,6 +9987,10 @@ msgid "" "To filter projects by name and full path, the query must contain at least " "one `/` character." msgstr "" +"Vyhledávacà liÅ¡ta filtruje projekty podle názvu a poslednà komponenty " +"cesty.\n" +"Chcete-li filtrovat podle názvu a celé cesty, musà dotaz obsahovat alespoň " +"jeden znak \"/\"." #: editor/project_settings_editor.cpp msgid "Key " @@ -10055,16 +10022,15 @@ msgstr "Akce s názvem \"%s\" již existuje." #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" -msgstr "" +msgstr "PÅ™ejmenovat událost vstupnà akce" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Change Action deadzone" -msgstr "ZmÄ›nit hodnotu slovnÃku" +msgstr "ZmÄ›nit mrtvou zónu akce" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" -msgstr "" +msgstr "PÅ™idat událost vstupnà akce" #: editor/project_settings_editor.cpp msgid "All Devices" @@ -10103,28 +10069,24 @@ msgid "Wheel Down Button" msgstr "KoleÄko dolů" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Left Button" -msgstr "KoleÄko nahoru" +msgstr "Levé tlaÄÃtko koleÄka" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Right Button" -msgstr "Pravé tlaÄÃtko" +msgstr "Pravé tlaÄÃtko koleÄka" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 1" -msgstr "TlaÄÃtko Ä. 6" +msgstr "TlaÄÃtko X 1" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 2" -msgstr "TlaÄÃtko Ä. 6" +msgstr "TlaÄÃtko X 2" #: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" -msgstr "" +msgstr "Index osy Joypadu:" #: editor/project_settings_editor.cpp msgid "Axis" @@ -10132,16 +10094,15 @@ msgstr "Osa" #: editor/project_settings_editor.cpp msgid "Joypad Button Index:" -msgstr "" +msgstr "Index tlaÄÃtka joysticku:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "ZmÄ›nit měřÃtko výbÄ›ru" +msgstr "Vymazat vstupnà akce" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" -msgstr "" +msgstr "Vymazat událost vstupnà akce" #: editor/project_settings_editor.cpp msgid "Add Event" @@ -10149,7 +10110,7 @@ msgstr "PÅ™idat akci" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "Button" +msgstr "TlaÄÃtko" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -10177,7 +10138,7 @@ msgstr "PÅ™idat globálnà vlastnost" #: editor/project_settings_editor.cpp msgid "Select a setting item first!" -msgstr "" +msgstr "Nejprve vyberte nastavenà ze seznamu!" #: editor/project_settings_editor.cpp msgid "No property '%s' exists." @@ -10185,7 +10146,7 @@ msgstr "Vlastnost '%s' neexistuje." #: editor/project_settings_editor.cpp msgid "Setting '%s' is internal, and it can't be deleted." -msgstr "" +msgstr "Nastavenà \"%s\" je integrované a nemůže být smazáno." #: editor/project_settings_editor.cpp msgid "Delete Item" @@ -10201,7 +10162,7 @@ msgstr "" #: editor/project_settings_editor.cpp msgid "Add Input Action" -msgstr "" +msgstr "PÅ™idat vstupnà akci" #: editor/project_settings_editor.cpp msgid "Error saving settings." @@ -10212,13 +10173,12 @@ msgid "Settings saved OK." msgstr "Nastavenà úspěšnÄ› uloženo." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Moved Input Action Event" -msgstr "ZmÄ›nit měřÃtko výbÄ›ru" +msgstr "PÅ™esunutá událost vstupnà akce" #: editor/project_settings_editor.cpp msgid "Override for Feature" -msgstr "" +msgstr "PÅ™epsánà vlastnosti" #: editor/project_settings_editor.cpp msgid "Add Translation" @@ -10230,32 +10190,31 @@ msgstr "Odstranit pÅ™eklad" #: editor/project_settings_editor.cpp msgid "Add Remapped Path" -msgstr "" +msgstr "PÅ™idat pÅ™emapovanou cestu" #: editor/project_settings_editor.cpp msgid "Resource Remap Add Remap" -msgstr "" +msgstr "PÅ™idat pÅ™emapovánà zdroje" #: editor/project_settings_editor.cpp msgid "Change Resource Remap Language" -msgstr "" +msgstr "ZmÄ›nit jazyk pÅ™emapovánàzdrojů" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap" -msgstr "" +msgstr "Odebrat pÅ™emapovánà zdroje" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap Option" -msgstr "" +msgstr "Odebrat možnost pÅ™emapovánà zdroje" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Changed Locale Filter" -msgstr "ZmÄ›nit typ hodnot pole" +msgstr "Upravený filtr lokalizace" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter Mode" -msgstr "" +msgstr "ZmÄ›nÄ›n režim filtru pro nastavenà jazyka" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" @@ -10267,15 +10226,15 @@ msgstr "VÅ¡eobecné" #: editor/project_settings_editor.cpp msgid "Override For..." -msgstr "" +msgstr "PÅ™epsánà Äeho..." #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "The editor must be restarted for changes to take effect." -msgstr "" +msgstr "Pro projevenà zmÄ›n, je nutné restartovat editor." #: editor/project_settings_editor.cpp msgid "Input Map" -msgstr "" +msgstr "Mapovánà vstupů" #: editor/project_settings_editor.cpp msgid "Action:" @@ -10287,7 +10246,7 @@ msgstr "Akce" #: editor/project_settings_editor.cpp msgid "Deadzone" -msgstr "" +msgstr "Mrtvá zóna" #: editor/project_settings_editor.cpp msgid "Device:" @@ -10319,25 +10278,23 @@ msgstr "Zdroje:" #: editor/project_settings_editor.cpp msgid "Remaps by Locale:" -msgstr "" +msgstr "Mapovánà na základÄ› jazyku:" #: editor/project_settings_editor.cpp msgid "Locale" -msgstr "" +msgstr "Jazyky" #: editor/project_settings_editor.cpp msgid "Locales Filter" -msgstr "" +msgstr "Filtr jazyků" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show All Locales" -msgstr "Zobrazit kosti" +msgstr "Zobrazit vÅ¡echny jazyky" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show Selected Locales Only" -msgstr "Pouze výbÄ›r" +msgstr "Zobrazit pouze vybrané jazyky" #: editor/project_settings_editor.cpp msgid "Filter mode:" @@ -10345,11 +10302,11 @@ msgstr "Režim filtru:" #: editor/project_settings_editor.cpp msgid "Locales:" -msgstr "" +msgstr "Jazyky:" #: editor/project_settings_editor.cpp msgid "AutoLoad" -msgstr "" +msgstr "Autoload" #: editor/project_settings_editor.cpp msgid "Plugins" @@ -10365,11 +10322,11 @@ msgstr "Nula" #: editor/property_editor.cpp msgid "Easing In-Out" -msgstr "" +msgstr "Hladký vstup-výstup" #: editor/property_editor.cpp msgid "Easing Out-In" -msgstr "" +msgstr "Hladký výstup-vstup" #: editor/property_editor.cpp msgid "File..." @@ -10389,7 +10346,7 @@ msgstr "Vybrat uzel" #: editor/property_editor.cpp msgid "Error loading file: Not a resource!" -msgstr "" +msgstr "Chyba pÅ™i naÄÃtánà souboru: Žádný zdroj!" #: editor/property_editor.cpp msgid "Pick a Node" @@ -10397,7 +10354,7 @@ msgstr "Vybrat uzel" #: editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "" +msgstr "Bit %d, hodnota %d." #: editor/property_selector.cpp msgid "Select Property" @@ -10416,33 +10373,28 @@ msgid "Batch Rename" msgstr "Dávkové pÅ™ejmenovánÃ" #: editor/rename_dialog.cpp -#, fuzzy msgid "Replace:" -msgstr "Nahradit: " +msgstr "Nahradit:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Prefix:" -msgstr "Prefix" +msgstr "Prefix:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Suffix:" -msgstr "Sufix" +msgstr "Sufix:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Use Regular Expressions" -msgstr "Regulárnà výrazy" +msgstr "PoužÃt regulárnà výrazy" #: editor/rename_dialog.cpp -#, fuzzy msgid "Advanced Options" msgstr "PokroÄilé možnosti" #: editor/rename_dialog.cpp msgid "Substitute" -msgstr "" +msgstr "Nahradit" #: editor/rename_dialog.cpp msgid "Node name" @@ -10469,14 +10421,16 @@ msgid "" "Sequential integer counter.\n" "Compare counter options." msgstr "" +"SekvenÄnà poÄÃtadlo celých ÄÃsel.\n" +"Porovnat možnosti poÄÃtadla." #: editor/rename_dialog.cpp msgid "Per-level Counter" -msgstr "" +msgstr "Samostatné poÄÃtadlo pro každou úroveň" #: editor/rename_dialog.cpp msgid "If set, the counter restarts for each group of child nodes." -msgstr "" +msgstr "Když je zapnuté, poÄÃtadlo se resetuje pro každou skupinu potomků." #: editor/rename_dialog.cpp msgid "Initial value for the counter" @@ -10488,7 +10442,7 @@ msgstr "Krok" #: editor/rename_dialog.cpp msgid "Amount by which counter is incremented for each node" -msgstr "" +msgstr "Hodnota, o kterou se poÄÃtadlo zvýšà za každý uzel" #: editor/rename_dialog.cpp msgid "Padding" @@ -10504,23 +10458,23 @@ msgstr "" #: editor/rename_dialog.cpp msgid "Post-Process" -msgstr "" +msgstr "Následné zpracovánÃ" #: editor/rename_dialog.cpp msgid "Keep" -msgstr "" +msgstr "Zachovat" #: editor/rename_dialog.cpp msgid "PascalCase to snake_case" -msgstr "PascalCase na snake_case" +msgstr "CamelCase na snake_case" #: editor/rename_dialog.cpp msgid "snake_case to PascalCase" -msgstr "snake_case na PascalCase" +msgstr "snake_case na CamelCase" #: editor/rename_dialog.cpp msgid "Case" -msgstr "" +msgstr "Notace" #: editor/rename_dialog.cpp msgid "To Lowercase" @@ -10535,9 +10489,8 @@ msgid "Reset" msgstr "Resetovat" #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expression Error:" -msgstr "Chyba regulárnÃho výrazu" +msgstr "Chyba regulárnÃho výrazu:" #: editor/rename_dialog.cpp msgid "At character %s" @@ -10545,23 +10498,23 @@ msgstr "Na znaku %s" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "" +msgstr "ZmÄ›nit rodiÄe uzlu" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "" +msgstr "ZmÄ›nit rodiÄe lokace (Vybrat nového rodiÄe):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" -msgstr "" +msgstr "Zachovat globálnà transformaci" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "" +msgstr "Upravit rodiÄe" #: editor/run_settings_dialog.cpp msgid "Run Mode:" -msgstr "" +msgstr "Režim spouÅ¡tÄ›nÃ:" #: editor/run_settings_dialog.cpp msgid "Current Scene" @@ -10577,7 +10530,7 @@ msgstr "Argumenty hlavnà scény:" #: editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "" +msgstr "Nastavenà spuÅ¡tÄ›nà scény" #: editor/scene_tree_dock.cpp msgid "No parent to instance the scenes at." @@ -10592,19 +10545,19 @@ msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." msgstr "" +"Scénu \"%s\" nelze vytvoÅ™it, protože aktuálnà scéna je jednÃm z jejÃch uzlů." #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" msgstr "Scéna/Scény instance" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Replace with Branch Scene" -msgstr "Uložit vÄ›tev jako scénu" +msgstr "Nahradit vÄ›tev scénou" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "" +msgstr "PÅ™idat instanci scény" #: editor/scene_tree_dock.cpp msgid "Detach Script" @@ -10612,7 +10565,7 @@ msgstr "Odpojit skript" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." -msgstr "" +msgstr "Tuto operaci nelze provést v koÅ™enovém uzlu stromu." #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" @@ -10629,23 +10582,23 @@ msgstr "Duplikovat uzel/uzly" #: editor/scene_tree_dock.cpp msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." msgstr "" +"NadÅ™azené uzly ve zdÄ›dÄ›né scénÄ› nelze zmÄ›nit. PoÅ™adà uzlů nelze zmÄ›nit." #: editor/scene_tree_dock.cpp msgid "Node must belong to the edited scene to become root." -msgstr "" +msgstr "Uzel musà patÅ™it do editované scény, aby se stal koÅ™enem." #: editor/scene_tree_dock.cpp msgid "Instantiated scenes can't become root" -msgstr "" +msgstr "Instance scény se nemohou stát koÅ™enem" #: editor/scene_tree_dock.cpp msgid "Make node as Root" msgstr "Nastavit uzel jako zdrojový" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes and any children?" -msgstr "Smazat %d uzlů?" +msgstr "Smazat %d uzlů a vÅ¡echny potomky?" #: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" @@ -10653,11 +10606,11 @@ msgstr "Smazat %d uzlů?" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" -msgstr "" +msgstr "Smazat koÅ™enový uzel \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" -msgstr "" +msgstr "Smazat uzel \"%s\" a jeho potomky?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\"?" @@ -10665,11 +10618,11 @@ msgstr "Smazat uzel \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." -msgstr "" +msgstr "Toto nelze provést s koÅ™enovým uzlem." #: editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." -msgstr "" +msgstr "Tuto operaci nelze provést na instanci scény." #: editor/scene_tree_dock.cpp msgid "Save New Scene As..." @@ -10680,17 +10633,21 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Zakázánà \"upravitelné instance“ obnovà výchozà nastavenà vÅ¡ech vlastnostà " +"uzlu." #: 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 "" +"Povolenà možnosti \"NaÄÃst jako placeholder\" zakáže možnost \"Upravitelnà " +"potomci\" a způsobÃ, že vÅ¡echny vlastnosti uzlu budou vráceny na výchozà " +"hodnoty." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Local" -msgstr "MÃstnÃ" +msgstr "ZmÄ›nit na lokálnÃ" #: editor/scene_tree_dock.cpp msgid "New Scene Root" @@ -10718,11 +10675,11 @@ msgstr "Jiný uzel" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" -msgstr "" +msgstr "Nelze manipulovat s uzly z cizà scény!" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes the current scene inherits from!" -msgstr "" +msgstr "Nelze pracovat na uzlech, ze kterých dÄ›dà aktuálnà scéna!" #: editor/scene_tree_dock.cpp msgid "Attach Script" @@ -10733,15 +10690,15 @@ msgid "Remove Node(s)" msgstr "Odstranit uzel/uzly" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change type of node(s)" -msgstr "ZmÄ›nit název vstupu" +msgstr "ZmÄ›nit typ uzlů" #: editor/scene_tree_dock.cpp msgid "" "Couldn't save new scene. Likely dependencies (instances) couldn't be " "satisfied." msgstr "" +"Scénu se nepodaÅ™ilo uložit. NÄ›které závislosti pravdÄ›podobnÄ› nejsou splnÄ›ny." #: editor/scene_tree_dock.cpp msgid "Error saving scene." @@ -10749,7 +10706,7 @@ msgstr "Chyba pÅ™i ukládánà scény." #: editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." -msgstr "" +msgstr "Chyba ukládánà duplikace scény." #: editor/scene_tree_dock.cpp msgid "Sub-Resources" @@ -10757,15 +10714,15 @@ msgstr "DÃlÄà zdroje" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" -msgstr "" +msgstr "Vymazat dÄ›diÄnost" #: editor/scene_tree_dock.cpp msgid "Editable Children" -msgstr "" +msgstr "Upravitelnà potomci" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" -msgstr "" +msgstr "NaÄÃst jako placeholder" #: editor/scene_tree_dock.cpp msgid "Open Documentation" @@ -10777,24 +10734,25 @@ msgid "" "This is probably because this editor was built with all language modules " "disabled." msgstr "" +"Nelze pÅ™ipojit skript: nejsou zaregistrovány žádné jazyky.\n" +"Je to pravdÄ›podobnÄ› proto, že tento editor byl vytvoÅ™en s vypnutými " +"jazykovými moduly." #: editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "PÅ™idat podÅ™Ãzený uzel" +msgstr "PÅ™idat uzel" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Expand/Collapse All" -msgstr "Sbalit vÅ¡e" +msgstr "Rozbalit/Sbalit vÅ¡e" #: editor/scene_tree_dock.cpp msgid "Change Type" msgstr "ZmÄ›nit typ" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Reparent to New Node" -msgstr "PÅ™idat/VytvoÅ™it nový uzel" +msgstr "ZmÄ›nit rodiÄe na nový uzel" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -10825,16 +10783,16 @@ msgid "" "Instance a scene file as a Node. Creates an inherited scene if no root node " "exists." msgstr "" +"PÅ™idat instanci scény jako uzel. Pokud neexistuje koÅ™enový uzel, tak vytvořà " +"zdÄ›dÄ›nou scénu." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Attach a new or existing script to the selected node." msgstr "PÅ™ipojit nový, nebo existujÃcà skript k vybranému uzlu." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach the script from the selected node." -msgstr "PÅ™ipojit nový, nebo existujÃcà skript k vybranému uzlu." +msgstr "Odpojit skript od vybraného uzlu." #: editor/scene_tree_dock.cpp msgid "Remote" @@ -10846,10 +10804,9 @@ msgstr "MÃstnÃ" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "" +msgstr "Vymazat dÄ›diÄnost? (Nelze vrátit zpÄ›t!)" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Toggle Visible" msgstr "PÅ™epnout viditelnost" @@ -10858,14 +10815,12 @@ msgid "Unlock Node" msgstr "Odemknout uzel" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Button Group" -msgstr "TlaÄÃtko Ä. 7" +msgstr "Skupina tlaÄÃtek" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "(Connecting From)" -msgstr "Chyba pÅ™ipojenÃ" +msgstr "(PÅ™ipojovánà z)" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" @@ -10876,18 +10831,24 @@ msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." msgstr "" +"Uzel má %s pÅ™ipojenà a %s skupin.\n" +"KliknutÃm zobrazÃte panel signálů." #: editor/scene_tree_editor.cpp msgid "" "Node has %s connection(s).\n" "Click to show signals dock." msgstr "" +"Uzel má %s pÅ™ipojenÃ.\n" +"KliknutÃm zobrazÃte panel signálů." #: editor/scene_tree_editor.cpp msgid "" "Node is in %s group(s).\n" "Click to show groups dock." msgstr "" +"Uzel je v %s skupinách.\n" +"KliknutÃm zobrazÃte panel skupin." #: editor/scene_tree_editor.cpp msgid "Open Script:" @@ -10906,6 +10867,8 @@ msgid "" "Children are not selectable.\n" "Click to make selectable." msgstr "" +"DÄ›ti nelze vybrat.\n" +"KliknutÃm umožnÃte jejich vybránÃ." #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" @@ -10916,6 +10879,8 @@ msgid "" "AnimationPlayer is pinned.\n" "Click to unpin." msgstr "" +"AnimationPlayer je pÅ™ipnutý.\n" +"KliknutÃm odepnete." #: editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" @@ -10982,9 +10947,8 @@ msgid "Error loading script from %s" msgstr "Chyba nahrávánà skriptu z %s" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Overrides" -msgstr "PÅ™epsat" +msgstr "PÅ™episuje" #: editor/script_create_dialog.cpp msgid "N/A" @@ -11011,23 +10975,20 @@ msgid "Invalid class name." msgstr "Neplatné jméno tÅ™Ãdy." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid inherited parent name or path." -msgstr "Neplatné jméno vlastnosti." +msgstr "Neplatný název nebo cesta zdÄ›dÄ›né tÅ™Ãdy." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script path/name is valid." -msgstr "Skript je validnÃ." +msgstr "Cesta a jméno skriptu jsou validnÃ." #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9, _ and ." msgstr "Povoleno: a-z, A-Z, 0-9, _ a ." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in script (into scene file)." -msgstr "Možnostà scén." +msgstr "VestavÄ›ný skript (v souboru scény)." #: editor/script_create_dialog.cpp msgid "Will create a new script file." @@ -11046,6 +11007,8 @@ msgid "" "Note: Built-in scripts have some limitations and can't be edited using an " "external editor." msgstr "" +"Poznámka: VestavÄ›né skripty majà urÄitá omezenà a nelze je upravovat pomocà " +"externÃho editoru." #: editor/script_create_dialog.cpp msgid "Class Name:" @@ -11061,7 +11024,7 @@ msgstr "VestavÄ›ný skript:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" -msgstr "" +msgstr "PÅ™ipojit script k uzlu" #: editor/script_editor_debugger.cpp msgid "Remote " @@ -11101,16 +11064,15 @@ msgstr "Zdroj C++:" #: editor/script_editor_debugger.cpp msgid "Stack Trace" -msgstr "" +msgstr "Trasovánà zásobnÃku" #: editor/script_editor_debugger.cpp msgid "Errors" msgstr "Chyby" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Child process connected." -msgstr "Odpojené uzly" +msgstr "PÅ™ipojen proces potomka." #: editor/script_editor_debugger.cpp msgid "Copy Error" @@ -11121,21 +11083,20 @@ msgid "Video RAM" msgstr "Video RAM" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Skip Breakpoints" -msgstr "VytvoÅ™it body." +msgstr "PÅ™eskoÄit breakpointy" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" -msgstr "" +msgstr "Zkontrolovat pÅ™edchozà instanci" #: editor/script_editor_debugger.cpp msgid "Inspect Next Instance" -msgstr "" +msgstr "Zkontrolovat následujÃcà instanci" #: editor/script_editor_debugger.cpp msgid "Stack Frames" -msgstr "" +msgstr "Rámce zásobnÃku" #: editor/script_editor_debugger.cpp msgid "Profiler" @@ -11147,7 +11108,7 @@ msgstr "SÃÅ¥ový profiler" #: editor/script_editor_debugger.cpp msgid "Monitor" -msgstr "" +msgstr "Monitor" #: editor/script_editor_debugger.cpp msgid "Value" @@ -11155,24 +11116,23 @@ msgstr "Hodnota" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "" +msgstr "Monitory" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." -msgstr "" +msgstr "Vyberte jednu nebo vÃce položek ze seznamu pro zobrazenà grafu." #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "" +msgstr "SpotÅ™eba video pamÄ›ti dle zdroje:" #: editor/script_editor_debugger.cpp msgid "Total:" msgstr "Celkem:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Export list to a CSV file" -msgstr "Exportovat profil" +msgstr "Exportovat seznam do CSV" #: editor/script_editor_debugger.cpp msgid "Resource Path" @@ -11196,38 +11156,35 @@ msgstr "Různé" #: editor/script_editor_debugger.cpp msgid "Clicked Control:" -msgstr "" +msgstr "Klikacà ovládacàprvek:" #: editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "" +msgstr "Typ klikacÃho prvku:" #: editor/script_editor_debugger.cpp msgid "Live Edit Root:" -msgstr "" +msgstr "KoÅ™en živých úprav:" #: editor/script_editor_debugger.cpp msgid "Set From Tree" -msgstr "" +msgstr "Nastavit ze stromu" #: editor/script_editor_debugger.cpp msgid "Export measures as CSV" -msgstr "" +msgstr "Exportovat měřenà do CSV" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Erase Shortcut" -msgstr "Zkratky" +msgstr "Smazat zkratky" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Restore Shortcut" -msgstr "Zkratky" +msgstr "Obnovit zkratky" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Change Shortcut" -msgstr "Upravit kotvy" +msgstr "Upravit zkratky" #: editor/settings_config_dialog.cpp msgid "Editor Settings" @@ -11239,7 +11196,7 @@ msgstr "Zkratky" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Vazba" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -11247,7 +11204,7 @@ msgstr "ZmÄ›nit rádius svÄ›tla" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "" +msgstr "ZmÄ›nit úhel vysÃlánà uzlu AudioStreamPlayer3D" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" @@ -11259,68 +11216,63 @@ msgstr "ZmÄ›nit velikost kamery" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier AABB" -msgstr "" +msgstr "ZmÄ›nit AABB Notifier" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "" +msgstr "ZmÄ›nit Äástice AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" -msgstr "" +msgstr "ZmÄ›nit rozsahy Probe" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Sphere Shape Radius" -msgstr "" +msgstr "ZmÄ›nit polomÄ›r Sphere Shape" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Box Shape Extents" -msgstr "" +msgstr "ZmÄ›nit rozsahy Box Shape" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "" +msgstr "ZmÄ›nit polomÄ›r Capsule Shape" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "" +msgstr "ZmÄ›nit výšku Capsule Shape" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Cylinder Shape Radius" -msgstr "ZmÄ›nit rádius svÄ›tla" +msgstr "ZmÄ›nit polomÄ›r Cylinder Shape" #: editor/spatial_editor_gizmos.cpp msgid "Change Cylinder Shape Height" -msgstr "" +msgstr "ZmÄ›nit výšku Cylinder Shape" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "" +msgstr "ZmÄ›nit délku Ray Shape" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Radius" -msgstr "ZmÄ›nit rádius svÄ›tla" +msgstr "ZmÄ›nit polomÄ›r Cylinder" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Height" -msgstr "ZmÄ›nit velikost kamery" +msgstr "ZmÄ›nit výšku Cylinder" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Inner Radius" -msgstr "ZmÄ›nit rádius svÄ›tla" +msgstr "ZmÄ›nit vnitÅ™nà polomÄ›r Torus" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Outer Radius" -msgstr "ZmÄ›nit rádius svÄ›tla" +msgstr "ZmÄ›nit vnÄ›jÅ¡Ã polomÄ›r Torus" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Vybrat dynamickou knihovnu pro tento záznam" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" @@ -11348,7 +11300,7 @@ msgstr "Dynamická knihovna" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "PÅ™idat záznam architektury" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "GDNativeLibrary" @@ -11356,12 +11308,11 @@ msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Enabled GDNative Singleton" -msgstr "" +msgstr "Zapnutý GDNative Singleton" #: modules/gdnative/gdnative_library_singleton_editor.cpp -#, fuzzy msgid "Disabled GDNative Singleton" -msgstr "Vypnout aktualizaÄnà koleÄko" +msgstr "Vypnutý GDNative Singleton" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -11376,7 +11327,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Step argument is zero!" msgstr "Argument kroku je nula!" @@ -11413,30 +11363,28 @@ msgid "Object can't provide a length." msgstr "Objekt nemůže poskytnout délku." #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Next Plane" -msgstr "DalÅ¡Ã záložka" +msgstr "DalÅ¡Ã rovina" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Plane" -msgstr "PÅ™edchozà záložka" +msgstr "PÅ™edchozà rovina" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Plane:" -msgstr "" +msgstr "Rovina:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "" +msgstr "Dalšàpatro" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Previous Floor" -msgstr "" +msgstr "PÅ™edchozà patro" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "" +msgstr "Patro:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Delete Selection" @@ -11456,24 +11404,23 @@ msgstr "Vykreslit GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" -msgstr "" +msgstr "Grid Map" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" -msgstr "" +msgstr "PÅ™ichytit pohled" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Clip Disabled" -msgstr "Vypnuto" +msgstr "Vypnout oÅ™ezávánÃ" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Above" -msgstr "" +msgstr "OÅ™Ãznout nahoÅ™e" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Below" -msgstr "" +msgstr "OÅ™Ãznout dole" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit X Axis" @@ -11489,36 +11436,35 @@ msgstr "Editovat osu Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate X" -msgstr "" +msgstr "X otoÄnà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Y" -msgstr "" +msgstr "Y otoÄenà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Z" -msgstr "" +msgstr "Z otoÄenà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" -msgstr "" +msgstr "ZpÄ›tné X otoÄnà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Y" -msgstr "" +msgstr "ZpÄ›tné Y otoÄnà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Z" -msgstr "" +msgstr "ZpÄ›tné Z otoÄnà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Clear Rotation" -msgstr "" +msgstr "ZruÅ¡it otoÄnà kurzoru" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Paste Selects" -msgstr "Vymazat oznaÄené" +msgstr "Vložit výbÄ›r" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" @@ -11542,7 +11488,7 @@ msgstr "Filtrovat meshe" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." -msgstr "" +msgstr "PÅ™iÅ™aÄte uzlu GridMap zdroj MeshLibrary k použità jeho sÃtÄ›." #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11550,70 +11496,69 @@ msgstr "Název tÅ™Ãdy nemůže být rezervované klÃÄové slovo" #: modules/mono/mono_gd/gd_mono_utils.cpp msgid "End of inner exception stack trace" -msgstr "" +msgstr "Konec zásobnÃku trasovánà vnitÅ™nà výjimky" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Zapéct NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "" +msgstr "Vymazat navigaÄnà sÃÅ¥." #: modules/recast/navigation_mesh_generator.cpp msgid "Setting up Configuration..." -msgstr "" +msgstr "Nastavuji konfiguraci..." #: modules/recast/navigation_mesh_generator.cpp msgid "Calculating grid size..." -msgstr "" +msgstr "PoÄÃtám velikost mřÞky..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating heightfield..." -msgstr "" +msgstr "VytvářÃm výškové pole..." #: modules/recast/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." -msgstr "" +msgstr "VyznaÄuji průchozà trojúhelnÃky..." #: modules/recast/navigation_mesh_generator.cpp msgid "Constructing compact heightfield..." -msgstr "" +msgstr "Konstruuji kompaktnà výškové pole..." #: modules/recast/navigation_mesh_generator.cpp msgid "Eroding walkable area..." -msgstr "" +msgstr "Eroduji průchozà oblast..." #: modules/recast/navigation_mesh_generator.cpp msgid "Partitioning..." -msgstr "" +msgstr "RozdÄ›luji..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating contours..." -msgstr "" +msgstr "VytvářÃm kontury..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "" +msgstr "VytvářÃm polymesh..." #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "" +msgstr "PÅ™evádÃm na nativnà navigaÄnà mřÞku..." #: modules/recast/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "" +msgstr "Nastavenà generátoru navigaÄnà sÃtÄ›:" #: modules/recast/navigation_mesh_generator.cpp msgid "Parsing Geometry..." -msgstr "" +msgstr "Parsuji geometrii..." #: modules/recast/navigation_mesh_generator.cpp msgid "Done!" msgstr "Hotovo!" #: modules/visual_script/visual_script.cpp -#, fuzzy msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" @@ -11622,14 +11567,12 @@ msgstr "" "jak správnÄ› použÃvat yield!" #: modules/visual_script/visual_script.cpp -#, fuzzy msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "Uzel zavolal yield, ale nevrátil stav funkce v prvnà pracovnà pamÄ›ti." #: modules/visual_script/visual_script.cpp -#, fuzzy msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." @@ -11678,10 +11621,8 @@ msgid "Add Output Port" msgstr "PÅ™idat výstupnà port" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Override an existing built-in function." -msgstr "" -"Neplatný název. Nesmà kolidovat s existujÃcÃm jménem zabudovaného typu." +msgstr "Nahradit vÅ¡echny existujÃcà vestavÄ›né funkce." #: modules/visual_script/visual_script_editor.cpp msgid "Create a new function." @@ -11765,29 +11706,25 @@ msgstr "" "Podržte %s k uvolnÄ›nà getteru. Podržte Shift k uvolnÄ›nà generického podpisu." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" -"Podržte Ctrl k uvolnÄ›nà getteru. Podržte Shift k uvolnÄ›nà generického " -"podpisu." +"Podržte Ctrl k vloženà getteru. Podržte Shift k vloženà generické signatury." #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a simple reference to the node." msgstr "Podržte %s k uvolnÄ›nà jednoduché reference na uzel." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold Ctrl to drop a simple reference to the node." msgstr "Podržte Ctrl k uvolnÄ›nà jednoduché reference na uzel." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a Variable Setter." -msgstr "Podržte %s k uvolnÄ›nà jednoduché reference na uzel." +msgstr "Podržte %s k uvolnÄ›nà setteru promÄ›nné." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." -msgstr "" +msgstr "Podržte Ctrl k uvolnÄ›nà setteru promÄ›nné." #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" @@ -11802,6 +11739,8 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" +"Nelze uvolnit vlastnosti, protože skript \"%s\" nenà použit ve scénÄ›.\n" +"PÅ™estaňte držet \"Shift\", pro zkopÃrovánà jeho signatury." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11832,14 +11771,12 @@ msgid "Disconnect Nodes" msgstr "Odpojit uzly" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Data" -msgstr "PÅ™ipojit uzly" +msgstr "PÅ™ipojit data uzlů" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Sequence" -msgstr "PÅ™ipojit uzly" +msgstr "PÅ™ipojit sekvenci uzlů" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" @@ -11855,7 +11792,7 @@ msgstr "ZmÄ›nit velikost komentáře" #: modules/visual_script/visual_script_editor.cpp msgid "Can't copy the function node." -msgstr "" +msgstr "Nelze zkopÃrovat uzel funkce." #: modules/visual_script/visual_script_editor.cpp msgid "Clipboard is empty!" @@ -11867,24 +11804,23 @@ msgstr "Vložit VisualScript uzly" #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function with a function node." -msgstr "" +msgstr "Nelze vytvoÅ™it funkci s uzlem funkce." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "Nelze vytvoÅ™it funkci uzlů z uzlů vÃce funkcÃ." #: modules/visual_script/visual_script_editor.cpp msgid "Select at least one node with sequence port." -msgstr "" +msgstr "Vyberte alespoň jeden uzel s portem sekvencÃ." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Zkus mÃt ozanÄenu pouze jednu vstupnà sekvenci." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "PÅ™ejmenovat funkci" +msgstr "VytvoÅ™it funkci" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11907,9 +11843,8 @@ msgid "Editing Signal:" msgstr "Úprava signálu:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Tool:" -msgstr "MÃstnÃ" +msgstr "EditaÄnà nástroj:" #: modules/visual_script/visual_script_editor.cpp msgid "Members:" @@ -11932,9 +11867,8 @@ msgid "function_name" msgstr "název_funkce" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Select or create a function to edit its graph." -msgstr "Pro úpravu grafu vyber nebo vytvoÅ™ funkci" +msgstr "Vyber nebo vytvoÅ™ funkci pro úpravu jejÃho grafu." #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" @@ -12021,41 +11955,40 @@ msgstr "" "posloupnost), nebo Å™etÄ›zec (chyba)." #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Search VisualScript" -msgstr "Odstranit VisualScript uzel" +msgstr "Hledat VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "PÅ™ijmi %d" #: modules/visual_script/visual_script_property_selector.cpp msgid "Set %s" -msgstr "" +msgstr "Nastav %s" #: platform/android/export/export.cpp msgid "Package name is missing." -msgstr "" +msgstr "Chybà jméno balÃÄku." #: platform/android/export/export.cpp msgid "Package segments must be of non-zero length." -msgstr "" +msgstr "Jméno balÃÄku musà být neprázdné." #: platform/android/export/export.cpp msgid "The character '%s' is not allowed in Android application package names." -msgstr "" +msgstr "Znak '%s' nenà povolen v názvu balÃÄku Android aplikace." #: platform/android/export/export.cpp msgid "A digit cannot be the first character in a package segment." -msgstr "" +msgstr "ÄŒÃslice nemůže být prvnÃm znakem segmentu balÃÄku." #: platform/android/export/export.cpp msgid "The character '%s' cannot be the first character in a package segment." -msgstr "" +msgstr "Znak '%s' nemůže být prvnÃm znakem segmentu balÃÄku." #: platform/android/export/export.cpp msgid "The package must have at least one '.' separator." -msgstr "" +msgstr "BalÃÄek musà mÃt alespoň jeden '.' oddÄ›lovaÄ." #: platform/android/export/export.cpp msgid "Select device from the list" @@ -12063,26 +11996,39 @@ msgstr "Vyberte zaÅ™Ãzenà ze seznamu" #: platform/android/export/export.cpp msgid "ADB executable not configured in the Editor Settings." -msgstr "" +msgstr "Spustitelný ADB nenà nakonfigurovaný v Nastavenà Editoru." #: platform/android/export/export.cpp msgid "OpenJDK jarsigner not configured in the Editor Settings." -msgstr "" +msgstr "OpenJDK jarsigner nenà nakonfigurovaný v Nastavenà Editoru." #: platform/android/export/export.cpp msgid "Debug keystore not configured in the Editor Settings nor in the preset." msgstr "" +"ÚložiÅ¡tÄ› klÃÄů k ladÄ›nà nenà nakonfigurováno v Nastavenà editoru nebo v " +"export profilu." #: platform/android/export/export.cpp msgid "Release keystore incorrectly configured in the export preset." msgstr "" +"ÚložiÅ¡tÄ› klÃÄů pro vydánà je nakonfigurováno nesprávnÄ› v profilu exportu." #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." msgstr "" +"Vlastnà sestavenà vyžaduje správnou cestu k sadÄ› Android SDK v nastavenà " +"editoru." #: platform/android/export/export.cpp msgid "Invalid Android SDK path for custom build in Editor Settings." +msgstr "Nesprávná cesta Android SDK pro vlastnà sestavenà v Nastavenà editoru." + +#: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" msgstr "" #: platform/android/export/export.cpp @@ -12090,63 +12036,93 @@ msgid "" "Android build template not installed in the project. Install it from the " "Project menu." msgstr "" +"Å ablona sestavenà Androidu nenà pro projekt nainstalována. Nainstalujte jej " +"z nabÃdky Projekt." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." -msgstr "" +msgstr "Neplatný veÅ™ejný klÃÄ pro rozÅ¡ÃÅ™enà APK." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid package name:" -msgstr "Neplatné jméno tÅ™Ãdy" +msgstr "Neplatné jméno balÃÄku:" #: platform/android/export/export.cpp msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" msgstr "" +"Neplatný modul \"GodotPaymentV3\" v nastavenà projektu \"Android / moduly" +"\" (zmÄ›nÄ›no v Godot 3.2.2).\n" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." msgstr "" +"Chcete-li použÃvat doplňky, musà být povoleno \"použÃt vlastnà build\"." #: platform/android/export/export.cpp msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." msgstr "" +"\"StupnÄ› svobody\" je platné pouze v pÅ™ÃpadÄ›, že \"Xr Mode\" je \"Oculus " +"Mobile VR\"." #: platform/android/export/export.cpp msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"\"Hand Tracking\" je platné pouze v pÅ™ÃpadÄ›, že \"Režim Xr\" má hodnotu " +"\"Oculus Mobile VR\"." #: platform/android/export/export.cpp msgid "" "\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"\"Focus Awareness\" je platné pouze v pÅ™ÃpadÄ›, že \"Režim Xr\" má hodnotu " +"\"Oculus Mobile VR\"." #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"\"Export AAB\" je validnà pouze v pÅ™ÃpadÄ›, že je povolena možnost \"PoužÃt " +"vlastnà sestavu\"." #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "Neplatné jméno souboru! Android App Bundle vyžaduje pÅ™Ãponu *.aab." + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "RozÅ¡ÃÅ™enà APK nenà kompatibilnà s Android App Bundle." + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "Neplatné jméno souboru! Android APK vyžaduje pÅ™Ãponu *.apk." + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." msgstr "" +"Pokus o sestavenà z vlastnà šablony, ale neexistujà pro ni žádné informace o " +"verzi. PÅ™einstalujte jej z nabÃdky \"Projekt\"." #: platform/android/export/export.cpp msgid "" @@ -12155,52 +12131,58 @@ msgid "" " Godot Version: %s\n" "Please reinstall Android build template from 'Project' menu." msgstr "" +"Neshoda verzà Android buildu:\n" +" Å ablona nainstalována: %s\n" +" Verze Godot: %s\n" +"PÅ™einstalujte Å¡ablonu pro sestavenà systému Android z nabÃdky \"Projekt\"." #: platform/android/export/export.cpp msgid "Building Android Project (gradle)" -msgstr "" +msgstr "Buildovánà projektu pro Android (gradle)" #: platform/android/export/export.cpp msgid "" "Building of Android project failed, check output for the error.\n" "Alternatively visit docs.godotengine.org for Android build documentation." msgstr "" +"Buildovánà projektu pro Android se nezdaÅ™ilo, zkontrolujte chybový výstup.\n" +"PÅ™ÃpadnÄ› navÅ¡tivte dokumentaci o build pro Android na docs.godotengine.org." #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "PÅ™esunout výstup" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Nelze kopÃrovat Äi pÅ™ejmenovat exportovaný soubor, zkontrolujte výstupy v " +"adresáři projektu gradle." #: platform/iphone/export/export.cpp msgid "Identifier is missing." -msgstr "" +msgstr "Chybà identifikátor." #: platform/iphone/export/export.cpp -#, fuzzy msgid "The character '%s' is not allowed in Identifier." -msgstr "Jméno nenà platný identifikátor:" +msgstr "Znak '%s' nenà dovolen v identifikátoru." #: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." -msgstr "" +msgstr "App Store Team ID nebyla poskytnuta - projekt nelze konfigurovat." #: platform/iphone/export/export.cpp -#, fuzzy msgid "Invalid Identifier:" -msgstr "Jméno nenà platný identifikátor:" +msgstr "Neplatný identifikátor:" #: platform/iphone/export/export.cpp msgid "Required icon is not specified in the preset." -msgstr "" +msgstr "V profilu nenà nastavena požadovaná ikona." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Zastavit HTTP Server" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -12223,34 +12205,28 @@ msgid "Invalid export template:" msgstr "Neplatná Å¡ablona pro export:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read custom HTML shell:" -msgstr "Nelze vytvoÅ™it složku." +msgstr "Nebylo možné pÅ™eÄÃst HTML shell:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read boot splash image file:" -msgstr "Nelze vytvoÅ™it složku." +msgstr "Nebylo možné naÄÃst soubor splash obrázku:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Using default boot splash image." -msgstr "Nelze vytvoÅ™it složku." +msgstr "PoužÃvám výchozà splash obrázek." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package short name." -msgstr "Neplatné jméno tÅ™Ãdy" +msgstr "Neplatné krátké jméno balÃÄku." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package unique name." -msgstr "Neplatný unikátnà název." +msgstr "Neplatný unikátnà název balÃÄku." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package publisher display name." -msgstr "Neplatný unikátnà název." +msgstr "Neplatný unikátnà název vydavatele balÃÄku." #: platform/uwp/export/export.cpp msgid "Invalid product GUID." @@ -12293,13 +12269,12 @@ msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "Neplatné rozmÄ›ry obrázku uvÃtacà obrazovky (mÄ›ly by být 620x300)." #: scene/2d/animated_sprite.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the \"Frames\" property in " "order for AnimatedSprite to display frames." msgstr "" "Aby AnimatedSprite mohl zobrazovat snÃmky, zdroj SpriteFrames musà být " -"vytvoÅ™en nebo nastaven v vlastnosti 'Frames'." +"vytvoÅ™en nebo nastaven v vlastnosti \"Frames\"." #: scene/2d/canvas_modulate.cpp msgid "" @@ -12348,30 +12323,33 @@ msgstr "" "jejich tvaru." #: scene/2d/collision_shape_2d.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" -msgstr "CollisionShape2D musà obsahovat tvar. ProsÃm vytvoÅ™te zdrojový tvar." +msgstr "" +"CollisionShape2D funkce musà obsahovat tvar. ProsÃm vytvoÅ™te zdrojový tvar!" #: 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 "" +"Polygonové tvary nejsou urÄeny k použità nebo úpravám pÅ™Ãmo prostÅ™ednictvÃm " +"uzlu CollisionShape2D. Použijte uzel CollisionPolygon2D." #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animace CPUParticles2D vyžaduje použità CanvasItemMaterial se zapnutým " +"\"Particles Animation\"." #: scene/2d/light_2d.cpp -#, fuzzy msgid "" "A texture with the shape of the light must be supplied to the \"Texture\" " "property." -msgstr "Textura svÄ›tla musà být nastavena vlastnostà 'texture'." +msgstr "Textura tvaru svÄ›tla musà být nastavena vlastnostà 'texture'." #: scene/2d/light_occluder_2d.cpp msgid "" @@ -12381,7 +12359,7 @@ msgstr "" #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon." -msgstr "" +msgstr "StÃnový polygon pro toto stÃnÃtko je prázdný. Nakreslete polygon." #: scene/2d/navigation_polygon.cpp msgid "" @@ -12411,18 +12389,24 @@ msgid "" "Use the CPUParticles2D node instead. You can use the \"Convert to " "CPUParticles\" option for this purpose." msgstr "" +"Grafický ovladaÄ GLES2 nepodporuje Äástice založené na GPU.\n" +"Použijte uzel CPUParticles2D. Na pÅ™evod lze použÃt \"PÅ™evést na CPUParticles" +"\"." #: 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 "" +"Nebyl pÅ™iÅ™azen žádný materiál pro zpracovánà Äástic, takže nebudou viditelné." #: scene/2d/particles_2d.cpp msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animace Particles2D vyžaduje použità CanvasItemMaterial se zapnutou funkcà " +"\"Animace Äástic\"." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -12434,6 +12418,9 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" +"ZmÄ›ny velikosti v RigidBody2D (ve znakovém nebo rigidnÃm režimu) budou za " +"bÄ›hu pÅ™epsány fyzikálnÃm enginem.\n" +"Změňte velikost koliznÃch tvarů v uzlech potomků." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -12442,65 +12429,68 @@ msgstr "" #: scene/2d/skeleton_2d.cpp msgid "This Bone2D chain should end at a Skeleton2D node." -msgstr "" +msgstr "Tento Bone2D Å™etÄ›z by mÄ›l konÄit uzlem Skeleton2D." #: scene/2d/skeleton_2d.cpp msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." msgstr "" +"Uzel Bone2D funguje pouze s nadÅ™azeným uzlem Skeleton2D nebo jiným Bone2D." #: scene/2d/skeleton_2d.cpp msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." msgstr "" +"Této kosti chybà správná klidová póza. PÅ™ejdÄ›te na uzel Skeleton2D a " +"nastavte jej." #: scene/2d/tile_map.cpp -#, fuzzy 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 "" -"CollisionPolygon2D sloužà pouze jako kontejner tvarů objektu " -"CollissionObject2D a od nÄ›j odvozených uzlů. Použijte ho pouze jako potomka " -"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D a dalÅ¡Ãch, pro urÄenà " -"jejich tvaru." +"TileMap \"Use Parent\" potÅ™ebuje nadÅ™azený CollisionObject2D uzel. Použijte " +"ho pouze jako potomka Area2D, StaticBody2D, RigidBody2D, KinematicBody2D a " +"dalÅ¡Ãch, pro urÄenà jejich tvaru." #: scene/2d/visibility_notifier_2d.cpp -#, fuzzy msgid "" "VisibilityEnabler2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D funguje nejlépe, když je nastaven jako rodiÄ editované " -"scény." +"VisibilityEnable2D funguje nejlépe, když je pÅ™Ãmo pod koÅ™enem aktuálnÄ› " +"upravované scény." #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRCamera musà mÃt uzel ARVROrigin jako rodiÄe." #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRController musà mÃt uzel ARVROrigin jako rodiÄe." #: 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 "" +"ID ovladaÄe nemůže být 0, jinak nebude ovladaÄ pÅ™iÅ™azen žádnému skuteÄnému " +"ovladaÄi." #: scene/3d/arvr_nodes.cpp msgid "ARVRAnchor must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRAnchor musà mÃt uzel ARVROrigin jako rodiÄe." #: 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 "" +"ID kotvy nemůže být 0, jinak tato kotva nebude pÅ™iÅ™azena skuteÄné kotvÄ›." #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node." -msgstr "" +msgstr "ARVROrigin musà mÃt uzel ARVRCamera jako potomka." #: scene/3d/baked_lightmap.cpp msgid "%d%%" @@ -12512,19 +12502,19 @@ msgstr "(ZbývajÃcà Äas: %d:%02d s)" #: scene/3d/baked_lightmap.cpp msgid "Plotting Meshes: " -msgstr "" +msgstr "Vykreslenà mřÞek: " #: scene/3d/baked_lightmap.cpp msgid "Plotting Lights:" -msgstr "" +msgstr "Vykreslenà svÄ›tel:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" -msgstr "" +msgstr "DokonÄovánà vykreslenÃ" #: scene/3d/baked_lightmap.cpp msgid "Lighting Meshes: " -msgstr "" +msgstr "OsvÄ›tlenà sÃtÃ: " #: scene/3d/collision_object.cpp msgid "" @@ -12562,53 +12552,58 @@ msgstr "" "a KinematicBody, abyste jim dali tvar." #: scene/3d/collision_shape.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." msgstr "" "Aby CollisionShape mohl fungovat, musà mu být poskytnut tvar. VytvoÅ™te mu " -"prosÃm zdroj tvar!" +"prosÃm zdroj tvar." #: 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 "" +"Tvary Plane nepracujà dobÅ™e a budou v budoucÃm vydánà odstranÄ›ny. " +"NepoužÃvejte je." #: scene/3d/collision_shape.cpp msgid "" "ConcavePolygonShape doesn't support RigidBody in another mode than static." -msgstr "" +msgstr "ConcavePolygonShape nepodporuje uzel RigidBody v nestatickém režimu." #: scene/3d/cpu_particles.cpp msgid "Nothing is visible because no mesh has been assigned." -msgstr "" +msgstr "Nic nenà zobrazeno, protože nebyla pÅ™iÅ™azena žádná mřÞka." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial whose " "Billboard Mode is set to \"Particle Billboard\"." msgstr "" +"Animace CPUParticles vyžaduje použità SpatialMaterial, jehož režim Billboard " +"je nastaven na \"Particle Billboard\"." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" -msgstr "" +msgstr "Vykreslenà sÃtÃ" #: scene/3d/gi_probe.cpp msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" +"Video driver GLES2 nepodporuje GIProby.\n" +"MÃsto toho použijte BakedLightmap." #: scene/3d/interpolated_camera.cpp msgid "" "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." -msgstr "" +msgstr "Uzel InterpolatedCamera je zastaralý a bude odstranÄ›n v Godot 4.0." #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." -msgstr "" +msgstr "SpotLight s úhlem Å¡irÅ¡Ãm než 90 stupňů nemůže vrhat stÃny." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -12630,17 +12625,23 @@ msgid "" "Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" "\" option for this purpose." msgstr "" +"Video driver GLES2 nepodporuje Äástice na GPU.\n" +"MÃsto toho použijte uzel CPUParticles. K pÅ™evodu můžete použÃt \"PÅ™evést na " +"CPUParticles\"." #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" +"Nic nenà viditelné, protože mřÞky nebyly pÅ™iÅ™azeny do vykreslovacà fronty." #: scene/3d/particles.cpp msgid "" "Particles animation requires the usage of a SpatialMaterial whose Billboard " "Mode is set to \"Particle Billboard\"." msgstr "" +"Animace Äástic vyžaduje použità SpatialMaterial, kde režim Billboard je " +"nastaven na \"Částicový billboard\"." #: scene/3d/path.cpp msgid "PathFollow only works when set as a child of a Path node." @@ -12651,6 +12652,8 @@ msgid "" "PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " "parent Path's Curve resource." msgstr "" +"Vlastnost ROTATION_ORIENTED uzlu PathFollow vyžaduje povolenà \"Up Vector\" " +"ve zdroji Curve nadÅ™azeného uzlu Path." #: scene/3d/physics_body.cpp msgid "" @@ -12658,19 +12661,21 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" +"ZmÄ›ny velikosti v RigidBody (ve znakovém nebo rigidnÃm režimu) budou za bÄ›hu " +"pÅ™epsány fyzikálnÃm enginem.\n" +"Změňte velikost koliznÃch tvarů v uzlech potomků." #: scene/3d/remote_transform.cpp -#, fuzzy msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." msgstr "" -"Aby ParticleAttractor2D fungoval, musà vlastnost path ukazovat na platný " -"uzel Particles2D." +"Vlastnost \"Remote Path\" musà ukazovat na platný Spatial nebo Spatial-" +"derived uzel." #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh." -msgstr "" +msgstr "Toto tÄ›lo bude ignorováno dokud nenastavÃte sÃÅ¥." #: scene/3d/soft_body.cpp msgid "" @@ -12678,16 +12683,15 @@ msgid "" "running.\n" "Change the size in children collision shapes instead." msgstr "" -"ZmÄ›ny velikosti SoftBody budou za bÄ›hu pÅ™epsány fyzikálnÃm enginem.\n" -"Změňte mÃsto nÄ›ho velikost koliznÃch tvarů potomků." +"ZmÄ›ny velikosti v SoftBody budou za bÄ›hu pÅ™epsány fyzikálnÃm enginem.\n" +"Změňte velikost koliznÃch tvarů v uzlech potomků." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the \"Frames\" property in " "order for AnimatedSprite3D to display frames." msgstr "" -"Zdroj SpriteFrames musà být vytvoÅ™en nebo nastaven ve vlastnosti 'Frames', " +"Zdroj SpriteFrames musà být vytvoÅ™en nebo nastaven ve vlastnosti \"Frames\", " "aby mohl AnimatedSprite3D zobrazit rámeÄky." #: scene/3d/vehicle_body.cpp @@ -12703,6 +12707,8 @@ msgid "" "WorldEnvironment requires its \"Environment\" property to contain an " "Environment to have a visible effect." msgstr "" +"WorldEnvironment vyžaduje nastavenou vlastnost \"ProstÅ™edÃ\", aby mÄ›l " +"viditelný efekt." #: scene/3d/world_environment.cpp msgid "" @@ -12716,10 +12722,12 @@ 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 "" +"Tento WorldEnvironment je ignorován. BuÄ pÅ™idejte kameru (pro 3D scény) nebo " +"nastavte plátnu tohoto prostÅ™edà Režim pozadà (pro 2D scény)." #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" -msgstr "" +msgstr "Na uzlu BlendTree \"%s\" nebyla nalezena animace: \"%s\"" #: scene/animation/animation_blend_tree.cpp msgid "Animation not found: '%s'" @@ -12734,31 +12742,28 @@ msgid "Invalid animation: '%s'." msgstr "Neplatná animace: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Nothing connected to input '%s' of node '%s'." -msgstr "Odpojit '%s' od '%s'" +msgstr "Nic nenà pÅ™ipojeno do vstupu '%s' uzlu '%s'." #: scene/animation/animation_tree.cpp msgid "No root AnimationNode for the graph is set." -msgstr "" +msgstr "Nenà nastaven žádný koÅ™en grafu AnimationNode." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Path to an AnimationPlayer node containing animations is not set." -msgstr "Pro úpravu animacà vyberte ze stromu scény uzel AnimationPlayer." +msgstr "Cesta k uzlu AnimationPlayer obsahujÃcà animace nenà nastavena." #: scene/animation/animation_tree.cpp msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." -msgstr "" +msgstr "Cesta k AnimationPlayer nevede k uzlu AnimationPlayer." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "The AnimationPlayer root node is not a valid node." -msgstr "Strom animace je neplatný." +msgstr "KoÅ™enový uzel AnimationPlayer nenà platný uzel." #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." -msgstr "" +msgstr "Podpora tohoto uzlu byla ukonÄena. Použijte mÃsto nÄ›ho AnimationTree." #: scene/gui/color_picker.cpp msgid "" @@ -12766,11 +12771,13 @@ msgid "" "LMB: Set color\n" "RMB: Remove preset" msgstr "" +"Barva: #%s\n" +"LTM: Nastavit barvu\n" +"PTM: Odstranit pÅ™ednastavenÃ" #: scene/gui/color_picker.cpp -#, fuzzy msgid "Pick a color from the editor window." -msgstr "Vyberte barvu z obrazovky." +msgstr "Vyberte barvu z okna editoru." #: scene/gui/color_picker.cpp msgid "HSV" @@ -12794,12 +12801,18 @@ msgid "" "children placement behavior.\n" "If you don't intend to add a script, use a plain Control node instead." msgstr "" +"Kontejner sám o sobÄ› nesloužà žádnému úÄelu, pokud nÄ›jaký skript " +"nenakonfiguruje nastavenà podÅ™Ãzených uzlů.\n" +"Pokud se chystáte pÅ™idat skript, použijte běžný ovládacà uzel." #: 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 "" +"Tip nápovÄ›dy se nezobrazÃ, protože filtr myÅ¡i je nastaven na \"Ignorovat\". " +"Chcete-li tento problém vyÅ™eÅ¡it, nastavte filtr myÅ¡i na \"Stop\" nebo \"Pass" +"\"." #: scene/gui/dialogs.cpp msgid "Alert!" @@ -12810,7 +12823,6 @@ msgid "Please Confirm..." msgstr "PotvrÄte prosÃm..." #: scene/gui/popup.cpp -#, fuzzy 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 " @@ -12821,9 +12833,9 @@ msgstr "" "budou skryty." #: scene/gui/range.cpp -#, fuzzy msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "Pokud má exp_edit hodnotu true, pak min_value musà být > 0." +msgstr "" +"Pokud má \"Exp Edit\" hodnotu true, pak \"Min Value\" musà být vÄ›tÅ¡Ã než 0." #: scene/gui/scroll_container.cpp msgid "" @@ -12831,13 +12843,15 @@ msgid "" "Use a container as child (VBox, HBox, etc.), or a Control and set the custom " "minimum size manually." msgstr "" +"ScrollContainer je navržen tak, aby běžel s jednÃm ovládacÃm potomkem.\n" +"Použijte kontejner (VBox, HBox atd.) nebo uzel Control jako potomka a " +"nastavte minimálnà velikost ruÄnÄ›." #: scene/gui/tree.cpp msgid "(Other)" msgstr "(OstatnÃ)" #: scene/main/scene_tree.cpp -#, fuzzy msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." @@ -12871,9 +12885,8 @@ msgid "Invalid source for shader." msgstr "Neplatný zdroj pro shader." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid comparison function for that type." -msgstr "Neplatný zdroj pro shader." +msgstr "Neplatná funkce pro porovnánà tohoto typu." #: servers/visual/shader_language.cpp msgid "Assignment to function." @@ -12891,6 +12904,12 @@ msgstr "OdliÅ¡nosti mohou být pÅ™iÅ™azeny pouze ve vertex funkci." msgid "Constants cannot be modified." msgstr "Konstanty nenà možné upravovat." +#~ msgid "Error trying to save layout!" +#~ msgstr "Chyba pÅ™i pokusu uložit rozloženÃ!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Výchozà rozloženà editoru pÅ™epsáno." + #~ msgid "Move pivot" #~ msgstr "PÅ™emÃstit pivot" diff --git a/editor/translations/da.po b/editor/translations/da.po index 86e6965237..f96f3c5905 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -1081,14 +1081,18 @@ msgstr "Ejere af:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Fjern de valgte filer fra projektet? (ej fortrydes)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "De filer der fjernes er nødvendige for, at andre ressourcer kan fungere.\n" "Fjern dem alligevel? (ej fortrydes)" @@ -2393,19 +2397,25 @@ msgid "Error saving TileSet!" msgstr "Fejl, kan ikke gemme TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Fejl, under forsøg pÃ¥ at gemme layout!" +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." -msgstr "Standard editor layout overskrevet." +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 "Layout navn er ikke fundet!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Gendannet standardlayout til grundindstillinger." #: editor/editor_node.cpp @@ -3868,6 +3878,11 @@ msgstr "Flyt Til..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Flyt Autoload" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Ny Scene" @@ -12340,6 +12355,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12385,6 +12408,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13138,6 +13177,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke ændres." +#~ msgid "Error trying to save layout!" +#~ msgstr "Fejl, under forsøg pÃ¥ at gemme layout!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Standard editor layout overskrevet." + #, fuzzy #~ msgid "Move pivot" #~ msgstr "Fjern punkt" diff --git a/editor/translations/de.po b/editor/translations/de.po index ef5f8499ef..9800366eb2 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -61,12 +61,13 @@ # Leon Marz <leon.marz@kabelmail.de>, 2020. # Patric Wust <patric.wust@gmx.de>, 2020. # Jonathan Hassel <jonathan.hassel@icloud.com>, 2020. +# Artur Schönfeld <schoenfeld.artur@ymail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-07 14:20+0000\n" -"Last-Translator: Günther Bohn <ciscouser@gmx.de>\n" +"PO-Revision-Date: 2020-11-17 11:07+0000\n" +"Last-Translator: Artur Schönfeld <schoenfeld.artur@ymail.com>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -74,7 +75,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1088,16 +1089,21 @@ msgid "Owners Of:" msgstr "Besitzer von:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Ausgewählte Dateien aus dem Projekt entfernen? (Kann nicht rückgängig " "gemacht werden)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Andere Ressourcen benötigen die zu entfernenden Dateien, um richtig zu " "funktionieren.\n" @@ -1656,34 +1662,32 @@ msgstr "" "Fallback Enabled‘ ausschalten." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"Die Zielplattform benötigt ‚ETC‘-Texturkompression für GLES2. Bitte in den " -"Projekteinstellungen ‚Import Etc‘ aktivieren." +"Die Zielplattform benötigt ‚PVRTC‘-Texturkompression für GLES2. Bitte in den " +"Projekteinstellungen ‚Import Pvrtc‘ aktivieren." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"Die Zielplattform benötigt ‚ETC2‘-Texturkompression für GLES2. Bitte in den " -"Projekteinstellungen aktivieren." +"Die Zielplattform benötigt ‚ETC2‘- oder ‚PVRTC’-Texturkompression für GLES2. " +"Bitte in den Projekteinstellungen ‚Import Etc 2‘ oder ‚Import Pvrtc‘ " +"aktivieren." #: editor/editor_export.cpp -#, fuzzy 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 "" -"Die Zielplattform benötigt ‚ETC‘-Texturkompression für den Treiber-Fallback " -"auf GLES2. \n" -"Bitte ‚Import Etc‘ in den Projekteinstellungen aktivieren oder ‚Driver " +"Die Zielplattform benötigt ‚PVRTC‘-Texturkompression für den Treiber-" +"Fallback auf GLES2. \n" +"Bitte ‚Import Pvrtc‘ in den Projekteinstellungen aktivieren oder ‚Driver " "Fallback Enabled‘ ausschalten." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2369,19 +2373,25 @@ msgid "Error saving TileSet!" msgstr "Fehler beim Speichern des TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Fehler beim Speichern des Layouts!" +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." -msgstr "Standard-Editorlayout überschrieben." +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 "Layout-Name nicht gefunden!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Layout wurde auf die Standardeinstellungen zurückgesetzt." #: editor/editor_node.cpp @@ -3830,6 +3840,11 @@ msgid "Move To..." msgstr "Verschiebe zu..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Autoload verschieben" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Neue Szene…" @@ -5299,50 +5314,43 @@ msgstr "Neue horizontale und vertikale Hilfslinien erstellen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Pivot-Offset des CanvasItems „%s“ auf (%d, %d) setzen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "CanvasItem rotieren" +msgstr "%d CanvasItems rotieren" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "CanvasItem rotieren" +msgstr "CanvasItem „%s“ auf %d Grad rotieren" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "CanvasItem verschieben" +msgstr "Anker des CanvasItems „%s“ verschieben" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Node2D „%s“ auf (%s, %s) skalieren" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Control „%s“ auf (%d, %d) skalieren" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "CanvasItem skalieren" +msgstr "%d CanvasItems skalieren" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "CanvasItem skalieren" +msgstr "CanvasItem „%s“ auf (%s, %s) skalieren" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "CanvasItem verschieben" +msgstr "%d CanvasItems verschieben" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "CanvasItem verschieben" +msgstr "CanvasItem „%s“ zu (%d, d%) verschieben" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5754,11 +5762,11 @@ msgid "" "Keys are only added to existing tracks, no new tracks will be created.\n" "Keys must be inserted manually for the first time." msgstr "" -"Füge automatisiert Schlüsselbilder ein wenn Objekte verschoben, rotiert oder " -"skaliert werden (basierend auf Maske).\n" +"Füge automatisiert Schlüsselbilder ein, wenn Objekte verschoben, rotiert " +"oder skaliert werden (basierend auf Maske).\n" "Schlüsselbilder werden nur in existierende Spuren eingefügt, es werden keine " "neuen Spuren angelegt.\n" -"Das erste mal müssen Schlüsselbilder manuell eingefügt werden." +"Beim ersten Mal müssen Schlüsselbilder manuell eingefügt werden." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Auto Insert Key" @@ -6301,7 +6309,7 @@ msgstr "Aufwärts-Achse des Meshs:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "Zufällige Rotation:" +msgstr "Zufällige Drehung:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" @@ -6309,7 +6317,7 @@ msgstr "Zufälliges Kippen:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" -msgstr "Zufällige Skalierung:" +msgstr "Zufälliges Skalieren:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate" @@ -6631,16 +6639,14 @@ msgid "Move Points" msgstr "Punkte Verschieben" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Ziehen = Rotieren" +msgstr "Strg: Rotieren" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: Alle verschieben" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" msgstr "Shift+Strg: Skalieren" @@ -6689,14 +6695,12 @@ msgid "Radius:" msgstr "Radius:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Polygon und UV erstellen" +msgstr "Polygon zu UV kopieren" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Zu Polygon2D umwandeln" +msgstr "Polygon zu UV kopieren" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8251,13 +8255,12 @@ msgid "Paint Tile" msgstr "Kachel zeichnen" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Umsch+RMT: Linie zeichnen\n" -"Umsch+Strg+RMT: Rechteck bemalen" +"Umsch+LMT: Linie zeichnen\n" +"Umsch+Strg+LMT: Rechteck bemalen" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8788,9 +8791,8 @@ msgid "Add Node to Visual Shader" msgstr "Visual Shader-Node hinzufügen" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Node verschoben" +msgstr "Node(s) verschoben" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8810,9 +8812,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Visual-Shader-Eingabetyp geändert" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Uniform-Name festlegen" +msgstr "UniformRef-Name geändert" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9531,7 +9532,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Eine Referenz zu einem existierenden Uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -10550,7 +10551,7 @@ msgstr "Aktueller Szenenname" #: editor/rename_dialog.cpp msgid "Root node name" -msgstr "Name des Root-Nodes" +msgstr "Name des Wurzel-Nodes" #: editor/rename_dialog.cpp msgid "" @@ -10758,7 +10759,7 @@ msgstr "Node „%s“ löschen?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." -msgstr "Lässt sich nicht an Root-Node ausführen." +msgstr "Lässt sich nicht an Wurzel-Node ausführen." #: editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." @@ -10924,7 +10925,7 @@ msgid "" "exists." msgstr "" "Instantiiere eine Szenendatei als Node. Erzeugt eine geerbte Szene falls " -"kein Root-Node existiert." +"kein Wurzel-Node existiert." #: editor/scene_tree_dock.cpp msgid "Attach a new or existing script to the selected node." @@ -12180,6 +12181,14 @@ msgstr "" "Ungültiger Android-SDK-Pfad für eigene Builds in den Editoreinstellungen." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12232,19 +12241,38 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "„Export AAB“ ist nur gültig wenn „Use Custom Build“ aktiviert ist." + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." msgstr "" #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"Ungültiger Dateiname. Android App Bundles benötigen .aab als " +"Dateinamenendung." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "APK-Expansion ist nicht kompatibel mit Android App Bundles." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." msgstr "" +"Ungültiger Dateiname. Android APKs benötigen .apk als Dateinamenendung." #: platform/android/export/export.cpp msgid "" @@ -12283,13 +12311,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Verschiebe Ausgabe" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Exportdatei kann nicht kopiert und umbenannt werden. Fehlermeldungen sollten " +"im Gradle Projektverzeichnis erscheinen." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13075,6 +13105,12 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." msgid "Constants cannot be modified." msgstr "Konstanten können nicht verändert werden." +#~ msgid "Error trying to save layout!" +#~ msgstr "Fehler beim Speichern des Layouts!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Standard-Editorlayout überschrieben." + #~ msgid "Move pivot" #~ msgstr "Pivotpunkt bewegen" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index f32995d2e6..818ad7ea7a 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -995,14 +995,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2227,11 +2230,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2239,7 +2247,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3578,6 +3586,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11554,6 +11566,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11598,6 +11618,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index b006707169..1a8e7501ee 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -1040,14 +1040,19 @@ msgid "Owners Of:" msgstr "Ιδιοκτήτες του:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "ΑφαίÏεση επιλεγμÎνων αÏχείων από το ÎÏγο; (Αδυναμία αναίÏεσης)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Τα αÏχεία που αφαιÏοÏνται απαιτοÏνται από άλλους πόÏους για να δουλÎψουν.\n" "Îα αφαιÏεθοÏν; (ΑδÏνατη η αναίÏεση)" @@ -2314,19 +2319,25 @@ msgid "Error saving TileSet!" msgstr "Σφάλμα κατά την αποθήκευση TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Σφάλμα κατά την αποθήκευση διάταξης!" +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." -msgstr "Η Ï€ÏοεπιλεγμÎνη διάταξη του editor Îχει παÏακαμφθεί." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "ΕπαναφοÏά της Ï€ÏοεπιλεγμÎνης διάταξης στις βασικÎÏ‚ Ïυθμίσεις." #: editor/editor_node.cpp @@ -3780,6 +3791,11 @@ msgid "Move To..." msgstr "Μετακίνηση σε..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Μετακίνηση AutoLoad" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "ÎÎα Σκηνή..." @@ -12137,6 +12153,14 @@ msgstr "" "ΕπεξεÏγαστή." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12192,6 +12216,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13016,6 +13056,12 @@ msgstr "Τα «varying» μποÏοÏν να ανατεθοÏν μόνο στηΠmsgid "Constants cannot be modified." msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏοποποιηθοÏν." +#~ msgid "Error trying to save layout!" +#~ msgstr "Σφάλμα κατά την αποθήκευση διάταξης!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Η Ï€ÏοεπιλεγμÎνη διάταξη του editor Îχει παÏακαμφθεί." + #~ msgid "Move pivot" #~ msgstr "Μετακίνηση πηγαίου σημείου" diff --git a/editor/translations/eo.po b/editor/translations/eo.po index 3e99fade73..8f1b586a9a 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -1035,14 +1035,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2292,20 +2295,24 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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 -#, fuzzy -msgid "Default editor layout overridden." -msgstr "Automatan aranÄon de editilo transpasis." +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 default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3688,6 +3695,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nova sceno..." @@ -11734,6 +11745,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11778,6 +11797,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12452,6 +12487,10 @@ msgid "Constants cannot be modified." msgstr "Konstantoj ne povas esti modifitaj." #, fuzzy +#~ msgid "Default editor layout overridden." +#~ msgstr "Automatan aranÄon de editilo transpasis." + +#, fuzzy #~ msgid "Pack File" #~ msgstr "Malfermi dosieron" diff --git a/editor/translations/es.po b/editor/translations/es.po index ceaf9b9c7b..2922f2f4cf 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -56,8 +56,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-15 17:26+0000\n" -"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" +"PO-Revision-Date: 2020-11-15 12:43+0000\n" +"Last-Translator: Victor S. <victorstancioiu@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -65,7 +65,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1085,15 +1085,20 @@ msgid "Owners Of:" msgstr "Propietarios De:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "¿Eliminar los archivos seleccionados del proyecto? (No puede ser restaurado)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Otros recursos necesitan los archivos que estás intentando quitar para " "funcionar.\n" @@ -1651,35 +1656,32 @@ msgstr "" "Enabled'." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"La plataforma de destino requiere compresión de texturas 'ETC' para GLES2. " -"Activa 'Import Etc' en Ajustes del Proyecto." +"La plataforma de destino requiere compresión de texturas 'PVRTC' para GLES2. " +"Activa 'Import Pvrtc' en Ajustes del Proyecto." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"La plataforma de destino requiere compresión de texturas 'ETC2' para GLES3. " -"Activa 'Import Etc 2' en Ajustes del Proyecto." +"La plataforma de destino requiere compresión de texturas 'ETC2' o 'PVRTC' " +"para GLES3. Activa 'Import Etc 2' o 'Import Pvrtc' en Ajustes del Proyecto." #: editor/editor_export.cpp -#, fuzzy 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 "" -"La plataforma de destino requiere compresión de texturas 'ETC' para usar " -"GLES2 como controlador de respaldo.\n" -"Activa 'Import Etc' en Ajustes del Proyecto, o desactiva 'Driver Fallback " -"Enabled'." +"La plataforma del objetivo requiere compresión de texturas 'PVRTC' para el " +"driver fallback de GLES2.\n" +"Activa Import Pvrtc' en la Ajustes del Proyecto, o desactiva 'Driver " +"Fallback Enabled'." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2364,19 +2366,25 @@ msgid "Error saving TileSet!" msgstr "¡Error al guardar el TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "¡Error al guardar el layout!" +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." -msgstr "Se ha sobreescrito el layout del editor por defecto." +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 "¡Nombre de layout no encontrado!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Se restauró el layout por defecto a su configuración básica." #: editor/editor_node.cpp @@ -3830,6 +3838,11 @@ msgid "Move To..." msgstr "Mover a..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Mover Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nueva Escena..." @@ -5297,50 +5310,43 @@ msgstr "Crear GuÃas Horizontales y Verticales" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Ajusta el Offset del pivote del CanvasItem \"%s\" a (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Rotar CanvasItem" +msgstr "Rotar %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Rotar CanvasItem" +msgstr "Rotar CanvasItem \"%s\" a %d grados" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Mover CanvasItem" +msgstr "Mover Ancla del CanvasItem \"%s\"" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Escalar Node2D \"%s\" a (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Redimensionar Control \"%s\" a (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Escalar CanvasItem" +msgstr "Escalar %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Escalar CanvasItem" +msgstr "Escalar CanvasItem \"%s\" a (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "Mover CanvasItem" +msgstr "Mover %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "Mover CanvasItem" +msgstr "Mover CanvasItem \"%s\" a (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6629,18 +6635,16 @@ msgid "Move Points" msgstr "Mover Puntos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Arrastrar: Rotar" +msgstr "Comando: Rotar" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: Mover todos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift + Ctrl: Escalar" +msgstr "Shift+Command: Escalar" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6689,14 +6693,12 @@ msgid "Radius:" msgstr "Radio:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Crear PolÃgono y UV" +msgstr "Copiar PolÃgono a UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Convertir a Polygon2D" +msgstr "Copiar UV al PolÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8243,13 +8245,12 @@ msgid "Paint Tile" msgstr "Dibujar Tile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift + Clic izq: Dibujar lÃnea\n" -"Shift + Ctrl + Clic izq: Pintar Rectángulo" +"Shift+Clic izq: Dibujar lÃnea\n" +"Shift+Command+Clic der: Pintar Rectángulo" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8766,7 +8767,7 @@ msgstr "Redimensionar nodo VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" -msgstr "Establecer Nombre Uniforme" +msgstr "Establecer Nombre de Uniform" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Input Default Port" @@ -8777,9 +8778,8 @@ msgid "Add Node to Visual Shader" msgstr "Añadir Nodo al Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Nodo Movido" +msgstr "Nodo(s) Movido(s)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8799,9 +8799,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Cambiar Tipo de Entrada del Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Establecer Nombre Uniforme" +msgstr "Cambio de Nombre de UniformRef" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9522,7 +9521,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Una referencia a un uniform existente." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -11598,7 +11597,7 @@ msgstr "Eliminar Rotación del Cursor" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Paste Selects" -msgstr "Pegar Seleccionados" +msgstr "Pegar Selecciona" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" @@ -12174,6 +12173,14 @@ msgstr "" "Configuración del Editor." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12225,18 +12232,36 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"\"Export AAB\" sólo es válido cuando \"Use Custom Build\" está activado." + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"¡Nombre de archivo inválido! Android App Bundle requiere la extensión *.aab." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "La Expansión APK no es compatible con Android App Bundle." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." -msgstr "" +msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk." #: platform/android/export/export.cpp msgid "" @@ -12275,13 +12300,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Moviendo salida" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"No se puede copiar y renombrar el archivo de exportación, comprueba el " +"directorio del proyecto de graduación para ver los resultados." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13062,6 +13089,12 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Error trying to save layout!" +#~ msgstr "¡Error al guardar el layout!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Se ha sobreescrito el layout del editor por defecto." + #~ msgid "Move pivot" #~ msgstr "Mover pivote" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 899e5e8557..c6a8ad8db4 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -1045,15 +1045,20 @@ msgid "Owners Of:" msgstr "Dueños De:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "¿Eliminar los archivos seleccionados del proyecto? (No puede ser restaurado)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Los archivos que se están removiendo son requeridos por otros recursos para " "funcionar.\n" @@ -2326,19 +2331,25 @@ msgid "Error saving TileSet!" msgstr "Error guardando TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Error al tratar de guardar el layout!" +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." -msgstr "Se ha sobreescrito el layout del editor por defecto." +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 "Nombre de layout no encontrado!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Se restauró el layout por defecto a su configuración básica." #: editor/editor_node.cpp @@ -3791,6 +3802,11 @@ msgid "Move To..." msgstr "Mover A..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Mover Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nueva Escena..." @@ -12131,6 +12147,14 @@ msgstr "" "Configuración del Editor." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12184,6 +12208,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13011,6 +13051,12 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Error trying to save layout!" +#~ msgstr "Error al tratar de guardar el layout!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Se ha sobreescrito el layout del editor por defecto." + #~ msgid "Move pivot" #~ msgstr "Mover pivote" diff --git a/editor/translations/et.po b/editor/translations/et.po index 0059926322..9cdb0999bc 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -1009,14 +1009,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2274,11 +2277,16 @@ msgid "Error saving TileSet!" msgstr "Viga TileSeti salvestamisel!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Viga paigutuse salvestamisel!" +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." +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 @@ -2286,7 +2294,8 @@ msgid "Layout name not found!" msgstr "Paigutuse nime ei leitud!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Taastati vaikepaigutus baasseadetesse." #: editor/editor_node.cpp @@ -3633,6 +3642,10 @@ msgid "Move To..." msgstr "Teisalda..." #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Uus stseen..." @@ -11613,6 +11626,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11657,6 +11678,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12327,5 +12364,8 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstante ei saa muuta." +#~ msgid "Error trying to save layout!" +#~ msgstr "Viga paigutuse salvestamisel!" + #~ msgid "Not in resource path." #~ msgstr "Ei ole ressursiteel." diff --git a/editor/translations/eu.po b/editor/translations/eu.po index 7e4389b87b..c203c37d43 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -1000,15 +1000,20 @@ msgid "Owners Of:" msgstr "Hauen jabeak:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Kendu hautatutako fitxategiak proiektutik? (Ezin izango da berreskuratu)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Kendu beharreko fitxategiak beste baliabide batzuek behar dituzte funtziona " "dezaten.\n" @@ -2239,11 +2244,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2251,7 +2261,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3593,6 +3603,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11582,6 +11596,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11626,6 +11648,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index 1ed888fded..b20b7732fb 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -17,12 +17,14 @@ # Farshad Faemiyi <ffaemiyi@gmail.com>, 2020. # Pikhosh <pikhosh@gmail.com>, 2020. # MSKF <walkingdeadstudio@outlook.com>, 2020. +# Ahmad Maftoun <CarCedo.Pro@gmail.com>, 2020. +# ItzMiad44909858f5774b6d <maidggg@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-19 21:08+0000\n" -"Last-Translator: Pikhosh <pikhosh@gmail.com>\n" +"PO-Revision-Date: 2020-11-08 10:26+0000\n" +"Last-Translator: MSKF <walkingdeadstudio@outlook.com>\n" "Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/" "godot/fa/>\n" "Language: fa\n" @@ -30,7 +32,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.3.1-dev\n" +"X-Generator: Weblate 4.3.2\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -443,7 +445,7 @@ msgstr "مسیر قطعه نامعتبر، پس نمی‌توان یک کلید #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "آهنگ از نوع مکانی نیست ØŒ نمی تواند کلید را وارد کند" #: editor/animation_track_editor.cpp msgid "Add Transform Track Key" @@ -670,11 +672,11 @@ msgstr "اÙزودن کلیپ آهنگ صوتی" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "تغییر اÙکت شروع کلیپ آهنگ صوتی" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "تغییر اÙست انتهای کلیپ آهنگ صوتی" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -735,7 +737,7 @@ msgstr "استاندارد" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "" +msgstr "تغییر پانل اسکریپت ها" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -790,7 +792,7 @@ msgstr "از سیگنال:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." -msgstr "" +msgstr "صØنه شامل هیچ Ùیلم نامه ای نیست." #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -833,6 +835,8 @@ msgstr "به تعویق اÙتاده" msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." msgstr "" +"سیگنال را تعویض Ù…ÛŒ کند ØŒ آن را در یک ص٠ذخیره Ù…ÛŒ کند Ùˆ Ùقط در زمان بیکاری " +"شلیک Ù…ÛŒ کند." #: editor/connections_dialog.cpp msgid "Oneshot" @@ -840,7 +844,7 @@ msgstr "تک نما" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." -msgstr "" +msgstr "سیگنال را پس از اولین انتشار آن قطع Ù…ÛŒ کند." #: editor/connections_dialog.cpp msgid "Cannot connect signal" @@ -907,13 +911,12 @@ msgid "Signals" msgstr "سیگنال‌ها" #: editor/connections_dialog.cpp -#, fuzzy msgid "Filter signals" -msgstr "صاÙÛŒ کردن گره‌ها" +msgstr "صاÙÛŒ کردن گره‌هاسیگنال ها را Ùیلتر کنید" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "" +msgstr "آیا مطمئن هستید Ú©Ù‡ Ù…ÛŒ خواهید همه اتصالات را از این سیگنال Øذ٠کنید؟" #: editor/connections_dialog.cpp msgid "Disconnect All" @@ -1037,14 +1040,19 @@ msgid "Owners Of:" msgstr "مالکانÙ:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "آیا پرونده‌های انتخاب شده از Ø·Ø±Ø Øذ٠شوند؟ (نمی‌توان بازیابی کرد)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "پرونده‌هایی Ú©Ù‡ می‌خواهید Øذ٠شوند برای منابع دیگر مورد نیاز هستند تا کار " "کنند.\n" @@ -1154,14 +1162,12 @@ msgid "Gold Sponsors" msgstr "Øامیان طلایی (درجه Û²)" #: editor/editor_about.cpp -#, fuzzy msgid "Silver Sponsors" -msgstr "اهداکنندگان نقره‌ای" +msgstr "Øامیان نقره ای" #: editor/editor_about.cpp -#, fuzzy msgid "Bronze Sponsors" -msgstr "اهداکنندگان برنزی" +msgstr "اهداکنندگان برنزیØامیان مالی" #: editor/editor_about.cpp msgid "Mini Sponsors" @@ -1316,7 +1322,6 @@ msgid "Bypass" msgstr "‌گذرگاه Ùرعی" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Bus options" msgstr "گزینه های اتوبوس" @@ -1364,27 +1369,27 @@ msgstr "انتقال صدای خطی" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As..." -msgstr "" +msgstr "ذخیره Ø·Ø±Ø Ø§ØªÙˆØ¨ÙˆØ³ صوتی به عنوان ..." #: editor/editor_audio_buses.cpp msgid "Location for New Layout..." -msgstr "" +msgstr "مکان برای Ø·Ø±Ø Ø¬Ø¯ÛŒØ¯ ..." #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" -msgstr "" +msgstr "چیدمان اتوبوس صوتی را باز کنید" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." -msgstr "" +msgstr "پرونده 'Ùª s' وجود ندارد." #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" -msgstr "" +msgstr "چیدمان" #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "" +msgstr "پرونده نامعتبر است ØŒ نه Ø·Ø±Ø Ø§ØªÙˆØ¨ÙˆØ³ صوتی." #: editor/editor_audio_buses.cpp msgid "Error saving file: %s" @@ -1392,11 +1397,11 @@ msgstr "خطای ذخیره کردن پرونده: %s" #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "" +msgstr "اتوبوس اضاÙÙ‡ کنید" #: editor/editor_audio_buses.cpp msgid "Add a new Audio Bus to this layout." -msgstr "" +msgstr "یک Audio Bus جدید به این Ø·Ø±Ø Ø§Ø¶Ø§ÙÙ‡ کنید." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1406,7 +1411,7 @@ msgstr "بارگیری" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." -msgstr "" +msgstr "چیدمان اتوبوس موجود را بارگیری کنید." #: editor/editor_audio_buses.cpp msgid "Save As" @@ -1414,7 +1419,7 @@ msgstr "ذخیره در" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." -msgstr "" +msgstr "این Ø·Ø±Ø Bus را در یک پرونده ذخیره کنید." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" @@ -1422,11 +1427,11 @@ msgstr "بارگیری پیش Ùرض" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "" +msgstr "Ø·Ø±Ø Ù¾ÛŒØ´ Ùرض اتوبوس را بارگیری کنید." #: editor/editor_audio_buses.cpp msgid "Create a new Bus Layout." -msgstr "" +msgstr "Ø·Ø±Ø Ø¬Ø¯ÛŒØ¯ اتوبوس ایجاد کنید." #: editor/editor_autoload_settings.cpp msgid "Invalid name." @@ -1467,23 +1472,23 @@ msgstr "تغییر Øالت اتماتیک لود عمومی" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "" +msgstr "بارگیری خودکار را انجام دهید" #: editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "" +msgstr "بارگیری خودکار را Øذ٠کنید" #: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp msgid "Enable" -msgstr "" +msgstr "روشن" #: editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "" +msgstr "تنظیم مجدد بارهای خودکار" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "اضاÙÙ‡ کردن خودکار امکان پذیر نیست:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1512,19 +1517,19 @@ msgstr "سینگلتون" #: editor/editor_data.cpp editor/inspector_dock.cpp msgid "Paste Params" -msgstr "" +msgstr "چسباندن پارام ها" #: editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "صØنه به روز Ù…ÛŒ شود" #: editor/editor_data.cpp msgid "Storing local changes..." -msgstr "" +msgstr "ذخیره تغییرات Ù…ØÙ„ÛŒ ..." #: editor/editor_data.cpp msgid "Updating scene..." -msgstr "" +msgstr "صØنه به روز Ù…ÛŒ شود ..." #: editor/editor_data.cpp editor/editor_properties.cpp msgid "[empty]" @@ -1532,15 +1537,15 @@ msgstr "[پوچ]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ذخیره نشده]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first." -msgstr "" +msgstr "لطÙاً ابتدا دایرکتوری پایه را انتخاب کنید." #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "" +msgstr "یک Ùهرست انتخاب کنید" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp editor/project_manager.cpp @@ -1562,7 +1567,7 @@ msgstr "ناتوان در ساختن پوشه." #: editor/editor_dir_dialog.cpp msgid "Choose" -msgstr "" +msgstr "انتخاب کنید" #: editor/editor_export.cpp msgid "Storing File:" @@ -2281,11 +2286,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2293,7 +2303,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3683,6 +3693,11 @@ msgstr "" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "بارگیری خودکار را انجام دهید" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "صØنه جدید" @@ -8337,9 +8352,8 @@ msgid "Occlusion" msgstr "ویرایش سیگنال" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Navigation" -msgstr "گره انیمیشن" +msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Bitmask" @@ -8928,9 +8942,8 @@ msgid "SoftLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." -msgstr "ثابت" +msgstr "مقدار ثابت رنگ" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy @@ -8943,15 +8956,15 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" -msgstr "" +msgstr "مساوی (==)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than (>)" -msgstr "" +msgstr "بزرگتر از (<)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "" +msgstr "بزرگتر یا برابر (=<)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8973,15 +8986,15 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than (<)" -msgstr "" +msgstr "کمتر از (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than or Equal (<=)" -msgstr "" +msgstr "کمتر یا مساوی (=>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Not Equal (!=)" -msgstr "" +msgstr "نا مساوی (=!)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9017,7 +9030,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Input parameter." -msgstr "" +msgstr "پارامتر ورودی." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." @@ -9668,7 +9681,7 @@ msgstr "" #: editor/project_export.cpp msgid "Features" -msgstr "" +msgstr "ویژگی‌ها" #: editor/project_export.cpp msgid "Custom (comma-separated):" @@ -10383,7 +10396,7 @@ msgstr "AutoLoad" #: editor/project_settings_editor.cpp msgid "Plugins" -msgstr "پلاگین ها" +msgstr "اÙزونه‌ها" #: editor/property_editor.cpp msgid "Preset..." @@ -12087,11 +12100,11 @@ msgstr "شیء پایه یک گره نیست!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "مسیر به یک گره نمیرسد!" +msgstr "مسیر به یک نود نمیرسد!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "نام دارایی ایندکس نامعتبر 's%' در گره s%." +msgstr "نام دارایی ایندکس نامعتبر 's%' در نود s%." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -12129,11 +12142,11 @@ msgstr "Øذ٠گره اسکریپت٠دیداری" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "گرÙتن %s" #: modules/visual_script/visual_script_property_selector.cpp msgid "Set %s" -msgstr "" +msgstr "تنظیم %s" #: platform/android/export/export.cpp msgid "Package name is missing." @@ -12188,6 +12201,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12233,6 +12254,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12873,7 +12910,7 @@ msgstr "" #: scene/gui/color_picker.cpp msgid "Pick a color from the editor window." -msgstr "" +msgstr "یک رنگ از پنجره ویرایشگر بردارید" #: scene/gui/color_picker.cpp msgid "HSV" @@ -12925,7 +12962,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "" +msgstr "اگر \"Exp ویرایش\" Ùعال است, \"Øداقل داده\" باید بزرگتر از 0 باشد." #: scene/gui/scroll_container.cpp msgid "" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 6531c986c9..8dca6b5cb1 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-03 15:29+0000\n" +"PO-Revision-Date: 2020-10-30 10:21+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -24,7 +24,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.3-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1029,14 +1029,19 @@ msgid "Owners Of:" msgstr "Omistajat kohteelle:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Poista valitut tiedostot projektista? (Ei voida palauttaa)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Poistettavaksi merkittyjä tiedostoja tarvitaan muiden resurssien " "toimivuuteen.\n" @@ -1595,34 +1600,31 @@ msgstr "" "Enabled' asetus." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"GLES2 tarvitsee kohdealustalla 'ETC' tekstuuripakkausta. Kytke 'Import Etc' " -"päälle projektin asetuksista." +"GLES2 tarvitsee kohdealustalla 'PVRTC' tekstuuripakkausta. Kytke 'Import " +"Pvrtc' päälle projektin asetuksista." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"GLES3 tarvitsee kohdealustalla 'ETC' tekstuuripakkausta. Kytke 'Import Etc " -"2' päälle projektin asetuksista." +"GLES3 tarvitsee kohdealustalla 'ETC2' tai 'PVRTC' tekstuuripakkausta. Kytke " +"'Import Etc 2' tai 'Import Pvrtc' päälle projektin asetuksista." #: editor/editor_export.cpp -#, fuzzy 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 "" -"GLES2 vara-ajuri tarvitsee kohdealustalla 'ETC' tekstuuripakkausta.\n" -"Kytke 'Import Etc' päälle projektin asetuksista tai poista 'Driver Fallback " -"Enabled' asetus." +"GLES2 vara-ajuri tarvitsee kohdealustalla 'PVRTC' tekstuuripakkausta.\n" +"Kytke 'Import Pvrtc' päälle projektin asetuksista tai poista 'Driver " +"Fallback Enabled' asetus." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2305,19 +2307,25 @@ msgid "Error saving TileSet!" msgstr "Virhe tallennettaessa laattavalikoimaa!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Virhe tallennettaessa asettelua!" +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." -msgstr "Editorin oletusasettelu ylikirjoitettu." +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 "Asettelun nimeä ei löytynyt!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Palautettiin oletusasettelu alkuperäisiin asetuksiinsa." #: editor/editor_node.cpp @@ -3746,6 +3754,11 @@ msgid "Move To..." msgstr "Siirrä..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Siirrä automaattisesti ladattavaa" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Uusi skene..." @@ -5211,50 +5224,43 @@ msgstr "Luo vaaka- ja pystysuorat apuviivat" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Aseta CanvasItem \"%s\" keskiöksi (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Kierrä CanvasItemiä" +msgstr "Kierrä %d CanvasItemiä" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Kierrä CanvasItemiä" +msgstr "Kierrä CanvasItem \"%s\":ä %d astetta" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Siirrä CanvasItemiä" +msgstr "Siirrä CanvasItem \"%s\":n ankkuri" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Skaalaa Node2D \"%s\" kokoon (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Muuta Control \"%s\" kokoon (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Skaalaa CanvasItemiä" +msgstr "Skaalaa %d CanvasItemiä" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Skaalaa CanvasItemiä" +msgstr "Skaalaa CanvasItem \"%s\" kokoon (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "Siirrä CanvasItemiä" +msgstr "Siirrä %d CanvasItemiä" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "Siirrä CanvasItemiä" +msgstr "Siirrä CanvasItem \"%s\" koordinaattiin (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6535,18 +6541,16 @@ msgid "Move Points" msgstr "Siirrä pisteitä" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Vedä: Kierrä" +msgstr "Komentonäppäin: Kierrä" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: Siirrä kaikkia" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: Skaalaa" +msgstr "Shift+komentonäppäin: Skaalaa" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6594,14 +6598,12 @@ msgid "Radius:" msgstr "Säde:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Luo polygoni ja UV" +msgstr "Kopioi polygoni UV:hen" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Muunna Polygon2D solmuksi" +msgstr "Kopioi UV Polygon solmulle" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8149,13 +8151,12 @@ msgid "Paint Tile" msgstr "Maalaa laatta" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift+Hiiren vasen: Piirrä viiva\n" -"Shift+Ctrl+Hiiren vasen: Suorakaidemaalaus" +"Shift+Hiiren vasen: Viivanpiirto\n" +"Shift+Komentonäppäin+Hiiren vasen: Suorakaidemaalaus" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8683,9 +8684,8 @@ msgid "Add Node to Visual Shader" msgstr "Lisää solmu Visual Shaderiin" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Solmu siirretty" +msgstr "Solmu(t) siirretty" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8705,9 +8705,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Visual Shaderin syötteen tyyppi vaihdettu" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Aseta uniformin nimi" +msgstr "UniformRef nimi muutettu" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9420,7 +9419,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Viittaus olemassa olevaan uniformiin." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12060,6 +12059,14 @@ msgstr "" "asetuksissa." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12114,18 +12121,39 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"\"Export AAB\" on käyttökelpoinen vain, kun \"Use Custom Build\" asetus on " +"päällä." + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"Virheellinen tiedostonimi! Android App Bundle tarvitsee *.aab " +"tiedostopäätteen." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "APK Expansion ei ole yhteensopiva Android App Bundlen kanssa." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." msgstr "" +"Virheellinen tiedostonimi! Android APK tarvitsee *.apk tiedostopäätteen." #: platform/android/export/export.cpp msgid "" @@ -12162,13 +12190,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Siirretään tulostetta" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Vientitiedoston kopiointi ja uudelleennimeäminen ei onnistu, tarkista " +"tulosteet gradle-projektin hakemistosta." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12927,6 +12957,12 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." msgid "Constants cannot be modified." msgstr "Vakioita ei voi muokata." +#~ msgid "Error trying to save layout!" +#~ msgstr "Virhe tallennettaessa asettelua!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Editorin oletusasettelu ylikirjoitettu." + #~ msgid "Move pivot" #~ msgstr "Siirrä keskikohtaa" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 2db2e9676c..6377bee04a 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -1009,14 +1009,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2242,11 +2245,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2254,7 +2262,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3595,6 +3603,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11585,6 +11597,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11629,6 +11649,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 75d4c1cfea..c898ea3c96 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -75,12 +75,13 @@ # Julien Humbert <julroy67@gmail.com>, 2020. # Nathan <bonnemainsnathan@gmail.com>, 2020. # Léo Vincent <l009.vincent@gmail.com>, 2020. +# Joseph Boudou <joseph.boudou@matabio.net>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-28 11:18+0000\n" -"Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n" +"PO-Revision-Date: 2020-11-15 12:43+0000\n" +"Last-Translator: Joseph Boudou <joseph.boudou@matabio.net>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -88,7 +89,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1107,15 +1108,20 @@ msgid "Owners Of:" msgstr "Propriétaires de :" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Supprimer les fichiers sélectionnés du projet ? (restauration impossible)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Les fichiers qui vont être supprimés sont utilisés par d'autres ressources " "pour leur fonctionnement.\n" @@ -1674,34 +1680,31 @@ msgstr "" "Fallback Enabled'." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"La plate-forme cible nécessite une compression de texture 'ETC' pour GLES2. " -"Activez 'Import Etc' dans les paramètres du projet." +"La plate-forme cible nécessite une compression de texture « ETC » pour " +"GLES2. Activez « Import Etc » dans les paramètres du projet." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"La plate-forme cible nécessite une compression de texture 'ETC2' pour GLES3. " -"Activez 'Import Etc 2' dans les Paramètres du projet." +"La plate-forme cible nécessite une compression de texture « ETC2 » pour " +"GLES3. Activez « Import Etc 2 » dans les Paramètres du projet." #: editor/editor_export.cpp -#, fuzzy 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 "" -"La plate-forme cible nécessite une compression de texture ' ETC ' pour le " +"La plate-forme cible nécessite une compression de texture ' PVRTC ' pour le " "fallback pilote de GLES2.\n" -"Activez 'Import Etc' dans les paramètres du projet, ou désactivez 'Driver " +"Activez 'Import Pvrtc' dans les paramètres du projet, ou désactivez 'Driver " "Fallback Enabled'." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2384,19 +2387,25 @@ msgid "Error saving TileSet!" msgstr "Erreur d'enregistrement du TileSet !" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Erreur d'enregistrement de la disposition !" +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." -msgstr "Disposition de l'éditeur par défaut remplacée." +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 "Nom de la disposition non trouvé !" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Disposition par défaut remise à zéro." #: editor/editor_node.cpp @@ -3856,6 +3865,11 @@ msgid "Move To..." msgstr "Déplacer vers…" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Déplacer l'AutoLoad" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nouvelle scène..." @@ -5327,8 +5341,9 @@ msgid "Create Horizontal and Vertical Guides" msgstr "Créer de nouveaux guides horizontaux et verticaux" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Décalage pivot du CanvasItem « %s » défini à (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -5336,22 +5351,23 @@ msgid "Rotate %d CanvasItems" msgstr "Pivoter l'élément de canevas" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Pivoter l'élément de canevas" +msgstr "Pivoter le CanvasItem \"%s\" de %d degrés" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Déplacer l'élément de canevas" +msgstr "Déplacer l'ancre \"%s\" du CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Mettre à l'échelle Node2D \"%s\" vers (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Redimensionner le Contrôle \"%s\" vers (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -6667,18 +6683,16 @@ msgid "Move Points" msgstr "Déplacer de points" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Glisser : tourner" +msgstr "Commande : Rotation" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Maj : Tout déplacer" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Maj+Contrôle : Mettre à l'échelle" +msgstr "Shift + Commande : Mettre à l'échelle" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6728,12 +6742,12 @@ msgstr "Rayon :" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy msgid "Copy Polygon to UV" -msgstr "Créer un polygone & UV" +msgstr "Copier le polygone dans UV" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy msgid "Copy UV to Polygon" -msgstr "Convertir en Polygon2D" +msgstr "Copier UV dans le polygone" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8290,8 +8304,8 @@ msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift + Clic gauche : Dessiner une ligne\n" -"Shift + Ctrl + Clic gauche : Dessiner un rectangle" +"Shift+LMB : Dessiner une ligne\n" +"Shift+Commande+LMB : Dessiner un rectangle" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8821,9 +8835,8 @@ msgid "Add Node to Visual Shader" msgstr "Ajouter un nÅ“ud au Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "NÅ“ud déplacé" +msgstr "NÅ“ud(s) déplacé(s)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8845,7 +8858,7 @@ msgstr "Type d’entrée Visual Shader changée" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "UniformRef Name Changed" -msgstr "Définir le nom de l'uniforme" +msgstr "Nom UniformRef modifié" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9566,8 +9579,9 @@ msgstr "" "constantes." #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy msgid "A reference to an existing uniform." -msgstr "" +msgstr "Une référence à un uniform existant." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12227,6 +12241,14 @@ msgstr "" "paramètres de l'éditeur." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12277,20 +12299,45 @@ msgstr "" "Xr » est « Oculus Mobile VR »." #: platform/android/export/export.cpp +#, fuzzy msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"« Exportation AAB » est valide uniquement lorsque l'option « Utiliser une " +"build personnalisée » est activée." + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"Nom de fichier invalide ! Le bundle d'application Android nécessite " +"l'extension *.aab." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." msgstr "" +"L'expansion de fichier APK n'est pas compatible avec le bundle d'application " +"Android." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." msgstr "" +"Nom de fichier invalide ! Les fichiers APK d'Android nécessitent l'extension " +"*.apk." #: platform/android/export/export.cpp msgid "" @@ -12328,14 +12375,17 @@ msgstr "" "Android." #: platform/android/export/export.cpp +#, fuzzy msgid "Moving output" -msgstr "" +msgstr "Sortie de déplacement" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Impossible de copier et de renommer le fichier d'export, vérifiez le dossier " +"du projet gradle pour les journaux." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13121,6 +13171,12 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." msgid "Constants cannot be modified." msgstr "Les constantes ne peuvent être modifiées." +#~ msgid "Error trying to save layout!" +#~ msgstr "Erreur d'enregistrement de la disposition !" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Disposition de l'éditeur par défaut remplacée." + #~ msgid "Move pivot" #~ msgstr "Déplacer le pivot" diff --git a/editor/translations/ga.po b/editor/translations/ga.po index 17b0134def..d7f5165300 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -1002,14 +1002,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2236,11 +2239,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2248,7 +2256,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3588,6 +3596,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11582,6 +11594,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11626,6 +11646,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/he.po b/editor/translations/he.po index 1a4c5ee05d..66fc99c39d 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -17,12 +17,13 @@ # Ziv D <wizdavid@gmail.com>, 2020. # yariv benj <yariv4400@gmail.com>, 2020. # Guy Dadon <guydadon14@gmail.com>, 2020. +# bruvzg <bruvzg13@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-27 18:26+0000\n" -"Last-Translator: Guy Dadon <guydadon14@gmail.com>\n" +"PO-Revision-Date: 2020-11-17 11:07+0000\n" +"Last-Translator: Ziv D <wizdavid@gmail.com>\n" "Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/" "godot/he/>\n" "Language: he\n" @@ -31,7 +32,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" -"X-Generator: Weblate 4.3.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -50,7 +51,7 @@ msgstr "×ין מספיק ×‘×ª×™× ×œ×¤×¢× ×•×— בתי×, ×ו פורמט ×œ× × #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "קלט שגוי %I (×œ× ×”×•×¢×‘×¨) בתוך הביטוי" +msgstr "קלט שגוי %i (×œ× ×”×•×¢×‘×¨) בתוך הביטוי" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -58,7 +59,7 @@ msgstr "'self' ×œ× × ×™×ª×Ÿ לשימוש ×›×™ המופע ×”×™× ×• 'null' ( ×œ× #: 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" @@ -70,7 +71,7 @@ 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':" @@ -1040,14 +1041,17 @@ msgstr "" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -1740,7 +1744,7 @@ msgstr "" #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." -msgstr "שגי××” בשמירת פרופיל ×œ× ×ª×™×‘ 's%'." +msgstr "שגי××” בשמירת פרופיל ×œ× ×ª×™×‘ '%s'." #: editor/editor_feature_profile.cpp msgid "Unset" @@ -2046,8 +2050,8 @@ msgid "" "There is currently no description for this property. Please help us by " "[color=$color][url=$url]contributing one[/url][/color]!" msgstr "" -"כרגע ×ין תי×ור למ×פיין ×–×”. בבקשה עזור ×œ× ×• על-ידי [/color][/url]כתיבת " -"תי×ור[url=$url][color=$color]!" +"כרגע ×ין תי×ור למ×פיין ×–×”. בבקשה עזור ×œ× ×• על-ידי [color=$color][url=" +"$url]כתיבת תי×ור[/url][/color]!" #: editor/editor_help.cpp msgid "Method Descriptions" @@ -2058,8 +2062,8 @@ msgid "" "There is currently no description for this method. Please help us by [color=" "$color][url=$url]contributing one[/url][/color]!" msgstr "" -"כרגע ×ין תי×ור למתודה זו. בבקשה עזור ×œ× ×• על-ידי [/url][/color]כתיבת תי×ור " -"[color=$color][url=$url]!" +"כרגע ×ין תי×ור למתודה זו. בבקשה עזור ×œ× ×• על-ידי [color=$color][url=" +"$url]כתיבת תי×ור [/url][/color]!" #: editor/editor_help_search.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp @@ -2248,11 +2252,11 @@ 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 "×œ× ×™×›×•×œ לפתוח ×ת 's%'. יכול להיות שהקובץ הועבר ×ו × ×ž×—×§." +msgstr "×œ× ×™×›×•×œ לפתוח ×ת '%s'. יכול להיות שהקובץ הועבר ×ו × ×ž×—×§." #: editor/editor_node.cpp msgid "Error while parsing '%s'." -msgstr "שגי××” ×‘×¤×¢× ×•×— 's%'." +msgstr "שגי××” ×‘×¤×¢× ×•×— '%s'." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." @@ -2260,11 +2264,11 @@ msgstr "סוף קובץ בלתי צפוי '%s'." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." -msgstr "חסר 's%' ×ו תלות שלו." +msgstr "חסר '%s' ×ו תלות שלו." #: editor/editor_node.cpp msgid "Error while loading '%s'." -msgstr "שגי××” ×‘×˜×¢×™× ×ª 's%'." +msgstr "שגי××” ×‘×˜×¢×™× ×ª '%s'." #: editor/editor_node.cpp msgid "Saving Scene" @@ -2317,19 +2321,25 @@ msgid "Error saving TileSet!" msgstr "שגי××” בשמירת TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "שמירת הפריסה × ×›×©×œ×”!" +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." -msgstr "ברירת המחדל של עורך הפריסה × ×“×¨×¡×”." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "פריסת ברירת המחדל שוחזרה להגדרות הבסיס." #: editor/editor_node.cpp @@ -3049,7 +3059,7 @@ msgstr "מערכת קבצי×" #: editor/editor_node.cpp msgid "Inspector" -msgstr "חוקר" +msgstr "מפקח" #: editor/editor_node.cpp msgid "Expand Bottom Panel" @@ -3738,6 +3748,11 @@ msgstr "העברה ×ל…" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "הזזת ×˜×¢×™× ×” ×וטומטית" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "×¡×¦× ×” חדשה" @@ -4592,180 +4607,171 @@ msgstr "× ×™×’×•×Ÿ ×”×”× ×¤×©×” ×©× ×‘×—×¨×” ×ž×”×ž×™×§×•× ×”× ×•×›×—×™. (D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "" +msgstr "×ž×™×§×•× ×”× ×¤×©×” (×‘×©× ×™×•×ª)." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." -msgstr "" +msgstr "×©×™× ×•×™ ×§× ×” מידה ×œ× ×™×’×•×Ÿ ×”× ×¤×©×” ב×ופן גלובלי עבור המפרק." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "" +msgstr "כלי ×”× ×¤×©×”" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation" -msgstr "" +msgstr "×”× ×¤×©×”" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Transitions..." -msgstr "×ž×¢×‘×¨×•× ×™×" +msgstr "עריכת מעברי×..." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Open in Inspector" -msgstr "חוקר" +msgstr "פתיחה במפקח" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "" +msgstr "הצגת רשימת ×”× ×¤×©×•×ª ×‘× ×’×Ÿ." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "" +msgstr "הפעלה ×וטומטית ×‘×˜×¢×™× ×”" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "" +msgstr "הפעלת שכבות בצל" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Onion Skinning Options" -msgstr "הגדרות הצמדה" +msgstr "הגדרות שכבות בצל" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" -msgstr "" +msgstr "×›×™×•×•× ×™×" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Past" -msgstr "" +msgstr "עבר" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Future" -msgstr "" +msgstr "עתיד" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" -msgstr "" +msgstr "עומק" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" -msgstr "" +msgstr "צעד 1" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "" +msgstr "2 צעדי×" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "" +msgstr "3 צעדי×" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "" +msgstr "רק הבדלי×" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "×ילוץ ציור לבן" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" -msgstr "" +msgstr "הכללת גיזמו (3D)" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Pin AnimationPlayer" -msgstr "×©× ×”× ×¤×©×” חדשה:" +msgstr "הצמדת AnimationPlayer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "" +msgstr "יצירת ×”× ×¤×©×” חדשה" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "" +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 "" +msgstr "שגי××”!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "" +msgstr "×–×ž× ×™ מיזוג:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "" +msgstr "×”×‘× (תור ×וטומטי):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "" +msgstr "×–×ž× ×™ מיזוג בין ×”× ×¤×©×•×ª" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Move Node" -msgstr "מצב ×”×–×–×” (W)" +msgstr "הזזת מפרק" #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition exists!" msgstr "המעברון קיי×!" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Add Transition" -msgstr "מעברון" +msgstr "הוספת מעברון" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "" +msgstr "הוספת מפרק" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "" +msgstr "סוף" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" -msgstr "" +msgstr "מיידי" #: editor/plugins/animation_state_machine_editor.cpp msgid "Sync" -msgstr "" +msgstr "×¡× ×›×¨×•×Ÿ" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "" +msgstr "בסוף" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" -msgstr "" +msgstr "טיול" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." -msgstr "" +msgstr "יש צורך במפרקי התחלה וסוף למעברון ×ž×©× ×”." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "No playback resource set at path: %s." -msgstr "×œ× ×‘× ×ª×™×‘ המש×ב." +msgstr "×œ× × ×§×‘×¢ מש×ב ×œ× ×™×’×•×Ÿ ×‘× ×ª×™×‘: %s." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "הסרה" +msgstr "הוסר מפרק" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition Removed" -msgstr "מעברון" +msgstr "הוסר מעברון" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" -msgstr "" +msgstr "קביעת מפרק התחלה (× ×™×’×•×Ÿ ×וטומטי)" #: editor/plugins/animation_state_machine_editor.cpp msgid "" @@ -4773,199 +4779,200 @@ msgid "" "RMB to add new nodes.\n" "Shift+LMB to create connections." msgstr "" +"בחירת והזזת מפרקי×.\n" +"RMB להוספת ×ž×¤×¨×§×™× ×—×“×©×™×.\n" +"Shift + LMB ליצירת חיבורי×." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Create new nodes." -msgstr "יצירת %s חדש" +msgstr "יצירת ×ž×¤×¨×§×™× ×—×“×©×™×." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Connect nodes." -msgstr "התחברות למפרק:" +msgstr "חיבור מפרקי×." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "להסיר ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×ž×”×ž×™×–×? (××™ ×פשר לשחזר)" +msgstr "הסרת מפרק ×ו מעברון ×©× ×‘×—×¨×•." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." -msgstr "" +msgstr "הפעלה/ביטול × ×™×’×•×Ÿ ×וטומטי של ×”× ×¤×©×” זו בהפעלה, הפעלה מחדש ×ו מעבר ל×פס." #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." -msgstr "" +msgstr "קביעת ×”× ×¤×©×ª הסיו×. ×–×” שימושי למעברי ×ž×©× ×”." #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition: " msgstr "מעברון: " #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Play Mode:" -msgstr "מצב גולמי" +msgstr "מצב × ×™×’×•×Ÿ:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" -msgstr "" +msgstr "×¢×¥ ×”× ×¤×©×”" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" -msgstr "" +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 +#, fuzzy msgid "Fade In (s):" -msgstr "" +msgstr "דהייה/יות:" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Fade Out (s):" -msgstr "" +msgstr "עמעו×/×™×:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend" -msgstr "" +msgstr "מיזוג" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix" -msgstr "" +msgstr "עירבוב" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Auto Restart:" -msgstr "" +msgstr "התחלה מחדש ×וטומטית:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Restart (s):" -msgstr "" +msgstr "התחלה(ות) מחדש:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Random Restart (s):" -msgstr "" +msgstr "התחלה(ות) מחדש ב×קר××™:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Start!" -msgstr "" +msgstr "התחלה!" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp msgid "Amount:" -msgstr "" +msgstr "כמות:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 0:" -msgstr "" +msgstr "מיזוג 0:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 1:" -msgstr "" +msgstr "מיזוג 1:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "" +msgstr "זמן עמעו×/×™× (X-Fade):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Current:" -msgstr "" +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 "" +msgstr "הוספת קלט" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "" +msgstr "הפסקת ×§×™×“×•× ×וטומטי" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "" +msgstr "קביעת ×§×™×“×•× ×וטומטי" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Delete Input" -msgstr "" +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" -msgstr "" +msgstr "מפרק ×”× ×¤×©×”" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "OneShot Node" -msgstr "" +msgstr "מפרק חד-פעמי" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix Node" -msgstr "" +msgstr "מפרק ערבוב" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend2 Node" -msgstr "" +msgstr "מפרק Blend2" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend3 Node" -msgstr "" +msgstr "מפרק Blend3" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend4 Node" -msgstr "" +msgstr "מפרק Blend4" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeScale Node" -msgstr "" +msgstr "מפרק TimeScale" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "" +msgstr "מפרק TimeSeek" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Transition Node" -msgstr "" +msgstr "מפרק מעברון" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Import Animations..." -msgstr "" +msgstr "×™×™×‘×•× ×”× ×¤×©×•×ª..." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "" +msgstr "עריכת ×ž×¡× × ×™ המפרק" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Filters..." -msgstr "" +msgstr "×ž×¡× × ×™×..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Contents:" -msgstr "" +msgstr "תוכן:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "View Files" -msgstr "" +msgstr "הצגת קבצי×" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connection error, please try again." -msgstr "" +msgstr "שגי×ת חיבור, ×× × × ×¡×” שוב." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להתחבר למ×רח:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response from host:" -msgstr "" +msgstr "×ין תגובה מהמ×רח:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve hostname:" @@ -12101,6 +12108,14 @@ msgstr "" "× ×ª×™×‘ ×œ× ×—×•×§×™ לערכת פיתוח ×× ×“×¨×•×יד עבור ×‘× ×™×™×” מות×מת ×ישית בהגדרות העורך." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12150,6 +12165,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12920,6 +12951,12 @@ msgstr "× ×™×ª×Ÿ להקצות ×©×™× ×•×™×™× ×¨×§ ×‘×¤×•× ×§×¦×™×ª vertex." msgid "Constants cannot be modified." msgstr "××™ ×פשר ×œ×©× ×•×ª קבועי×." +#~ msgid "Error trying to save layout!" +#~ msgstr "שמירת הפריסה × ×›×©×œ×”!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "ברירת המחדל של עורך הפריסה × ×“×¨×¡×”." + #, fuzzy #~ msgid "Move pivot" #~ msgstr "העברה למעלה" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index 26513d484f..c880a097f4 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -1029,14 +1029,19 @@ msgid "Owners Of:" msgstr "के सà¥à¤µà¤¾à¤®à¥€:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "परियोजना से चयनित फ़ाइलों को हटा दें? (बहाल नहीं किया जा सकता है)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "निकाली गई फ़ाइलों को दूसरे संसाधनों दà¥à¤µà¤¾à¤°à¤¾ उनके लिठकाम करने के लिठआवशà¥à¤¯à¤• है\n" "वैसे à¤à¥€ उनà¥à¤¹à¥‡à¤‚ निकालें? (कोई पूरà¥à¤µà¤µà¤¤ नहीं)" @@ -2293,19 +2298,25 @@ msgid "Error saving TileSet!" msgstr "तà¥à¤°à¥à¤Ÿà¤¿ बचत टाइलसेट!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "लेआउट को बचाने की कोशिश कर रहा तà¥à¤°à¥à¤Ÿà¤¿!" +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." -msgstr "डिफ़ॉलà¥à¤Ÿ संपादक लेआउट अà¤à¤¿à¤à¥‚त।" +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "आधार सेटिंगà¥à¤¸ के लिठडिफ़ॉलà¥à¤Ÿ लेआउट बहाल।" #: editor/editor_node.cpp @@ -3718,6 +3729,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "औटोलोड हिलाइये" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "नया दृशà¥à¤¯..." @@ -11836,6 +11852,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11881,6 +11905,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12562,6 +12602,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "लेआउट को बचाने की कोशिश कर रहा तà¥à¤°à¥à¤Ÿà¤¿!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "डिफ़ॉलà¥à¤Ÿ संपादक लेआउट अà¤à¤¿à¤à¥‚त।" + #, fuzzy #~ msgid "Add initial export..." #~ msgstr "पसंदीदा:" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index f5d71148a5..c3d47c9a8c 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2020-10-19 21:08+0000\n" +"PO-Revision-Date: 2020-11-17 11:07+0000\n" "Last-Translator: LeoClose <leoclose575@gmail.com>\n" "Language-Team: Croatian <https://hosted.weblate.org/projects/godot-engine/" "godot/hr/>\n" @@ -18,7 +18,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.3.1-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1011,14 +1011,19 @@ msgid "Owners Of:" msgstr "Vlasnici:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Ukloni odabrane datoteke iz projekta? (Neće ih biti moguće vratiti)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Datoteke koje se uklanjaju su nužne drugim resursima kako bi ispravno " "radili.\n" @@ -1644,15 +1649,15 @@ msgstr "" #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" -msgstr "" +msgstr "(Editor Onemogućen, Svojstva Onemogućena)" #: editor/editor_feature_profile.cpp msgid "(Properties Disabled)" -msgstr "" +msgstr "(Svojstva Onemogućena)" #: editor/editor_feature_profile.cpp msgid "(Editor Disabled)" -msgstr "" +msgstr "(Editor Onemogućen)" #: editor/editor_feature_profile.cpp msgid "Class Options:" @@ -1660,15 +1665,15 @@ msgstr "" #: editor/editor_feature_profile.cpp msgid "Enable Contextual Editor" -msgstr "" +msgstr "Omogući Kontekstni Editor" #: editor/editor_feature_profile.cpp msgid "Enabled Properties:" -msgstr "" +msgstr "Omogućena Svojstva:" #: editor/editor_feature_profile.cpp msgid "Enabled Features:" -msgstr "" +msgstr "Omogućene ZnaÄajke:" #: editor/editor_feature_profile.cpp msgid "Enabled Classes:" @@ -1676,13 +1681,14 @@ msgstr "" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "" +msgstr "Format datoteke \"%s\" je nevažeći, uvoženje prekinuto." #: editor/editor_feature_profile.cpp msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." msgstr "" +"Profil '% s' već postoji. Prvo ga uklonite prije uvoza, uvoz je prekinut." #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." @@ -1694,54 +1700,54 @@ msgstr "" #: editor/editor_feature_profile.cpp msgid "Current Profile:" -msgstr "" +msgstr "Trenutni Profil:" #: editor/editor_feature_profile.cpp msgid "Make Current" -msgstr "" +msgstr "UÄini Aktualnim" #: editor/editor_feature_profile.cpp #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/version_control_editor_plugin.cpp msgid "New" -msgstr "" +msgstr "Novo" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "Uvoz" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" -msgstr "" +msgstr "Izvoz" #: editor/editor_feature_profile.cpp msgid "Available Profiles:" -msgstr "" +msgstr "Dostupni Profili:" #: editor/editor_feature_profile.cpp msgid "Class Options" -msgstr "" +msgstr "Opcije Klase" #: editor/editor_feature_profile.cpp msgid "New profile name:" -msgstr "" +msgstr "Novi naziv profila:" #: editor/editor_feature_profile.cpp msgid "Erase Profile" -msgstr "" +msgstr "Brisanje Profila" #: editor/editor_feature_profile.cpp msgid "Godot Feature Profile" -msgstr "" +msgstr "Godot ZnaÄajke Profila" #: editor/editor_feature_profile.cpp msgid "Import Profile(s)" -msgstr "" +msgstr "Uvoz Profila" #: editor/editor_feature_profile.cpp msgid "Export Profile" -msgstr "" +msgstr "Izvoz Profila" #: editor/editor_feature_profile.cpp msgid "Manage Editor Feature Profiles" @@ -2246,11 +2252,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2258,7 +2269,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3597,6 +3608,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Premjesti Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11593,6 +11609,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11637,6 +11661,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 9f62027231..c61d953f31 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -1037,14 +1037,19 @@ msgid "Owners Of:" msgstr "Tulajdonosai:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "EltávolÃtja a kiválasztott fájlokat a projektbÅ‘l? (nem visszavonható)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Az eltávolÃtandó fájlokat szükségelik más források a működésükhöz.\n" "EltávolÃtja Å‘ket ennek ellenére? (nem visszavonható)" @@ -2293,19 +2298,25 @@ msgid "Error saving TileSet!" msgstr "Hiba TileSet mentésekor!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Hiba történt az elrendezés mentésekor!" +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." -msgstr "Alapértelmezett szerkesztÅ‘ elrendezés felülÃrva." +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 "Elrendezés neve nem található!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "" "Az alapértelmezett elrendezés vissza lett állÃtva az alap beállÃtásokra." @@ -3736,6 +3747,11 @@ msgid "Move To..." msgstr "Ãthelyezés..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "AutoLoad Ãthelyezése" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Új jelenet..." @@ -11808,6 +11824,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11852,6 +11876,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12531,6 +12571,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "Hiba történt az elrendezés mentésekor!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Alapértelmezett szerkesztÅ‘ elrendezés felülÃrva." + #~ msgid "Move pivot" #~ msgstr "Forgatási pont áthelyezése" diff --git a/editor/translations/id.po b/editor/translations/id.po index f27203f1d7..7545e813a7 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -27,12 +27,13 @@ # zephyroths <ridho.hikaru@gmail.com>, 2020. # Richard Urban <redasuio1@gmail.com>, 2020. # yusuf afandi <afandi.yusuf.04@gmail.com>, 2020. +# Habib Rohman <revolusi147id@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-03 15:29+0000\n" -"Last-Translator: zephyroths <ridho.hikaru@gmail.com>\n" +"PO-Revision-Date: 2020-11-13 22:59+0000\n" +"Last-Translator: Habib Rohman <revolusi147id@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot/id/>\n" "Language: id\n" @@ -40,7 +41,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1051,14 +1052,19 @@ msgid "Owners Of:" msgstr "Pemilik Dari:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Hapus berkas yang dipilih dari proyek? (tidak bisa dibatalkan)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "File-file yang telah dihapus diperlukan oleh resource lain agar mereka dapat " "bekerja.\n" @@ -1172,7 +1178,6 @@ msgid "Silver Sponsors" msgstr "Donatur Perak" #: editor/editor_about.cpp -#, fuzzy msgid "Bronze Sponsors" msgstr "Donatur Perunggu" @@ -2325,19 +2330,25 @@ msgid "Error saving TileSet!" msgstr "Error menyimpan TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Error mencoba untuk menyimpan layout!" +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." -msgstr "Tata letak baku editor ditimpa." +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 "Nama layout tidak ditemukan!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Mengembalikan semula layout default ke pengaturan-pengaturan awal." #: editor/editor_node.cpp @@ -3781,6 +3792,11 @@ msgid "Move To..." msgstr "Pindahkan ke..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Pindahkan Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Skena Baru…" @@ -12105,6 +12121,14 @@ msgstr "" "Editor." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12151,6 +12175,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12953,6 +12993,12 @@ msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex." msgid "Constants cannot be modified." msgstr "Konstanta tidak dapat dimodifikasi." +#~ msgid "Error trying to save layout!" +#~ msgstr "Error mencoba untuk menyimpan layout!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Tata letak baku editor ditimpa." + #~ msgid "Move pivot" #~ msgstr "Pindahkan poros" diff --git a/editor/translations/is.po b/editor/translations/is.po index 446b94d017..6edc7afbd6 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -1036,14 +1036,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2273,11 +2276,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2285,7 +2293,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3631,6 +3639,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Hreyfa Viðbótar Lykil" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11704,6 +11717,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11748,6 +11769,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 435789e66e..f7e3badb73 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -59,8 +59,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-28 11:18+0000\n" -"Last-Translator: Mirko <miknsop@gmail.com>\n" +"PO-Revision-Date: 2020-11-10 11:28+0000\n" +"Last-Translator: Micila Micillotto <micillotto@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -68,7 +68,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1080,14 +1080,19 @@ msgid "Owners Of:" msgstr "Proprietari di:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Rimuovere i file selezionati dal progetto? (Non può essere annullato)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "I file che stanno per essere rimossi sono richiesti da altre risorse perché " "esse funzionino.\n" @@ -1646,34 +1651,32 @@ msgstr "" "'Driver Fallback Enabled'." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"La piattaforma di destinazione richiede la compressione 'ETC' delle texture " -"per GLES2. Attiva 'Import Etc' nelle impostazioni del progetto." +"La piattaforma di destinazione richiede la compressione 'PVRTC' delle " +"texture per GLES2. Attiva 'Import Pvrtc' nelle impostazioni del progetto." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"La piattaforma di destinazione richiede la compressione 'ETC2' delle texture " -"per GLES3. Attiva 'Import Etc 2' nelle impostazioni del progetto." +"La piattaforma di destinazione richiede la compressione 'ETC2' o 'PVRTC' " +"delle texture per GLES3. Attiva 'Import Etc 2' oppure 'Import Pvrtc' nelle " +"impostazioni del progetto." #: editor/editor_export.cpp -#, fuzzy 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 "" -"La piattaforma di destinazione richiede la compressione 'ETC' delle texture " -"per il fallback del driver a GLES2.\n" -"Attivare 'Import Etc' nelle impostazioni del progetto, oppure disattivare " +"La piattaforma di destinazione richiede la compressione 'PVRTC' delle " +"texture per il fallback del driver a GLES2.\n" +"Attiva 'Import Pvrtc' nelle impostazioni del progetto, oppure disattiva " "'Driver Fallback Enabled'." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2358,19 +2361,25 @@ msgid "Error saving TileSet!" msgstr "Errore di salvataggio del TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Errore nel salvataggio della disposizione!" +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." -msgstr "Disposizione predefinita dell'editor sovrascritta." +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 "Nome della disposizione non trovato!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Ripristinata la disposizione predefinita alle impostazioni originali." #: editor/editor_node.cpp @@ -3820,6 +3829,11 @@ msgid "Move To..." msgstr "Sposta in..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Sposta Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nuova scena…" @@ -5288,50 +5302,43 @@ msgstr "Crea Guide Orizzontali e Verticali" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Imposta Pivot Offset CanvasItem \"%s\" a (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Ruota CanvasItem" +msgstr "Ruota %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Ruota CanvasItem" +msgstr "Ruota CanvasItem \"%s\" a %d gradi" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Sposta CanvasItem" +msgstr "Sposta Ancora CanvasItem \"%s\"" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Scala Node2D \"%s\" a (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Ridimensiona Control \"%s\" a (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Scala CanvasItem" +msgstr "Scala %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Scala CanvasItem" +msgstr "Scala CanvasItem \"%s\" a (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "Sposta CanvasItem" +msgstr "Sposta %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "Sposta CanvasItem" +msgstr "Sposta CanvasItem \"%s\" a (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6622,18 +6629,16 @@ msgid "Move Points" msgstr "Sposta Punti" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Trascina: Ruota" +msgstr "Command: Ruota" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: Muovi Tutti" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: Scala" +msgstr "Shift+Command: Scala" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6682,14 +6687,12 @@ msgid "Radius:" msgstr "Raggio:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Crea Poligono e UV" +msgstr "Copia Poligono su UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Converti in Polygon2D" +msgstr "Copia UV su Poligono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8238,13 +8241,12 @@ msgid "Paint Tile" msgstr "Disegna tile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift + LMB: Traccia una linea\n" -"Shift + Ctrl + LMB: Colora il rettangolo" +"Shift + LMB: Disegna Linea\n" +"Shift + Ctrl + LMB: Disegna Rettangolo" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8775,9 +8777,8 @@ msgid "Add Node to Visual Shader" msgstr "Aggiungi Nodo a Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Nodo Spostato" +msgstr "Nodo(i) Spostato(i)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8797,9 +8798,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Tipo di Input Visual Shader Cambiato" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Imposta Nome Uniforme" +msgstr "Nome UniformRef Modificato" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9520,7 +9520,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Un riferimento ad una uniform esistente." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12166,6 +12166,14 @@ msgstr "" "dell'editor non è valido." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12218,20 +12226,37 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"\"Export AAB\" è valido soltanto quanto \"Use Custom Build\" è abilitato." #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "Nome file invalido! Il Bundle Android App richiede l'estensione *.aab." + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "L'estensione APK non è compatibile con il Bundle Android App." + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "Nome file invalido! L'APK Android richiede l'estensione *.apk." + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." @@ -12268,13 +12293,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Spostando l'output" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Impossibile copiare e rinominare il file di esportazione, controlla la " +"directory del progetto gradle per gli output." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13052,6 +13079,12 @@ msgstr "Varyings può essere assegnato soltanto nella funzione del vertice." msgid "Constants cannot be modified." msgstr "Le constanti non possono essere modificate." +#~ msgid "Error trying to save layout!" +#~ msgstr "Errore nel salvataggio della disposizione!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Disposizione predefinita dell'editor sovrascritta." + #~ msgid "Move pivot" #~ msgstr "Sposta pivot" diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 8282aa0de2..1ea454e2f4 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-19 21:08+0000\n" +"PO-Revision-Date: 2020-11-04 02:39+0000\n" "Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" @@ -45,7 +45,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.3.1-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1056,14 +1056,19 @@ msgid "Owners Of:" msgstr "次ã®ã‚ªãƒ¼ãƒŠãƒ¼:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’プãƒã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "除去ã—よã†ã¨ã—ã¦ã„るファイルã¯ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã®å‹•ä½œã«å¿…è¦ã§ã™ã€‚\n" "無視ã—ã¦é™¤åŽ»ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)" @@ -1619,35 +1624,33 @@ msgstr "" "ã«ã—ã¦ãã ã•ã„。" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"対象プラットフォームã§ã¯GLES2ã®ãŸã‚ã«'ETC'テクスãƒãƒ£åœ§ç¸®ãŒå¿…è¦ã§ã™ã€‚プãƒã‚¸ã‚§" -"クトè¨å®šã‚ˆã‚Š 'Import Etc' をオンã«ã—ã¦ãã ã•ã„。" +"対象プラットフォームã§ã¯GLES2ã®ãŸã‚ã«'PVRTC'テクスãƒãƒ£åœ§ç¸®ãŒå¿…è¦ã§ã™ã€‚プãƒ" +"ジェクトè¨å®šã‚ˆã‚Š 'Import Pvrtc' をオンã«ã—ã¦ãã ã•ã„。" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"対象プラットフォームã§ã¯GLES3ã®ãŸã‚ã«'ETC2'テクスãƒãƒ£åœ§ç¸®ãŒå¿…è¦ã§ã™ã€‚プãƒã‚¸ã‚§" -"クトè¨å®šã‚ˆã‚Š 'Import Etc 2' をオンã«ã—ã¦ãã ã•ã„。" +"対象プラットフォームã§ã¯GLES3ã®ãŸã‚ã« 'ETC2' ã‚ã‚‹ã„㯠'PVRTC' テクスãƒãƒ£åœ§ç¸®" +"ãŒå¿…è¦ã§ã™ã€‚プãƒã‚¸ã‚§ã‚¯ãƒˆè¨å®šã‚ˆã‚Š 'Import Etc 2' ã‚ã‚‹ã„㯠'Import Pvrtc' をオ" +"ンã«ã—ã¦ãã ã•ã„。" #: editor/editor_export.cpp -#, fuzzy 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 "" -"対象プラットフォームã§ã¯GLES2ã¸ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ã™ã‚‹ãŸã‚ã«'ETC'テクスãƒãƒ£åœ§ç¸®ãŒ" -"å¿…è¦ã§ã™ã€‚\n" -"プãƒã‚¸ã‚§ã‚¯ãƒˆè¨å®šã‚ˆã‚Š 'Import Etc' をオンã«ã™ã‚‹ã‹ã€'Fallback To Gles 2' をオフ" -"ã«ã—ã¦ãã ã•ã„。" +"対象プラットフォームã§ã¯GLES2ã¸ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ã™ã‚‹ãŸã‚ã« 'PVRTC' テクスãƒãƒ£åœ§" +"縮ãŒå¿…è¦ã§ã™ã€‚\n" +"プãƒã‚¸ã‚§ã‚¯ãƒˆè¨å®šã‚ˆã‚Š 'Import Pvrtc' をオンã«ã™ã‚‹ã‹ã€'Driver Fallback " +"Enabled' をオフã«ã—ã¦ãã ã•ã„。" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2330,19 +2333,25 @@ msgid "Error saving TileSet!" msgstr "タイルセットã®ä¿å˜ã‚¨ãƒ©ãƒ¼ï¼" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "レイアウトã®ä¿å˜ã‚¨ãƒ©ãƒ¼ï¼" +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." -msgstr "デフォルトã®ã‚¨ãƒ‡ã‚£ã‚¿ レイアウトを上書ãã—ã¾ã—ãŸã€‚" +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "デフォルトã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’基本è¨å®šã«æˆ»ã—ã¾ã—ãŸã€‚" #: editor/editor_node.cpp @@ -3774,6 +3783,11 @@ msgid "Move To..." msgstr "移動..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "自動èªè¾¼ã¿ã‚’移動" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "æ–°è¦ã‚·ãƒ¼ãƒ³..." @@ -5235,14 +5249,12 @@ msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "CanvasItemを回転" +msgstr "%d 個ã®CanvasItemを回転" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "CanvasItemを回転" +msgstr "CanvasItem \"%s\" ã‚’ %d 度回転" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -11017,7 +11029,7 @@ msgstr "スクリプトã®ãƒ‘ス/åå‰ã¯æœ‰åŠ¹ã§ã™ã€‚" #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9, _ and ." -msgstr "使用å¯èƒ½: a-zã€A-Zã€0-9åŠã³_。" +msgstr "使用å¯èƒ½: a-zã€A-Zã€0-9ã€_ åŠã³ ." #: editor/script_create_dialog.cpp msgid "Built-in script (into scene file)." @@ -12063,6 +12075,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "エディタè¨å®šã®ã‚«ã‚¹ã‚¿ãƒ ビルドã®Android SDKパスãŒç„¡åŠ¹ã§ã™ã€‚" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12119,16 +12139,33 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"無効ãªãƒ•ã‚¡ã‚¤ãƒ«åã§ã™ï¼ Android App Bundle ã«ã¯æ‹¡å¼µå *.aab ãŒå¿…è¦ã§ã™ã€‚" #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "APK Expansion 㯠Android App Bundle ã¨ã¯äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“。" #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." -msgstr "" +msgstr "無効ãªãƒ•ã‚¡ã‚¤ãƒ«åã§ã™ï¼ Android APKã«ã¯æ‹¡å¼µå *.apk ãŒå¿…è¦ã§ã™ã€‚" #: platform/android/export/export.cpp msgid "" @@ -12173,6 +12210,8 @@ msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚³ãƒ”ーã¨åå‰ã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“。出力çµæžœã‚’ã¿ã‚‹ã«ã¯" +"gradleã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’確èªã—ã¦ãã ã•ã„。" #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12335,7 +12374,7 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionShape2Dã¯ã€CollisionObject2D派生ノードã«ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—ã‚’æä¾›ã™ã‚‹" -"å ´åˆã«ã®ã¿æ©Ÿèƒ½ã—ã¾ã™ã€‚ã‚·ã‚§ã‚¤ãƒ—ã‚’è¿½åŠ ã™ã‚‹å ´åˆã¯ã€Area2Dã€staticBody2Dã€" +"å ´åˆã«ã®ã¿æ©Ÿèƒ½ã—ã¾ã™ã€‚ã‚·ã‚§ã‚¤ãƒ—ã‚’è¿½åŠ ã™ã‚‹å ´åˆã¯ã€Area2Dã€StaticBody2Dã€" "RigidBody2Dã€KinematicBody2Dãªã©ã®åã¨ã—ã¦ä½¿ç”¨ã—ã¦ãã ã•ã„。" #: scene/2d/collision_shape_2d.cpp @@ -12931,6 +12970,12 @@ msgstr "Varying変数ã¯é ‚点関数ã«ã®ã¿å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã msgid "Constants cannot be modified." msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" +#~ msgid "Error trying to save layout!" +#~ msgstr "レイアウトã®ä¿å˜ã‚¨ãƒ©ãƒ¼ï¼" + +#~ msgid "Default editor layout overridden." +#~ msgstr "デフォルトã®ã‚¨ãƒ‡ã‚£ã‚¿ レイアウトを上書ãã—ã¾ã—ãŸã€‚" + #~ msgid "Move pivot" #~ msgstr "ピボットを移動" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index da05c4d847..63bd2b2d6e 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -1076,14 +1076,18 @@ msgstr "მფლáƒáƒ‘ელები:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "მáƒáƒ•áƒáƒ¨áƒáƒ áƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი პრáƒáƒ”ქტიდáƒáƒœ? (უკáƒáƒœ დáƒáƒ‘რუნებრშეუძლებელიáƒ)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "ფáƒáƒ˜áƒšáƒ”ბი რáƒáƒ›áƒšáƒ”ბსáƒáƒª შლით სáƒáƒáƒ˜áƒ áƒáƒ სხვრრესურსებისთვის რáƒáƒ› იმუშáƒáƒáƒœ.\n" "წáƒáƒ•áƒ¨áƒáƒšáƒáƒ— áƒáƒ›áƒ˜áƒ¡ მიუხედáƒáƒ•áƒáƒ“? (შეუძლებელირუკáƒáƒœ დáƒáƒ‘რუნებáƒ)" @@ -2350,11 +2354,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2362,7 +2371,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3723,6 +3732,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp #, fuzzy msgid "New Scene..." msgstr "რესურსი" @@ -11935,6 +11948,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11980,6 +12001,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 267d5682be..24d0eed7f2 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -20,12 +20,13 @@ # Doyun Kwon <caen4516@gmail.com>, 2020. # Jun Hyung Shin <shmishmi79@gmail.com>, 2020. # Yongjin Jo <wnrhd114@gmail.com>, 2020. +# Yungjoong Song <yungjoong.song@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-05 01:02+0000\n" -"Last-Translator: Yongjin Jo <wnrhd114@gmail.com>\n" +"PO-Revision-Date: 2020-10-31 23:15+0000\n" +"Last-Translator: Yungjoong Song <yungjoong.song@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" "Language: ko\n" @@ -33,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.3-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -746,17 +747,17 @@ msgstr "스í¬ë¦½íŠ¸ íŒ¨ë„ í† ê¸€" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom In" -msgstr "확대" +msgstr "줌 ì¸" #: editor/code_editor.cpp editor/plugins/canvas_item_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 "줌 아웃" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "확대/축소 다시 ì„¤ì •" +msgstr "줌 ìž¬ì„¤ì •" #: editor/code_editor.cpp msgid "Warnings" @@ -1043,14 +1044,19 @@ msgid "Owners Of:" msgstr "ì†Œìœ ìž:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "프로ì 트ì—ì„œ ì„ íƒí•œ 파ì¼ì„ ì‚ì œí• ê¹Œìš”? (ë˜ëŒë¦´ 수 없습니다)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "ì‚ì œí•˜ë ¤ëŠ” 파ì¼ì€ 다른 리소스가 ë™ìž‘하기 위해 필요한 파ì¼ìž…니다.\n" "ë¬´ì‹œí•˜ê³ ì‚ì œí• ê¹Œìš”? (ë˜ëŒë¦´ 수 없습니다)" @@ -1605,34 +1611,31 @@ msgstr "" "Enabled' ì„¤ì •ì„ ë¹„í™œì„±í™” 하세요." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"ëŒ€ìƒ í”Œëž«í¼ì—ì„œ GLES2 ìš© 'ETC' í…스처 ì••ì¶•ì´ í•„ìš”í•©ë‹ˆë‹¤. 프로ì 트 ì„¤ì •ì—ì„œ " -"'Import Etc' ì„¤ì •ì„ ì¼œì„¸ìš”." +"ëŒ€ìƒ í”Œëž«í¼ì—ì„œ GLES2 ìš© 'PVRTC' í…스처 ì••ì¶•ì´ í•„ìš”í•©ë‹ˆë‹¤. 프로ì 트 ì„¤ì •ì—ì„œ " +"'Import Pvrt' 를 활성화 하세요." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"ëŒ€ìƒ í”Œëž«í¼ì—ì„œ GLES3 ìš© 'ETC2' í…스처 ì••ì¶•ì´ í•„ìš”í•©ë‹ˆë‹¤. 프로ì 트 ì„¤ì •ì—ì„œ " -"'Import Etc 2' ì„¤ì •ì„ ì¼œì„¸ìš”." +"ëŒ€ìƒ í”Œëž«í¼ì€ GLES3 ìš© 'ETC2' 나 'PVRTC' í…스처 ì••ì¶•ì´ í•„ìš”í•©ë‹ˆë‹¤. 프로ì 트 " +"ì„¤ì •ì—ì„œ 'Import Etc 2' 나 'Import Pvrtc' 를 활성화 하세요." #: editor/editor_export.cpp -#, fuzzy 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 "" -"ëŒ€ìƒ í”Œëž«í¼ì—ì„œ ë“œë¼ì´ë²„ê°€ GLES2ë¡œ í´ë°±í•˜ê¸° 위해 'ETC' í…스처 ì••ì¶•ì´ í•„ìš”í•©ë‹ˆ" -"다.\n" -"프로ì 트 ì„¤ì •ì—ì„œ 'Import Etc' ì„¤ì •ì„ í™œì„±í™” 하거나, 'Driver Fallback " +"ëŒ€ìƒ í”Œëž«í¼ì—ì„œ ë“œë¼ì´ë²„ê°€ GLES2ë¡œ í´ë°±í•˜ê¸° 위해 'PVRTC' í…스처 ì••ì¶•ì´ í•„ìš”í•©" +"니다.\n" +"프로ì 트 ì„¤ì •ì—ì„œ 'Import Pvrtc' ì„¤ì •ì„ í™œì„±í™” 하거나, 'Driver Fallback " "Enabled' ì„¤ì •ì„ ë¹„í™œì„±í™” 하세요." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2158,7 +2161,7 @@ msgstr "ì¶œë ¥ 지우기" #: editor/editor_network_profiler.cpp editor/editor_node.cpp #: editor/editor_profiler.cpp msgid "Stop" -msgstr "중단" +msgstr "ì •ì§€" #: editor/editor_network_profiler.cpp editor/editor_profiler.cpp #: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp @@ -2311,19 +2314,25 @@ msgid "Error saving TileSet!" msgstr "타ì¼ì…‹ ì €ìž¥ 중 오류!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "ë ˆì´ì•„웃 ì €ìž¥ 중 오류!" +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." -msgstr "기본 편집기 ë ˆì´ì•„ì›ƒì„ ë®ì–´ì”니다." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "기본 ë ˆì´ì•„ì›ƒì„ ì´ˆê¸°í™”í•˜ì˜€ìŠµë‹ˆë‹¤." #: editor/editor_node.cpp @@ -2822,14 +2831,17 @@ msgid "" "mobile device).\n" "You don't need to enable it to use the GDScript debugger locally." msgstr "" +"ì´ ì˜µì…˜ì´ í™œì„±í™” ëœ ê²½ìš° ì› í´ë¦ ë°°í¬ë¥¼ 사용하면 ì‹¤í–‰ì¤‘ì¸ í”„ë¡œì 트를 디버깅 " +"í• ìˆ˜ 있ë„ë¡ì´ ì»´í“¨í„°ì˜ IPì— ì—°ê²°ì„ ì‹œë„합니다.\n" +"ì´ ì˜µì…˜ì€ ì›ê²© 디버깅 (ì¼ë°˜ì 으로 ëª¨ë°”ì¼ ìž¥ì¹˜ 사용)ì— ì‚¬ìš©í•˜ê¸°ìœ„í•œ 것입니" +"다.\n" +"GDScript 디버거를 로컬ì—ì„œ 사용하기 위해 활성화 í• í•„ìš”ëŠ” 없습니다." #: editor/editor_node.cpp -#, fuzzy msgid "Small Deploy with Network Filesystem" msgstr "ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œì„ ì‚¬ìš©í•˜ì—¬ 작게 ë°°í¬" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, using one-click deploy for Android will only " "export an executable without the project data.\n" @@ -2838,60 +2850,55 @@ msgid "" "On Android, deploying will use the USB cable for faster performance. This " "option speeds up testing for projects with large assets." msgstr "" -"ì´ ì„¤ì •ì„ ì¼œë©´, 내보내거나 ë°°í¬í• ë•Œ ìµœì†Œí•œì˜ ì‹¤í–‰ 파ì¼ì„ 만ë“니다.\n" -"ì´ ê²½ìš°, 실행 파ì¼ì´ ë„¤íŠ¸ì›Œí¬ ë„ˆë¨¸ì— ìžˆëŠ” íŽ¸ì§‘ê¸°ì˜ íŒŒì¼ ì‹œìŠ¤í…œì„ ì‚¬ìš©í•©ë‹ˆ" -"다.\n" -"Androidì˜ ê²½ìš°, ë°°í¬ ì‹œ ë” ë¹ ë¥¸ ì†ë„를 위해 USB ì¼€ì´ë¸”ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ ì„¤ì •" -"ì€ ìš©ëŸ‰ì´ í° ê²Œìž„ì˜ í…ŒìŠ¤íŠ¸ ë°°í¬ ì†ë„를 í–¥ìƒì‹œí‚¬ 수 있습니다." +"ì´ ì˜µì…˜ì„ í™œì„±í™”í•˜ê³ Android ìš© ì› í´ë¦ ë°°í¬ë¥¼ 사용하면 프로ì 트 ë°ì´í„°ì—†ì´ " +"실행 파ì¼ë§Œ ë‚´ 보냅니다.\n" +"íŒŒì¼ ì‹œìŠ¤í…œì€ ë„¤íŠ¸ì›Œí¬ë¥¼ 통해 íŽ¸ì§‘ê¸°ì— ì˜í•´ 프로ì 트ì—ì„œ ì œê³µë©ë‹ˆë‹¤.\n" +"Androidì˜ ê²½ìš°, ë°°í¬ì‹œ ë” ë¹ ë¥¸ ì†ë„를 위해 USB ì¼€ì´ë¸”ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ ì„¤ì •" +"ì€ ìš©ëŸ‰ì´ í° ê²Œìž„ì˜ í…ŒìŠ¤íŠ¸ ì†ë„를 í–¥ìƒì‹œí‚µë‹ˆë‹¤." #: editor/editor_node.cpp msgid "Visible Collision Shapes" msgstr "ì¶©ëŒ ëª¨ì–‘ ë³´ì´ê¸°" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, collision shapes and raycast nodes (for 2D and " "3D) will be visible in the running project." msgstr "" -"ì´ ì„¤ì •ì„ ì¼œë©´ ê²Œìž„ì„ ì‹¤í–‰í•˜ëŠ” ë™ì•ˆ (2D와 3Dìš©) Collision 모양과 Raycast 노드" -"ê°€ ë³´ì´ê²Œ ë©ë‹ˆë‹¤." +"ì´ ì„¤ì •ì„ ì¼œë©´ 프로ì 트를 실행하는 ë™ì•ˆ (2D와 3Dìš©) Collision 모양과 Raycast " +"노드가 ë³´ì´ê²Œ ë©ë‹ˆë‹¤." #: editor/editor_node.cpp msgid "Visible Navigation" msgstr "내비게ì´ì…˜ ë³´ì´ê¸°" #: editor/editor_node.cpp -#, fuzzy msgid "" "When this option is enabled, navigation meshes and polygons will be visible " "in the running project." msgstr "" -"ì´ ì„¤ì •ì„ ì¼œë©´, ê²Œìž„ì„ ì‹¤í–‰í•˜ëŠ” ë™ì•ˆ Navigation 메시와 í´ë¦¬ê³¤ì´ ë³´ì´ê²Œ ë©ë‹ˆ" -"다." +"ì´ ì„¤ì •ì„ ì¼œë©´,프로ì 트를 실행하는 ë™ì•ˆ Navigation 메시와 í´ë¦¬ê³¤ì´ ë³´ì´ê²Œ ë©" +"니다." #: editor/editor_node.cpp -#, fuzzy msgid "Synchronize Scene Changes" -msgstr "씬 변경 ì‚¬í• ë™ê¸°í™”" +msgstr "씬 ë³€ê²½ì‚¬í• ë™ê¸°í™”" #: editor/editor_node.cpp -#, fuzzy 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 "" -"ì´ ì„¤ì •ì´ í™œì„±í™”ëœ ê²½ìš°, 편집기ì—ì„œ ì”¬ì„ ìˆ˜ì •í•˜ë©´ 실행 ì¤‘ì¸ ê²Œìž„ì—ë„ ë°˜ì˜ë©ë‹ˆ" -"다.\n" -"ì›ê²© 장치ì—ì„œ ì‚¬ìš©ì¤‘ì¸ ê²½ìš° ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œ ê¸°ëŠ¥ì„ í™œì„±í™”í•˜ë©´ ë”ìš± 효율" -"ì 입니다." +"ì´ ì„¤ì •ì´ í™œì„±í™”ëœ ê²½ìš°, 편집기ì—ì„œ ì”¬ì„ ìˆ˜ì •í•˜ë©´ ì‹¤í–‰ì¤‘ì¸ í”„ë¡œì íŠ¸ì— ë°˜ì˜ë©" +"니다.\n" +"ì›ê²©ìž¥ì¹˜ì—ì„œ ì‚¬ìš©ì¤‘ì¸ ê²½ìš° ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œ ê¸°ëŠ¥ì„ í™œì„±í™”í•˜ë©´ ë”ìš± 효율ì " +"입니다." #: editor/editor_node.cpp -#, fuzzy msgid "Synchronize Script Changes" -msgstr "스í¬ë¦½íŠ¸ 변경 ì‚¬í• ë™ê¸°í™”" +msgstr "스í¬ë¦½íŠ¸ ë³€ê²½ì‚¬í• ë™ê¸°í™”" #: editor/editor_node.cpp #, fuzzy @@ -3005,7 +3012,7 @@ msgstr "ë””ë²„ê¹…ì„ í•˜ê¸° 위해 씬 ì‹¤í–‰ì„ ì¤‘ë‹¨í•©ë‹ˆë‹¤." #: editor/editor_node.cpp msgid "Pause Scene" -msgstr "씬 멈추기" +msgstr "씬 ì¼ì‹œì •ì§€" #: editor/editor_node.cpp msgid "Stop the scene." @@ -3025,7 +3032,7 @@ msgstr "ì”¬ì„ ì§€ì •í•´ì„œ 실행합니다" #: editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "맞춤 씬 실행하기" +msgstr "커스텀 씬 실행" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." @@ -3062,7 +3069,7 @@ msgstr "ì¸ìŠ¤íŽ™í„°" #: editor/editor_node.cpp msgid "Expand Bottom Panel" -msgstr "하단 íŒ¨ë„ íŽ¼ì¹˜ê¸°" +msgstr "하단 íŒ¨ë„ í™•ìž¥" #: editor/editor_node.cpp msgid "Output" @@ -3746,6 +3753,11 @@ msgid "Move To..." msgstr "여기로 ì´ë™..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "ì˜¤í† ë¡œë“œ ì´ë™" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "새 씬..." @@ -5201,7 +5213,7 @@ msgstr "ìˆ˜í‰ ë° ìˆ˜ì§ ê°€ì´ë“œ 만들기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "CanvasItem \"%s\" Pivot Offset (%d, %d)ë¡œ ì„¤ì •" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -5414,12 +5426,12 @@ 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 "줌 초기화" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode" -msgstr "ì„ íƒ ëª¨ë“œ" +msgstr "모드 ì„ íƒ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -5440,17 +5452,17 @@ msgstr "Alt+ìš°í´ë¦: 겹친 ëª©ë¡ ì„ íƒ" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode" -msgstr "ì´ë™ 모드" +msgstr "ì´ë™ëª¨ë“œ" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode" -msgstr "íšŒì „ 모드" +msgstr "íšŒì „ëª¨ë“œ" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode" -msgstr "í¬ê¸° ì¡°ì ˆ 모드" +msgstr "í¬ê¸°ì¡°ì ˆ 모드" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -8221,7 +8233,7 @@ msgstr "ì–´í´ë£¨ì „" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Navigation" -msgstr "내비게ì´ì…˜" +msgstr "네비게ì´ì…˜" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Bitmask" @@ -9379,7 +9391,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "기존 ìœ ë‹ˆí¼ì— 대한 참조입니다." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -10335,19 +10347,16 @@ msgid "Batch Rename" msgstr "ì¼ê´„ ì´ë¦„ 바꾸기" #: editor/rename_dialog.cpp -#, fuzzy msgid "Replace:" -msgstr "바꾸기: " +msgstr "바꾸기:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Prefix:" -msgstr "ì ‘ë‘사" +msgstr "ì ‘ë‘사:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Suffix:" -msgstr "ì ‘ë¯¸ì‚¬" +msgstr "ì ‘ë¯¸ì‚¬:" #: editor/rename_dialog.cpp msgid "Use Regular Expressions" @@ -10394,9 +10403,8 @@ msgid "Per-level Counter" msgstr "단계별 ì¹´ìš´í„°" #: editor/rename_dialog.cpp -#, fuzzy msgid "If set, the counter restarts for each group of child nodes." -msgstr "ì„¤ì •í•˜ë©´ ê° ê·¸ë£¹ì˜ ìžì‹ ë…¸ë“œì˜ ì¹´ìš´í„°ë¥¼ 다시 시작합니다" +msgstr "ì„¤ì •í•˜ë©´ ê° ê·¸ë£¹ì˜ ìžì‹ ë…¸ë“œì˜ ì¹´ìš´í„°ë¥¼ 다시 시작합니다." #: editor/rename_dialog.cpp msgid "Initial value for the counter" @@ -10455,9 +10463,8 @@ msgid "Reset" msgstr "ë˜ëŒë¦¬ê¸°" #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expression Error:" -msgstr "ì •ê·œ í‘œí˜„ì‹ ì˜¤ë¥˜" +msgstr "ì •ê·œ í‘œí˜„ì‹ ì˜¤ë¥˜:" #: editor/rename_dialog.cpp msgid "At character %s" @@ -11988,6 +11995,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "편집기 ì„¤ì •ì—ì„œ 맞춤 ë¹Œë“œì— ìž˜ëª»ëœ ì•ˆë“œë¡œì´ë“œ SDK 경로입니다." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12038,21 +12053,37 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "\"Export AAB\"는 \"Use Custom Build\"ê°€ 활성화 ëœ ê²½ìš°ì—만 ìœ íš¨í•©ë‹ˆë‹¤." + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to delete unaligned APK." msgstr "" #: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "ìž˜ëª»ëœ íŒŒì¼ëª…! Android App Bundleì—는 * .aab 확장ìžê°€ 필요합니다." + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "APK í™•ìž¥ì€ Android App Bundleê³¼ 호환ë˜ì§€ 않습니다." + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "ìž˜ëª»ëœ íŒŒì¼ëª…! Android APK는 *.apk 확장ìžê°€ 필요합니다." + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." @@ -12529,7 +12560,7 @@ msgstr "" #: scene/3d/interpolated_camera.cpp msgid "" "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." -msgstr "" +msgstr "InterpolatedCamera는 ë” ì´ìƒ 사용ë˜ì§€ 않으며 Godot 4.0ì—ì„œ ì œê±°ë©ë‹ˆë‹¤." #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." @@ -12830,6 +12861,12 @@ msgstr "Varyingì€ ê¼ì§“ì 함수ì—만 ì§€ì •í• ìˆ˜ 있습니다." msgid "Constants cannot be modified." msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없습니다." +#~ msgid "Error trying to save layout!" +#~ msgstr "ë ˆì´ì•„웃 ì €ìž¥ 중 오류!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "기본 편집기 ë ˆì´ì•„ì›ƒì„ ë®ì–´ì”니다." + #~ msgid "Move pivot" #~ msgstr "피벗 ì´ë™" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index ce1f7b4a6a..505f8a7f64 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -1042,14 +1042,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2303,11 +2306,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2315,7 +2323,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3688,6 +3696,11 @@ msgstr "" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Mix Nodas" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Atidaryti Skriptų Editorių" @@ -11906,6 +11919,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11951,6 +11972,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 6fc7c196e7..e6f01427dd 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -7,12 +7,13 @@ # JÄnis Ondzuls <janisond@inbox.lv>, 2020. # Anonymous <noreply@weblate.org>, 2020. # StiLins <aigars.skilins@gmail.com>, 2020. +# Rihards Kubilis <oldcar@inbox.lv>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-04 18:34+0000\n" -"Last-Translator: StiLins <aigars.skilins@gmail.com>\n" +"PO-Revision-Date: 2020-11-15 12:43+0000\n" +"Last-Translator: Rihards Kubilis <oldcar@inbox.lv>\n" "Language-Team: Latvian <https://hosted.weblate.org/projects/godot-engine/" "godot/lv/>\n" "Language: lv\n" @@ -21,7 +22,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= " "19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1032,14 +1033,19 @@ msgid "Owners Of:" msgstr "ĪpaÅ¡nieki:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Vai noņemt izvÄ“lÄ“tos failus no projekta? (Netiks atjaunoti)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Faili, kurus JÅ«s vÄ“laties noņemt ir nepiecieÅ¡ami citiem resursiem lai tie " "varÄ“tu strÄdÄt.\n" @@ -1996,7 +2002,7 @@ msgstr "" #: editor/editor_help.cpp msgid "Constants" -msgstr "" +msgstr "Konstantes" #: editor/editor_help.cpp msgid "Property Descriptions" @@ -2275,11 +2281,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2287,7 +2298,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3627,6 +3638,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Jauna Aina..." @@ -11703,6 +11718,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11747,6 +11770,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/mi.po b/editor/translations/mi.po index cfa15d7032..992701c61d 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -993,14 +993,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2225,11 +2228,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2237,7 +2245,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3576,6 +3584,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11552,6 +11564,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11596,6 +11616,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index 0fc2207a60..b7d56c64a0 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -1003,14 +1003,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2237,11 +2240,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2249,7 +2257,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3588,6 +3596,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11569,6 +11581,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11613,6 +11633,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/mr.po b/editor/translations/mr.po index 8a4f7da346..f0658923ed 100644 --- a/editor/translations/mr.po +++ b/editor/translations/mr.po @@ -1000,14 +1000,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2232,11 +2235,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2244,7 +2252,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3583,6 +3591,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11560,6 +11572,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11604,6 +11624,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index fcafe6a26c..2db5b0bd78 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -1035,14 +1035,19 @@ msgid "Owners Of:" msgstr "Pemilik:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Alih keluar fail terpilih dari projek? (Tidak dapat dipulihkan)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Fail yang akan dikeluarkan diperlukan oleh sumber lain agar dapat " "berfungsi.\n" @@ -2314,19 +2319,25 @@ msgid "Error saving TileSet!" msgstr "Ralat semasa menyimpan TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Ralat semasa menyimpan susun atur!" +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." -msgstr "Susun atur lalai telah diganti." +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 "Nama susun atur tidak dijumpai!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Tata letak lalai telah dipulihkan ke tetapan asas." #: editor/editor_node.cpp @@ -3686,6 +3697,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Pindah Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11700,6 +11716,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11744,6 +11768,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12414,6 +12454,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "Ralat semasa menyimpan susun atur!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Susun atur lalai telah diganti." + #~ msgid "Move Anim Track Up" #~ msgstr "Ubah Trek Anim Ke Atas" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index f8862919b2..20037160d2 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -1088,14 +1088,18 @@ msgstr "Eiere Av:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Fjerne valgte filer fra prosjektet? (kan ikke angres)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Filene som fjernes kreves for at andre ressurser skal virke.\n" "Fjern dem likevel? (kan ikke angres)" @@ -2439,19 +2443,25 @@ msgid "Error saving TileSet!" msgstr "Error ved lagring av TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Error ved lagring av layout!" +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." -msgstr "Standard editor layout overskrevet." +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 "Layoutnavn ikke funnet!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Gjenoppretter standard layout til grunninnstillinger." #: editor/editor_node.cpp @@ -3948,6 +3958,11 @@ msgstr "Flytt Til..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Flytt Autoload" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Ny Scene" @@ -12561,6 +12576,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12606,6 +12629,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13295,6 +13334,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke endres." +#~ msgid "Error trying to save layout!" +#~ msgstr "Error ved lagring av layout!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Standard editor layout overskrevet." + #, fuzzy #~ msgid "Move pivot" #~ msgstr "Flytt Pivot" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index f8289c4c55..485dca4cf3 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -47,7 +47,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-08-28 13:09+0000\n" +"PO-Revision-Date: 2020-10-30 10:21+0000\n" "Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" @@ -56,7 +56,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.2.1-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1071,16 +1071,21 @@ msgid "Owners Of:" msgstr "Eigenaren van:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Geselecteerde bestanden uit het project verwijderen? (Kan niet ongedaan " "gemaakt worden)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "De bestanden die verwijderd worden zijn nodig om andere bronnen te laten " "werken.\n" @@ -2350,19 +2355,25 @@ msgid "Error saving TileSet!" msgstr "Error bij het opslaan van TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Fout bij het opslaan van indeling!" +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." -msgstr "Standaardeditorindeling overschreven." +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 "Indelingsnaam niet gevonden!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Standaardindeling teruggezet naar basisinstellingen." #: editor/editor_node.cpp @@ -3804,6 +3815,11 @@ msgid "Move To..." msgstr "Verplaats Naar..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Autoload verplaatsen" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nieuwe scène..." @@ -7889,9 +7905,8 @@ msgid "New Animation" msgstr "Niewe animatie" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Speed:" -msgstr "Snelheid (FPS):" +msgstr "Snelheid:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" @@ -12138,6 +12153,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "Ongeldig Android SDK pad voor custom build in Editor Settings." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12192,6 +12215,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13005,6 +13044,12 @@ msgstr "Varyings kunnen alleen worden toegewezenin vertex functies." msgid "Constants cannot be modified." msgstr "Constanten kunnen niet worden aangepast." +#~ msgid "Error trying to save layout!" +#~ msgstr "Fout bij het opslaan van indeling!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Standaardeditorindeling overschreven." + #~ msgid "Move pivot" #~ msgstr "Draaipunt verplaatsen" diff --git a/editor/translations/or.po b/editor/translations/or.po index 1144d93efd..c54279ee27 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -999,14 +999,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2231,11 +2234,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2243,7 +2251,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3582,6 +3590,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11558,6 +11570,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11602,6 +11622,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 114e37d50a..ad95b4fc23 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -1067,14 +1067,19 @@ msgid "Owners Of:" msgstr "WÅ‚aÅ›ciciele:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Usunąć wybrane pliki z projektu? (Nie można ich przywrócić)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Usuwany plik jest wymagany przez inne zasoby do dziaÅ‚ania.\n" "Usunąć mimo to? (Nie można tego cofnąć)" @@ -2335,19 +2340,25 @@ msgid "Error saving TileSet!" msgstr "BÅ‚Ä…d podczas zapisywania TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "BÅ‚Ä…d podczas zapisu ukÅ‚adu!" +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." -msgstr "DomyÅ›lny ukÅ‚ad edytora zostaÅ‚ nadpisany." +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 "Nie znaleziono nazwy ukÅ‚adu!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Przywrócono domyÅ›lny ukÅ‚ad do ustawieÅ„ bazowych." #: editor/editor_node.cpp @@ -3780,6 +3791,11 @@ msgid "Move To..." msgstr "PrzenieÅ› do..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Przemieść Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nowa scena..." @@ -12091,6 +12107,14 @@ msgstr "" "Edytora." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12145,6 +12169,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12964,6 +13004,12 @@ msgstr "Varying może być przypisane tylko w funkcji wierzchoÅ‚ków." msgid "Constants cannot be modified." msgstr "StaÅ‚e nie mogÄ… być modyfikowane." +#~ msgid "Error trying to save layout!" +#~ msgstr "BÅ‚Ä…d podczas zapisu ukÅ‚adu!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "DomyÅ›lny ukÅ‚ad edytora zostaÅ‚ nadpisany." + #~ msgid "Move pivot" #~ msgstr "PrzesuÅ„ oÅ›" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index b66652b18b..715962a2c0 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -1043,14 +1043,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2311,11 +2314,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2323,7 +2331,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3703,6 +3711,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Forge yer Node!" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11988,6 +12001,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12033,6 +12054,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/pt.po b/editor/translations/pt.po index e22a5e7818..f21cb0cb6d 100644 --- a/editor/translations/pt.po +++ b/editor/translations/pt.po @@ -1043,14 +1043,19 @@ msgid "Owners Of:" msgstr "Proprietários de:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Remover ficheiros selecionados do Projeto? (Sem desfazer)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Os ficheiros a serem removidos são necessários para que outros recursos " "funcionem.\n" @@ -2317,19 +2322,25 @@ msgid "Error saving TileSet!" msgstr "Erro ao guardar TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Erro ao tentar guardar o Modelo!" +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." -msgstr "O modelo do editor predefinido foi substituÃdo." +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 "Nome do Modelo não encontrado!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Modelo predefinido restaurado para as configurações base." #: editor/editor_node.cpp @@ -3768,6 +3779,11 @@ msgid "Move To..." msgstr "Mover para..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Mover Carregamento Automático" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nova Cena..." @@ -12064,6 +12080,14 @@ msgstr "" "Configurações." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12118,6 +12142,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12927,6 +12967,12 @@ msgstr "Variações só podem ser atribuÃdas na função vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem ser modificadas." +#~ msgid "Error trying to save layout!" +#~ msgstr "Erro ao tentar guardar o Modelo!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "O modelo do editor predefinido foi substituÃdo." + #~ msgid "Move pivot" #~ msgstr "Mover pivô" diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 1b81b4f77f..a4bc29327b 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -1123,14 +1123,19 @@ msgid "Owners Of:" msgstr "Donos De:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Remover arquivos selecionados do projeto? (irreversÃvel)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Os arquivos sendo removidos são requeridos por outros recursos para que " "funcionem.\n" @@ -2396,19 +2401,25 @@ msgid "Error saving TileSet!" msgstr "Erro ao salvar TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Erro ao salvar o layout!" +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." -msgstr "Layout padrão do editor sobrescrito." +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 "Nome do layout não encontrado!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Layout padrão restaurado à s configurações base." #: editor/editor_node.cpp @@ -3851,6 +3862,11 @@ msgid "Move To..." msgstr "Mover Para..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Mover Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nova Cena..." @@ -12168,6 +12184,14 @@ msgstr "" "do Editor." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12222,6 +12246,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13033,6 +13073,12 @@ msgstr "Variáveis só podem ser atribuÃdas na função de vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem serem modificadas." +#~ msgid "Error trying to save layout!" +#~ msgstr "Erro ao salvar o layout!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Layout padrão do editor sobrescrito." + #~ msgid "Move pivot" #~ msgstr "Mover Pivô" diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 1bdb567685..182c978ee8 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -1042,14 +1042,19 @@ msgid "Owners Of:" msgstr "Stăpâni La:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "ȘtergeÈ›i fiÈ™ierele selectate din proiect? (AcÈ›iune ireversibilă)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "FiÈ™ierele în proces de È™tergere sunt necesare pentru alte resurse ca ele să " "sa funcÈ›ioneze.\n" @@ -2322,19 +2327,25 @@ msgid "Error saving TileSet!" msgstr "Eroare la salvarea TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Eroare la încercarea de a salva schema!" +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." -msgstr "Schemă implicită de editor suprascrisă." +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 "Numele schemei nu a fost găsit!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "S-a restaurat schema implictă la setările de bază." #: editor/editor_node.cpp @@ -3756,6 +3767,11 @@ msgid "Move To..." msgstr "Mută ÃŽn..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "MutaÈ›i Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Scenă nouă..." @@ -12108,6 +12124,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12152,6 +12176,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12831,6 +12871,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "Eroare la încercarea de a salva schema!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Schemă implicită de editor suprascrisă." + #, fuzzy #~ msgid "Move pivot" #~ msgstr "Mută Pivot" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index d261bb8832..0a0c72a78f 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -92,7 +92,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-15 23:15+0000\n" +"PO-Revision-Date: 2020-11-08 10:26+0000\n" "Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -102,7 +102,7 @@ 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 4.3-dev\n" +"X-Generator: Weblate 4.3.2\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1112,14 +1112,19 @@ msgid "Owners Of:" msgstr "Владельцы:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Удалить выбранные файлы из проекта? (ÐÐµÐ»ÑŒÐ·Ñ Ð²Ð¾ÑÑтановить)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "УдалÑемый файл требуетÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¹ работы других реÑурÑов.\n" "Ð’ÑÑ‘ равно удалить его? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)" @@ -1674,33 +1679,31 @@ msgstr "" "Enabled»." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует Ñжатие текÑтур «ETC» Ð´Ð»Ñ GLES2. Включите «Import " -"Etc» в ÐаÑтройках проекта." +"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует Ñжатие текÑтур «PVRTC» Ð´Ð»Ñ GLES2. Включите «Import " +"Pvrtc» в ÐаÑтройках проекта." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует компреÑÑию текÑтур «ETC2» Ð´Ð»Ñ GLES2. Включите " -"«Import Etc 2» в ÐаÑтройках проекта." +"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует компреÑÑию текÑтур «ETC2» или «PVRTC» Ð´Ð»Ñ GLES3. " +"Включите «Import Etc 2» или «Import Pvrtc» в ÐаÑтройках проекта." #: editor/editor_export.cpp -#, fuzzy 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 "" -"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур «ETC» Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° драйвера к GLES2.\n" -"Включите «Import Etc» в ÐаÑтройках проекта или отключите «Driver Fallback " +"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур «PVRTC» Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° драйвера к " +"GLES2.\n" +"Включите «Import Pvrtc» в ÐаÑтройках проекта или отключите «Driver Fallback " "Enabled»." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2384,19 +2387,25 @@ msgid "Error saving TileSet!" msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° тайлов!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Ошибка при попытке Ñохранить макет!" +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." -msgstr "Переопределить макет по умолчанию." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Вернуть макет по умолчанию к Ñтандартному." #: editor/editor_node.cpp @@ -3832,6 +3841,11 @@ msgid "Move To..." msgstr "ПеремеÑтить в..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "ПеремеÑтить автозагрузку" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "ÐÐ¾Ð²Ð°Ñ Ñцена..." @@ -5292,50 +5306,43 @@ msgstr "Создать горизонтальные и вертикальные #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Задать Pivot Offset узла CanvasItem «%s» в (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Вращать CanvasItem" +msgstr "Вращать %d узлов CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Вращать CanvasItem" +msgstr "Повернуть узел CanvasItem «%s» на %d градуÑов" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "ПеремеÑтить CanvasItem" +msgstr "Передвинуть Ñкорь узла CanvasItem «%s»" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "МаÑштабировать узел Node2D «%s» в (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Изменить размер узла Control «%s» на (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Вращать CanvasItem" +msgstr "МаÑштабировать %d узлов CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Вращать CanvasItem" +msgstr "МаÑштабировать узел CanvasItem «%s» в (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "ПеремеÑтить CanvasItem" +msgstr "Передвинуть %d узлов CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "ПеремеÑтить CanvasItem" +msgstr "Передвинуть CanvasItem «%s» в (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6612,18 +6619,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" @@ -6671,14 +6676,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 "Преобразовать в Polygon2D" +msgstr "Копировать UV в полигон" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8228,13 +8231,12 @@ msgid "Paint Tile" msgstr "ПокраÑить тайл" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+ЛКМ: ÐариÑовать линию\n" -"Shift+Ctrl+ЛКМ: ÐариÑовать прÑмоугольник" +"Shift+Command+ЛКМ: ÐариÑовать прÑмоугольник" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8760,9 +8762,8 @@ msgid "Add Node to Visual Shader" msgstr "Добавить узел в визуальный шейдер" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Узел перемещён" +msgstr "Узел(узлы) перемещён(ны)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8782,9 +8783,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Изменен тип ввода визуального шейдера" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Задать Ð¸Ð¼Ñ uniform" +msgstr "Ð˜Ð¼Ñ UniformRef изменено" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9499,7 +9499,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "СÑылка на ÑущеÑтвующий uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -10654,7 +10654,7 @@ msgstr "Дополнить Ñценой(ами)" #: editor/scene_tree_dock.cpp msgid "Replace with Branch Scene" -msgstr "Сохранить ветку как Ñцену" +msgstr "Заменить на Ñцену-ветку" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" @@ -10867,11 +10867,11 @@ msgstr "Соединить Ñо Ñценой" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Save Branch as Scene" -msgstr "Сохранить ветку, как Ñцену" +msgstr "Сохранить ветку как Ñцену" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Copy Node Path" -msgstr "Копировать путь ноды" +msgstr "Копировать путь узла" #: editor/scene_tree_dock.cpp msgid "Delete (No Confirm)" @@ -11988,7 +11988,7 @@ msgstr "Удалить выделенное" #: modules/visual_script/visual_script_editor.cpp msgid "Find Node Type" -msgstr "Ðайти тип нода" +msgstr "Ðайти тип узла" #: modules/visual_script/visual_script_editor.cpp msgid "Copy Nodes" @@ -12139,6 +12139,14 @@ msgstr "" "редактора." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12190,20 +12198,38 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"«Export AAB» дейÑтвителен только при включённой опции «ИÑпользовать " +"пользовательÑкую Ñборку»." #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°! Android App Bundle требует раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ *.aab." + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "APK Expansion неÑовмеÑтимо Ñ Android App Bundle." + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°! Android APK требует раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ *.apk." + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." @@ -12238,13 +12264,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Перемещение выходных данных" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Ðевозможно Ñкопировать и переименовать файл ÑкÑпорта, проверьте диекторию " +"проекта gradle на наличие выходных данных." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13000,6 +13028,12 @@ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть назначены только Ð msgid "Constants cannot be modified." msgstr "КонÑтанты не могут быть изменены." +#~ msgid "Error trying to save layout!" +#~ msgstr "Ошибка при попытке Ñохранить макет!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Переопределить макет по умолчанию." + #~ msgid "Move pivot" #~ msgstr "ПеремеÑтить опорную точку" diff --git a/editor/translations/si.po b/editor/translations/si.po index 87851aa75a..a37f322236 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -1022,14 +1022,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2255,11 +2258,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2267,7 +2275,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3608,6 +3616,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11652,6 +11664,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11696,6 +11716,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index cedcac1f60..2ea30329d5 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -1027,14 +1027,19 @@ msgid "Owners Of:" msgstr "Majitelia:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "OdstrániÅ¥ vybraté súbory z projektu? (nedá sa vrátiÅ¥ späť)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Súbory ktoré budú odstránené vyžadujú ÄalÅ¡ie zdroje, aby mohli pracovaÅ¥.\n" "OdstrániÅ¥ aj napriek tomu? (nedá sa vrátiÅ¥ späť)" @@ -2298,19 +2303,25 @@ msgid "Error saving TileSet!" msgstr "Error pri ukladanà TileSet-u!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Error pri ukladanà layout-i!" +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." -msgstr "Predvolený editor layout je prepÃsaný." +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 "Meno Layout-u sa nenaÅ¡lo!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Obnovené predvolené rozloženie na základné nastavenia." #: editor/editor_node.cpp @@ -3740,6 +3751,11 @@ msgid "Move To..." msgstr "Presunúť Do..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "Presunúť AutoLoad-y" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Nová Scéna..." @@ -12002,6 +12018,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12047,6 +12071,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12741,6 +12781,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "Error pri ukladanà layout-i!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Predvolený editor layout je prepÃsaný." + #~ msgid "Move pivot" #~ msgstr "Presunúť pivot" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 5f0f2941a8..018ffe7b03 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -1084,14 +1084,18 @@ msgstr "Lastniki:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Odstranim izbrane datoteke iz projekta? (brez vrnitve)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Izbrisane datoteke so potrebne za delovanje drugih virov.\n" "Ali jih vseeno odstranim? (brez vrnitve)" @@ -2410,19 +2414,25 @@ msgid "Error saving TileSet!" msgstr "Napaka pri shranjevanju PloÅ¡ÄnegaNiza!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Napaka pri shranjevanju postavitev!" +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." -msgstr "Privzeti urejevalnik postavitev je bil prepisan." +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 "Ime postavitve ni mogoÄe najti!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Privzeta postavitev je bila ponastavljena na osnovne nastaviteve." #: editor/editor_node.cpp @@ -3885,6 +3895,11 @@ msgstr "Premakni V..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Premakni SamodejnoNalaganje" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Nov Prizor" @@ -12390,6 +12405,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12435,6 +12458,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13147,6 +13186,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstante ni možno spreminjati." +#~ msgid "Error trying to save layout!" +#~ msgstr "Napaka pri shranjevanju postavitev!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Privzeti urejevalnik postavitev je bil prepisan." + #, fuzzy #~ msgid "Move pivot" #~ msgstr "Premakni ToÄko" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index fcc1ee403d..f9b1341f29 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -1026,14 +1026,18 @@ msgstr "Pronarët e:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Hiq skedarët e zgjedhur nga projekti? (pa kthim pas)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Skedarët që do të hiqen janë të kërkuara nga resurse të tjera në mënyrë që " "ato të funksionojnë.\n" @@ -2349,19 +2353,25 @@ msgid "Error saving TileSet!" msgstr "Gabim gjatë ruajtjes së TileSet-it!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Gabim duke provuar të ruaj faqosjen!" +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." -msgstr "Faqosja e parazgjedhur e editorit u mbishkel." +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 "Emri i faqosjes nuk u gjet!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Riktheu faqosjen e parazgjedhur në opsionet bazë." #: editor/editor_node.cpp @@ -3825,6 +3835,11 @@ msgstr "Lëviz në..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Lëviz Autoload-in" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Skenë e Re" @@ -11991,6 +12006,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12035,6 +12058,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12707,6 +12746,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "Gabim duke provuar të ruaj faqosjen!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Faqosja e parazgjedhur e editorit u mbishkel." + #, fuzzy #~ msgid "Add initial export..." #~ msgstr "Shto te të preferuarat" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 68cddb924c..06298476d6 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -1139,14 +1139,18 @@ msgstr "ВлаÑници:" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Обриши одабране датотеке из пројекта? (ÐЕМРОПОЗИВÐЊÐ)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Жељене датотеке за бриÑање Ñу потребне за рад других реÑурÑа.\n" "Ипак их обриши? (ÐЕМРОПОЗИВÐЊÐ)" @@ -2528,19 +2532,25 @@ msgid "Error saving TileSet!" msgstr "Грешка при чувању TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Грешка при чувању раÑпореда!" +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." -msgstr "Уобичајен раÑпоред је преуређен." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "ПоÑтави подразумевани изглед на почетну вредноÑÑ‚." #: editor/editor_node.cpp @@ -4080,6 +4090,11 @@ msgstr "Помери у..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Помери аутоматÑко учитавање" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Ðова Ñцена" @@ -13591,6 +13606,14 @@ msgstr "" "Ðеважећа Android SDK путања за произвољну изградњу у Подешавањима Уредника." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp #, fuzzy msgid "" "Android build template not installed in the project. Install it from the " @@ -13640,6 +13663,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -14559,6 +14598,12 @@ msgstr "Варијације могу Ñамо бити одређене у фу msgid "Constants cannot be modified." msgstr "КонÑтанте није могуће мењати." +#~ msgid "Error trying to save layout!" +#~ msgstr "Грешка при чувању раÑпореда!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Уобичајен раÑпоред је преуређен." + #, fuzzy #~ msgid "Move pivot" #~ msgstr "Помери пивот" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index acd02840c7..2f3379ec14 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -1031,14 +1031,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2269,11 +2272,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2281,7 +2289,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3625,6 +3633,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11741,6 +11753,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11785,6 +11805,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index 86a496279a..a3c1c190dc 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -19,12 +19,14 @@ # André Andersson <andre.eric.andersson@gmail.com>, 2020. # Andreas Westrell <andreas.westrell@gmail.com>, 2020. # Gustav Andersson <gustav.andersson96@outlook.com>, 2020. +# Shaggy <anton_christoffersson@hotmail.com>, 2020. +# Marcus Toftedahl <marcus.toftedahl@his.se>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-29 09:14+0000\n" -"Last-Translator: Gustav Andersson <gustav.andersson96@outlook.com>\n" +"PO-Revision-Date: 2020-11-04 02:39+0000\n" +"Last-Translator: Marcus Toftedahl <marcus.toftedahl@his.se>\n" "Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/" "godot/sv/>\n" "Language: sv\n" @@ -32,7 +34,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.3-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -913,9 +915,8 @@ msgid "Signals" msgstr "Signaler" #: editor/connections_dialog.cpp -#, fuzzy msgid "Filter signals" -msgstr "Filtrera Filer..." +msgstr "Filtrera signaler" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -1043,14 +1044,19 @@ msgid "Owners Of:" msgstr "Ägare av:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Ta bort valda filer frÃ¥n projektet? (Kan ej Ã¥terställas)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Filerna som tas bort krävs av andra resurser för att de ska fungera.\n" "Ta bort dem ändÃ¥? (gÃ¥r inte Ã¥ngra)" @@ -1089,9 +1095,8 @@ msgid "Permanently delete %d item(s)? (No undo!)" msgstr "Ta bort %d sak(er) permanent? (GÃ¥r inte Ã¥ngra!)" #: editor/dependency_editor.cpp -#, fuzzy msgid "Show Dependencies" -msgstr "Beroenden" +msgstr "Visa Beroenden" #: editor/dependency_editor.cpp msgid "Orphan Resource Explorer" @@ -1161,12 +1166,10 @@ msgid "Gold Sponsors" msgstr "Guldsponsorer" #: editor/editor_about.cpp -#, fuzzy msgid "Silver Sponsors" msgstr "Silverdonatorer" #: editor/editor_about.cpp -#, fuzzy msgid "Bronze Sponsors" msgstr "Bronsdonatorer" @@ -1308,9 +1311,8 @@ msgid "Delete Bus Effect" msgstr "Ta bort Buss-Effekt" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Drag & drop to rearrange." -msgstr "Ljud-Buss, dra och släpp för att ändra ordning." +msgstr "Dra och släpp för att ändra ordning." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -1370,12 +1372,10 @@ msgid "Move Audio Bus" msgstr "Flytta Ljud-Buss" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Save Audio Bus Layout As..." msgstr "Spara Ljud-Buss Layout Som..." #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Location for New Layout..." msgstr "Plats för Ny Layout..." @@ -1615,6 +1615,10 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" +"MÃ¥lplattformen kräver 'ETC' texturkomprimering sÃ¥ GLES2 kan användas som " +"reserv grafik drivare.\n" +"Aktivera 'Import Etc' i Projektinställningarna eller deaktivera 'Driver " +"Fallback Enabled'." #: editor/editor_export.cpp #, fuzzy @@ -1655,7 +1659,7 @@ msgstr "Mallfil hittades inte:" #: 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 "" +msgstr "Anpassad release mall hittades inte." #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" @@ -1663,7 +1667,7 @@ msgstr "Mallfil hittades inte:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." -msgstr "" +msgstr "Den inbäddade PCK fÃ¥r inte vara större än 4 GiB pÃ¥ 32 bitars exporter." #: editor/editor_feature_profile.cpp #, fuzzy @@ -1706,7 +1710,7 @@ msgstr "Ersätt Alla" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" -msgstr "" +msgstr "Profilen mÃ¥ste ha ett giltigt filnamn och fÃ¥r inte innehÃ¥lla '.'" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1715,7 +1719,7 @@ msgstr "En fil eller mapp med detta namn finns redan." #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" -msgstr "" +msgstr "(Editor inaktiverad, Egenskaper inaktiverad)" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1734,7 +1738,7 @@ msgstr "Beskrivning:" #: editor/editor_feature_profile.cpp msgid "Enable Contextual Editor" -msgstr "" +msgstr "Aktivera kontextuell redigerare" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1743,7 +1747,7 @@ msgstr "Egenskaper" #: editor/editor_feature_profile.cpp msgid "Enabled Features:" -msgstr "" +msgstr "Aktivera funktioner:" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1752,13 +1756,15 @@ msgstr "Sök Klasser" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "" +msgstr "Fil '%s''s format är ogiltig, import avbruten" #: editor/editor_feature_profile.cpp msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." msgstr "" +"Profilen '%s' finns redan. Ta bort den före du importerar. Importeringen " +"avbruten." #: editor/editor_feature_profile.cpp #, fuzzy @@ -1816,7 +1822,7 @@ msgstr "Radera punkter" #: editor/editor_feature_profile.cpp msgid "Godot Feature Profile" -msgstr "" +msgstr "Godot funktions profil" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1970,11 +1976,11 @@ msgstr "Växla Dolda Filer" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." -msgstr "" +msgstr "sortera objekt som ett rutnät av bilder." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a list." -msgstr "" +msgstr "Visa objekt som lista." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" @@ -2369,11 +2375,16 @@ msgid "Error saving TileSet!" msgstr "Fel vid sparande av TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Fel vid försök att spara layout!" +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." +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 @@ -2381,7 +2392,7 @@ msgid "Layout name not found!" msgstr "Layoutnamn hittades inte!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3829,6 +3840,11 @@ msgstr "Flytta Till..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Flytta Autoload" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Ny Scen" @@ -12275,6 +12291,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12320,6 +12344,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13032,6 +13072,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Error trying to save layout!" +#~ msgstr "Fel vid försök att spara layout!" + #, fuzzy #~ msgid "Move pivot" #~ msgstr "Flytta Upp" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 233ec40229..cf3e8a2cc3 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -1027,14 +1027,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2261,11 +2264,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2273,7 +2281,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3616,6 +3624,11 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "சேர௠மà¯à®•à¯à®•à®¿à®¯à®ªà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11650,6 +11663,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11694,6 +11715,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po index 8d4a4192e8..235f63fdcc 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -1002,14 +1002,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2234,11 +2237,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2246,7 +2254,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3585,6 +3593,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11562,6 +11574,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11606,6 +11626,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 4f0cf780a4..84b8d405b5 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-15 17:26+0000\n" +"PO-Revision-Date: 2020-10-31 23:15+0000\n" "Last-Translator: Thanachart Monpassorn <nunf_2539@hotmail.com>\n" "Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/" "th/>\n" @@ -20,7 +20,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.3-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1020,14 +1020,19 @@ msgid "Owners Of:" msgstr "เจ้าขà¸à¸‡à¸‚à¸à¸‡:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "ลบไฟล์ที่เลืà¸à¸à¸à¸à¸à¸ˆà¸²à¸à¹‚ปรเจà¸à¸•à¹Œ? (à¸à¸¹à¹‰à¸„ืนไม่ได้)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "ไฟล์ที่à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸¥à¸š จำเป็นสำหรับใช้งานโดยทรัพยาà¸à¸£à¸à¸±à¸™à¸à¸·à¹ˆà¸™\n" "จะทำà¸à¸²à¸£à¸¥à¸šà¸«à¸£à¸·à¸à¹„ม่? (คืนà¸à¸¥à¸±à¸šà¹„ม่ได้)" @@ -1580,33 +1585,30 @@ msgstr "" "เปิด 'Import Etc' ในตั้งค่าโปรเจ็คหรืà¸à¸›à¸´à¸” 'Driver Fallback Enabled'" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"à¹à¸žà¸¥à¸•à¸Ÿà¸à¸£à¹Œà¸¡à¹€à¸›à¹‰à¸²à¸«à¸¡à¸²à¸¢à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸à¸²à¸£à¸šà¸µà¸šà¸à¸±à¸”เทà¸à¹€à¸ˆà¸à¸£à¹Œ 'ETC' สำหรับ GLES2 เปิด 'Import Etc' " +"à¹à¸žà¸¥à¸•à¸Ÿà¸à¸£à¹Œà¸¡à¹€à¸›à¹‰à¸²à¸«à¸¡à¸²à¸¢à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸à¸²à¸£à¸šà¸µà¸šà¸à¸±à¸”เทà¸à¹€à¸ˆà¸à¸£à¹Œ 'ETC' สำหรับ GLES2 à¸à¸£à¸¸à¸“าเปิด 'Import Etc' " "ในตั้งค่าโปรเจ็ค" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"à¹à¸žà¸¥à¸•à¸Ÿà¸à¸£à¹Œà¸¡à¹€à¸›à¹‰à¸²à¸«à¸¡à¸²à¸¢à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸à¸²à¸£à¸šà¸µà¸šà¸à¸±à¸”เทà¸à¹€à¸ˆà¸à¸£à¹Œ 'ETC2' สำหรับ GLES3 เปิด 'Import Etc 2' " -"ในตั้งค่าโปรเจ็ค" +"à¹à¸žà¸¥à¸•à¸Ÿà¸à¸£à¹Œà¸¡à¹€à¸›à¹‰à¸²à¸«à¸¡à¸²à¸¢à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸à¸²à¸£à¸šà¸µà¸šà¸à¸±à¸”เทà¸à¹€à¸ˆà¸à¸£à¹Œ 'ETC2' สำหรับ GLES3 à¸à¸£à¸¸à¸“าเปิด 'Import Etc " +"2' หรืภ'Import Pvrtc' ในตั้งค่าโปรเจ็ค" #: editor/editor_export.cpp -#, fuzzy 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 "" -"à¹à¸žà¸¥à¸•à¸Ÿà¸à¸£à¹Œà¸¡à¹€à¸›à¹‰à¸²à¸«à¸¡à¸²à¸¢à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸à¸²à¸£à¸šà¸µà¸šà¸à¸±à¸”เทà¸à¹€à¸ˆà¸à¸£à¹Œ 'ETC' สำหรับà¸à¸²à¸£à¸à¸¥à¸±à¸šà¸¡à¸²à¹ƒà¸Šà¹‰ GLES2\n" -"เปิด 'Import Etc' ในตั้งค่าโปรเจ็คหรืà¸à¸›à¸´à¸” 'Driver Fallback Enabled'" +"à¹à¸žà¸¥à¸•à¸Ÿà¸à¸£à¹Œà¸¡à¹€à¸›à¹‰à¸²à¸«à¸¡à¸²à¸¢à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸à¸²à¸£à¸šà¸µà¸šà¸à¸±à¸”เทà¸à¹€à¸ˆà¸à¸£à¹Œ 'PVRTC' สำหรับà¸à¸²à¸£à¸à¸¥à¸±à¸šà¸¡à¸²à¹ƒà¸Šà¹‰ GLES2\n" +"เปิด 'Import Pvrtc' ในตั้งค่าโปรเจ็คหรืà¸à¸›à¸´à¸” 'Driver Fallback Enabled'" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2274,19 +2276,25 @@ msgid "Error saving TileSet!" msgstr "ผิดพลาดขณะบันทึà¸à¹„ทล์เซต!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "ผิดพลาดขณะบันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸à¸²à¸•à¹Œ!" +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." -msgstr "à¹à¸—นที่เลย์เà¸à¸²à¸•à¹Œà¹€à¸£à¸´à¹ˆà¸¡à¸•à¹‰à¸™" +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "คืนเลย์เà¸à¸²à¸•à¹Œà¹€à¸›à¹‡à¸™à¸„่าเริ่มต้น" #: editor/editor_node.cpp @@ -3682,6 +3690,11 @@ msgid "Move To..." msgstr "ย้ายไป..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "เลื่à¸à¸™à¸à¸à¹‚ต้โหลด" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "ฉาà¸à¹ƒà¸«à¸¡à¹ˆ..." @@ -5125,50 +5138,43 @@ msgstr "สร้างเส้นไà¸à¸”์à¹à¸™à¸§à¸•à¸±à¹‰à¸‡à¹à¸¥à¸°à¹ #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "ตั้งà¸à¸à¸Ÿà¹€à¸‹à¹‡à¸•à¸ˆà¸¸à¸”หมุน CanvasItem \"%s\" ไปยัง (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "หมุน CanvasItem" +msgstr "หมุน %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "หมุน CanvasItem" +msgstr "หมุน CanvasItem \"%s\" ไปที่ %d à¸à¸‡à¸¨à¸²" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "เลื่à¸à¸™ CanvasItem" +msgstr "เลื่à¸à¸™à¸ˆà¸¸à¸”ยึด CanvasItem \"%s\"" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "ปรับขนาด Node2D \"%s\" ไปยัง (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "ปรับขนาด Control \"%s\" ไปยัง (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "ขนาด CanvasItem" +msgstr "ปรับขนาด %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "ขนาด CanvasItem" +msgstr "ปรับขนาด CanvasItem \"%s\" ไปยัง (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "เลื่à¸à¸™ CanvasItem" +msgstr "เลื่à¸à¸™ %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "เลื่à¸à¸™ CanvasItem" +msgstr "เลื่à¸à¸™ CanvasItem \"%s\" ไปยัง (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6431,16 +6437,14 @@ msgid "Move Points" msgstr "ย้ายจุด" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "ลาà¸: หมุน" +msgstr "ctrl: หมุน" #: 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: ปรับขนาด" @@ -6489,14 +6493,12 @@ msgid "Radius:" msgstr "รัศมี:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "สร้าง Polygon à¹à¸¥à¸° UV" +msgstr "คัดลà¸à¸à¹‚พลีà¸à¸à¸™à¹„ปยังยูวี" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™ Polygon2D" +msgstr "คัดลà¸à¸à¸¢à¸¹à¸§à¸µà¹„ปยังโพลีà¸à¸à¸™" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8036,13 +8038,12 @@ msgid "Paint Tile" msgstr "วาดไทล์" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift+LMB: วาดเส้น\n" -"Shift+Ctrl+LMB: วาดสี่เหลี่ยม" +"Shift+คลิà¸à¸‹à¹‰à¸²à¸¢: วาดเส้น\n" +"Shift+Ctrl+คลิà¸à¸‹à¹‰à¸²à¸¢: วาดสี่เหลี่ยม" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8564,9 +8565,8 @@ msgid "Add Node to Visual Shader" msgstr "เพิ่มโหนดไปยังเวà¸à¸£à¹Œà¸Šà¸§à¸¥à¹€à¸Šà¸”เดà¸à¸£à¹Œ" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "ย้ายโหนดเรียบร้à¸à¸¢" +msgstr "เลื่à¸à¸™à¹‚หนดà¹à¸¥à¹‰à¸§" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8586,9 +8586,8 @@ msgid "Visual Shader Input Type Changed" msgstr "เปลี่ยนชนิดขà¸à¸‡à¸à¸´à¸™à¸žà¸¸à¸•à¹€à¸§à¸à¸£à¹Œà¸Šà¸§à¸¥à¹€à¸Šà¸”เดà¸à¸£à¹Œ" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "ตั้งชื่à¸à¸¢à¸¹à¸™à¸´à¸Ÿà¸à¸£à¹Œà¸¡" +msgstr "เปลี่ยนชื่ภUniformRef à¹à¸¥à¹‰à¸§" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9285,7 +9284,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "à¸à¸²à¸£à¸à¹‰à¸²à¸‡à¸à¸´à¸‡à¸–ึงยูนิฟà¸à¸£à¹Œà¸¡à¸—ี่มีà¸à¸¢à¸¹à¹ˆ" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -11859,6 +11858,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "ที่à¸à¸¢à¸¹à¹ˆ Android SDK ผิดพลาดสำหรับà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เà¸à¸‡à¹ƒà¸™à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าเà¸à¸”ิเตà¸à¸£à¹Œ" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11904,21 +11911,37 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "\"Export AAB\" จะใช้ได้เฉพาะเมื่à¸à¹€à¸›à¸´à¸”ใช้งาน \"Use Custom Build\"" + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to delete unaligned APK." msgstr "" #: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "ชื่à¸à¹„ฟล์ผิดพลาด! à¹à¸à¸™à¸”รà¸à¸¢à¸”์à¹à¸à¸›à¸šà¸±à¸™à¹€à¸”ิลจำเป็นต้à¸à¸‡à¸¡à¸µà¸™à¸²à¸¡à¸ªà¸à¸¸à¸¥ *.aab" + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "à¸à¸²à¸£à¸‚ยาย APK เข้าà¸à¸±à¸™à¹„ม่ได้à¸à¸±à¸šà¹à¸à¸™à¸”รà¸à¸¢à¸”์à¹à¸à¸›à¸šà¸±à¸™à¹€à¸”ิล" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "ชื่à¸à¹„ฟล์ผิดพลาด! à¹à¸à¸™à¸”รà¸à¸¢à¸”์ APK จำเป็นต้à¸à¸‡à¸¡à¸µà¸™à¸²à¸¡à¸ªà¸à¸¸à¸¥ *.apk" + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." @@ -11951,13 +11974,14 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "à¸à¸³à¸¥à¸±à¸‡à¸¢à¹‰à¸²à¸¢à¹€à¸à¸²à¸•à¹Œà¸žà¸¸à¸•" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"ไม่สามารถคัดลà¸à¸à¹à¸¥à¸°à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸à¹„ฟล์ส่งà¸à¸à¸ ตรวจสà¸à¸šà¹„ดเร็à¸à¸—à¸à¸£à¸µà¹‚ปรเจ็à¸à¸•à¹Œ gradle สำหรับเà¸à¸²à¸•à¹Œà¸žà¸¸à¸•" #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12659,6 +12683,12 @@ msgstr "Varyings สามารถà¸à¸³à¸«à¸™à¸”ในังà¸à¹Œà¸Šà¸±à¸™à¹€ msgid "Constants cannot be modified." msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได้" +#~ msgid "Error trying to save layout!" +#~ msgstr "ผิดพลาดขณะบันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸à¸²à¸•à¹Œ!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "à¹à¸—นที่เลย์เà¸à¸²à¸•à¹Œà¹€à¸£à¸´à¹ˆà¸¡à¸•à¹‰à¸™" + #~ msgid "Move pivot" #~ msgstr "ย้ายจุดหมุน" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 91dd17c218..a9608e8771 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -1078,14 +1078,19 @@ msgid "Owners Of:" msgstr "Åžunların sahipleri:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Seçili dosyaları projeden kaldır? (Geri alınamaz)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Kaldırılmakta olan dosyalar baÅŸka kaynakların çalışması için gerekli.\n" "Yine de kaldırmak istiyor musunuz? (geri alınamaz)" @@ -2349,19 +2354,25 @@ msgid "Error saving TileSet!" msgstr "TileSet kaydedilirken hata!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "YerleÅŸim Düzeni kaydedilmeye çalışılırken hata!" +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." -msgstr "Varsayılan düzenleyici yerleÅŸim düzeni geçersiz kılındı." +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 "YerleÅŸim Düzeni adı bulunamadı!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Varsayılan yerleÅŸim düzeni temel ayarlarına geri döndürüldü." #: editor/editor_node.cpp @@ -3798,6 +3809,11 @@ msgid "Move To..." msgstr "Åžuraya Taşı..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "KendindenYüklenme'yi Taşı" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Yeni Sahne..." @@ -12091,6 +12107,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "Editör Ayarlarında özel derleme için geçersiz Android SDK yolu." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12145,6 +12169,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12960,6 +13000,12 @@ msgstr "varyings yalnızca vertex iÅŸlevinde atanabilir." msgid "Constants cannot be modified." msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." +#~ msgid "Error trying to save layout!" +#~ msgstr "YerleÅŸim Düzeni kaydedilmeye çalışılırken hata!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Varsayılan düzenleyici yerleÅŸim düzeni geçersiz kılındı." + #~ msgid "Move pivot" #~ msgstr "Merkezi Taşı" diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po index 1a370d7ef9..0ea50916b6 100644 --- a/editor/translations/tzm.po +++ b/editor/translations/tzm.po @@ -1000,14 +1000,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2232,11 +2235,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2244,7 +2252,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3583,6 +3591,10 @@ msgid "Move To..." msgstr "" #: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "" @@ -11559,6 +11571,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11603,6 +11623,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index d1a9f9132c..14771ef010 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-29 09:14+0000\n" +"PO-Revision-Date: 2020-10-30 10:21+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -29,7 +29,7 @@ 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 4.3-dev\n" +"X-Generator: Weblate 4.3.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1047,15 +1047,20 @@ msgid "Owners Of:" msgstr "ВлаÑники:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Вилучити позначені файли з проєкту? (Вилучені файли не вдаÑÑ‚ÑŒÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸)" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "Файли, що видалÑÑŽÑ‚ÑŒÑÑ, вимагаютьÑÑ Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ реÑурÑами, щоб вони могли " "працювати.\n" @@ -1611,33 +1616,32 @@ msgstr "" "«Увімкнено резервні драйвери»." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"Платформа Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ‚ÐµÐºÑтур «ETC» Ð´Ð»Ñ GLES2. Увімкніть " -"пункт «Імпортувати ETC» у параметрах проєкту." +"Платформа Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ‚ÐµÐºÑтур «PVRTC» Ð´Ð»Ñ GLES2. " +"Увімкніть пункт «Імпортувати Pvrtc» у параметрах проєкту." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"Платформа Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ‚ÐµÐºÑтур «ETC2» Ð´Ð»Ñ GLES3. Увімкніть " -"пункт «Імпортувати ETC 2» у параметрах проєкту." +"Платформа Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ‚ÐµÐºÑтур «ETC2» або «PVRTC» Ð´Ð»Ñ " +"GLES3. Увімкніть пункт «Імпортувати ETC 2» або «Імпортувати Pvrtc» у " +"параметрах проєкту." #: editor/editor_export.cpp -#, fuzzy 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 "" -"Платформа Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ‚ÐµÐºÑтур «ETC» Ð´Ð»Ñ GLES2.\n" -"Увімкніть пункт «Імпортувати ETC» у параметрах проєкту або вимкніть пункт " +"Платформа Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ‚ÐµÐºÑтур «PVRTC» Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ " +"варіанта драйверів GLES2.\n" +"Увімкніть пункт «Імпортувати Pvrtc» у параметрах проєкту або вимкніть пункт " "«Увімкнено резервні драйвери»." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2320,19 +2324,25 @@ msgid "Error saving TileSet!" msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð°Ð±Ð¾Ñ€Ñƒ тайлів!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Помилка при Ñпробі зберегти компонуваннÑ!" +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." -msgstr "Типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° перевизначено." +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Відновлено типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° базовими параметрами." #: editor/editor_node.cpp @@ -3775,6 +3785,11 @@ msgid "Move To..." msgstr "ПереміÑтити до..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "ПереміÑтити автозавантаженнÑ" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "Створити Ñцену…" @@ -5241,50 +5256,43 @@ msgstr "Створити горизонтальні та вертикальні #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Ð’Ñтановити зÑув бази CanvasItem «%s» у (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Обертати CanvasItem" +msgstr "Обертати %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Обертати CanvasItem" +msgstr "Обернути CanvasItem «%s» на %d градуÑів" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "ПереÑунути CanvasItem" +msgstr "ПереÑунути прив'Ñзку CanvasItem «%s»" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "МаÑштабувати Node2D «%s» до (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Змінити розміри елемента ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Â«%s» до (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "МаÑштабувати CanvasItem" +msgstr "МаÑштабувати %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "МаÑштабувати CanvasItem" +msgstr "МаÑштабувати CanvasItem «%s» до (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "ПереÑунути CanvasItem" +msgstr "ПереÑунути %d CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "ПереÑунути CanvasItem" +msgstr "ПереÑунути CanvasItem «%s» до (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6564,18 +6572,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" @@ -6623,14 +6629,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 "Перетворити на Polygon2D" +msgstr "Копіювати UV до полігона" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8181,13 +8185,12 @@ msgid "Paint Tile" msgstr "Ðамалювати плитку" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+ліва кнопка: малювати лінію\n" -"Shift+Ctrl+ліва кнопка: малювати прÑмокутник" +"Shift+Command+ліва кнопка: малювати прÑмокутник" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8718,9 +8721,8 @@ msgid "Add Node to Visual Shader" msgstr "Додати вузол до візуального шейдера" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "ПереÑунуто вузол" +msgstr "ПереÑунуто вузли" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8740,9 +8742,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Змінено тип Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ шейдера" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Ð’Ñтановити однорідну назву" +msgstr "Змінено однорідну назву" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9460,7 +9461,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° наÑвну однорідніÑÑ‚ÑŒ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12102,6 +12103,14 @@ msgstr "" "редактора." #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12156,18 +12165,39 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" +"Пункт «ЕкÑпортувати AAB» Ñ” чинним, лише Ñкщо увімкнено «ВикориÑтовувати " +"нетипове збираннÑ»." + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"Ðекоректна назва файла! Пакет програми Android повинен мати ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸ *." +"aab." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ APK Ñ” неÑуміÑним із Android App Bundle." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." msgstr "" +"Ðекоректна назва файла! Пакунок Android APK повинен мати ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸ *.apk." #: platform/android/export/export.cpp msgid "" @@ -12207,13 +12237,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "ПереÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… даних" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Ðе вдалоÑÑ Ñкопіювати Ñ– перейменувати файл екÑпортованих даних. Виведені " +"дані можна знайти у каталозі проєкту gradle." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12987,6 +13019,12 @@ msgstr "Змінні величини можна пов'Ñзувати лише msgid "Constants cannot be modified." msgstr "Сталі не можна змінювати." +#~ msgid "Error trying to save layout!" +#~ msgstr "Помилка при Ñпробі зберегти компонуваннÑ!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° перевизначено." + #~ msgid "Move pivot" #~ msgstr "ПереÑунути опорну точку" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 0daae77789..c8eaf85501 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -1020,14 +1020,17 @@ msgid "Owners Of:" msgstr "" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2279,11 +2282,16 @@ msgid "Error saving TileSet!" msgstr "" #: editor/editor_node.cpp -msgid "Error trying to save layout!" +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." +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 @@ -2291,7 +2299,7 @@ msgid "Layout name not found!" msgstr "" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "" #: editor/editor_node.cpp @@ -3655,6 +3663,11 @@ msgstr "" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "ایکشن منتقل کریں" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "سب سکریپشن بنائیں" @@ -11856,6 +11869,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11900,6 +11921,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 446a1ce2fa..8198ca9ba7 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -1043,14 +1043,18 @@ msgid "Owners Of:" msgstr "Sở hữu của:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "Gỡ bá» các tệp đã chá»n trong dá»± án? (Không thể khôi phục)" #: editor/dependency_editor.cpp msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2334,19 +2338,25 @@ msgid "Error saving TileSet!" msgstr "Lá»—i khi lÆ°u các TileSet!" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "Lá»—i khi cố gắng lÆ°u bố cục!" +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." -msgstr "Bố cục trình biên táºp mặc định bị ghi đè." +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 "Tên bố cục không tìm thấy!" #: editor/editor_node.cpp -msgid "Restored default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "Äã khôi phục bố cục mặc định cho các thiết láºp." #: editor/editor_node.cpp @@ -3754,6 +3764,11 @@ msgstr "Di chuyển đến..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Move to Trash" +msgstr "Di chuyển Nút" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "New Scene..." msgstr "Tạo Cảnh Má»›i" @@ -12086,6 +12101,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12133,6 +12156,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -12827,6 +12866,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Không thể chỉnh sá»a hằng số." +#~ msgid "Error trying to save layout!" +#~ msgstr "Lá»—i khi cố gắng lÆ°u bố cục!" + +#~ msgid "Default editor layout overridden." +#~ msgstr "Bố cục trình biên táºp mặc định bị ghi đè." + #~ msgid "Move pivot" #~ msgstr "Di chuyển trục" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 4ce2d7c14d..c40aea356f 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -71,11 +71,12 @@ # MintSoda <lionlxh@qq.com>, 2020. # Gardner Belgrade <hapenia@sina.com>, 2020. # godhidden <z2zz2zz@yahoo.com>, 2020. +# BinotaLIU <me@binota.org>, 2020. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2020-10-18 14:21+0000\n" +"PO-Revision-Date: 2020-11-13 22:59+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" @@ -84,7 +85,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.3.1-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -93,17 +94,17 @@ msgstr "convert() çš„å‚æ•°ç±»åž‹æ— æ•ˆï¼Œè¯·ä½¿ç”¨ TYPE_* 常é‡ã€‚" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "仅需è¦é•¿åº¦ä¸º1çš„å—符串(1å—符)。" +msgstr "应为长度 1 çš„å—符串(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" -msgstr "表达å¼ä¸åŒ…å«çš„%iæ— æ•ˆï¼ˆæœªä¼ é€’ï¼‰" +msgstr "表达å¼çš„输入 %i æ— æ•ˆï¼ˆæœªä¼ é€’ï¼‰" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -111,7 +112,7 @@ msgstr "实例为 nullï¼ˆæœªä¼ é€’ï¼‰ï¼Œæ— æ³•ä½¿ç”¨ 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" @@ -127,7 +128,7 @@ msgstr "æž„é€ '%s' çš„å‚æ•°æ— æ•ˆ" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "在调用'%s'时:" +msgstr "在调用 '%s' 时:" #: core/ustring.cpp msgid "B" @@ -260,7 +261,7 @@ msgstr "属性轨é“" #: editor/animation_track_editor.cpp msgid "3D Transform Track" -msgstr "3Då˜æ¢è½¨é“" +msgstr "3D å˜æ¢è½¨é“" #: editor/animation_track_editor.cpp msgid "Call Method Track" @@ -317,7 +318,7 @@ msgstr "切æ¢å½“å‰è½¨é“开关。" #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "更新模å¼ï¼ˆå¦‚何设置æ¤å±žæ€§ï¼‰" +msgstr "更新模å¼ï¼ˆå±žæ€§è®¾ç½®æ–¹æ³•ï¼‰" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" @@ -337,7 +338,7 @@ msgstr "时间(秒): " #: editor/animation_track_editor.cpp msgid "Toggle Track Enabled" -msgstr "å¯ç”¨è½¨é“切æ¢" +msgstr "å¯ç”¨ï¼ç¦ç”¨è½¨é“" #: editor/animation_track_editor.cpp msgid "Continuous" @@ -411,7 +412,7 @@ msgstr "是å¦ä¸º %s 新建轨é“并æ’入关键帧?" #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "是å¦æ–°å»º%d个轨é“并æ’入关键帧?" +msgstr "是å¦æ–°å»º %d 个轨é“并æ’入关键帧?" #: editor/animation_track_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp @@ -431,7 +432,7 @@ msgstr "æ’入动画" #: editor/animation_track_editor.cpp msgid "AnimationPlayer can't animate itself, only other players." -msgstr "动画æ’放器ä¸èƒ½å¯¹è‡ªå·±åšåŠ¨ç”»ï¼Œåªæœ‰å…¶å®ƒæ’放器æ‰å¯ä»¥ã€‚" +msgstr "AnimationPlayer ä¸èƒ½åŠ¨ç”»åŒ–自己,åªå¯åŠ¨ç”»åŒ–其它 Player。" #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" @@ -455,7 +456,7 @@ msgstr "é‡æ–°æŽ’列轨é“" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "å˜æ¢è½¨è¿¹ä»…应用基于Spatial节点的节点。" +msgstr "å˜æ¢è½¨è¿¹ä»…应用到基于 Spatial 节点。" #: editor/animation_track_editor.cpp msgid "" @@ -471,7 +472,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "动画轨迹åªèƒ½æŒ‡å‘AnimationPlayer节点。" +msgstr "动画轨迹åªèƒ½æŒ‡å‘ AnimationPlayer 节点。" #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." @@ -479,7 +480,7 @@ msgstr "动画æ’放器ä¸èƒ½åŠ¨ç”»åŒ–自己,åªèƒ½åŠ¨ç”»åŒ–其他æ’放器。 #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "æ— æ³•åœ¨æ²¡æœ‰root的情况下新建轨é“" +msgstr "æ²¡æœ‰æ ¹èŠ‚ç‚¹æ—¶æ— æ³•æ·»åŠ æ–°è½¨é“" #: editor/animation_track_editor.cpp msgid "Invalid track for Bezier (no suitable sub-properties)" @@ -495,7 +496,7 @@ msgstr "轨é“è·¯å¾„æ— æ•ˆï¼Œå› æ¤æ— æ³•æ·»åŠ é”®ã€‚" #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "轨é“ä¸æ˜¯Spatialç±»åž‹ï¼Œæ— æ³•æ’入帧" +msgstr "轨é“ä¸æ˜¯ Spatial ç±»åž‹ï¼Œæ— æ³•æ’入帧" #: editor/animation_track_editor.cpp msgid "Add Transform Track Key" @@ -536,7 +537,7 @@ msgstr "缩放动画关键帧" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." -msgstr "æ¤é€‰é¡¹ä¸é€‚用于è´å¡žå°”ç¼–è¾‘ï¼Œå› ä¸ºå®ƒåªæ˜¯å•ä¸ªè½¨é“。" +msgstr "由于åªæœ‰å•ä¸€è½¨é“ï¼Œå› æ¤è¯¥é€‰é¡¹ä¸é€‚用于è´å¡žå°”编辑。" #: editor/animation_track_editor.cpp msgid "" @@ -553,8 +554,8 @@ msgstr "" "æ¤åŠ¨ç”»å±žäºŽå¯¼å…¥çš„åœºæ™¯ï¼Œå› æ¤ä¸ä¼šä¿å˜å¯¹å¯¼å…¥è½¨é“的更改。\n" "\n" "è¦å¯ç”¨æ·»åŠ 自定义轨é“的功能,å¯ä»¥åœ¨åœºæ™¯çš„导入设置ä¸å°†\n" -"“Animation > Storageâ€è®¾ä¸ºâ€œ Filesâ€ï¼Œå¯ç”¨â€œAnimation > Keep Custom Tracksâ€ï¼Œç„¶åŽ" -"é‡æ–°å¯¼å…¥ã€‚\n" +"“Animation > Storage†设为 “ Filesâ€ï¼Œå¹¶å¯ç”¨ “Animation > Keep Custom " +"Tracksâ€ï¼Œç„¶åŽé‡æ–°å¯¼å…¥ã€‚\n" "或者也å¯ä»¥ä½¿ç”¨å°†åŠ¨ç”»å¯¼å…¥ä¸ºå•ç‹¬æ–‡ä»¶çš„导入预设。" #: editor/animation_track_editor.cpp @@ -563,7 +564,7 @@ msgstr "è¦å‘Šï¼šæ£åœ¨ç¼–辑导入的动画" #: editor/animation_track_editor.cpp msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "选择一个AnimationPlayer节点以创建和编辑动画。" +msgstr "选择一个 AnimationPlayer 节点以创建和编辑动画。" #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -571,7 +572,7 @@ msgstr "ä»…æ˜¾ç¤ºåœ¨æ ‘ä¸é€‰æ‹©çš„节点的轨é“。" #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "按节点分组或将它们显示为普通列表。" +msgstr "按节点分组或将节点显示为普通列表。" #: editor/animation_track_editor.cpp msgid "Snap:" @@ -711,7 +712,7 @@ msgstr "å¤åˆ¶" #: editor/animation_track_editor.cpp msgid "Select All/None" -msgstr "全选/å–消" +msgstr "全选ï¼å–消" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -747,19 +748,19 @@ msgstr "è¡Œå·ï¼š" #: editor/code_editor.cpp msgid "%d replaced." -msgstr "已替æ¢%d处。" +msgstr "å·²æ›¿æ¢ %d 处。" #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." -msgstr "%d 匹é…。" +msgstr "%d 个匹é…。" #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d matches." -msgstr "%d 匹é…项。" +msgstr "%d 个匹é…。" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" -msgstr "大å°å†™åŒ¹é…" +msgstr "区分大å°å†™" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" @@ -784,7 +785,7 @@ msgstr "æ ‡å‡†" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "切æ¢è„šæœ¬é¢æ¿" +msgstr "å¼€å¯ï¼å…³é—脚本é¢æ¿" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -822,7 +823,7 @@ msgstr "方法åç§°å¿…é¡»æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„æ ‡è¯†ç¬¦ã€‚" msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." -msgstr "找ä¸åˆ°ç›®æ ‡æ–¹æ³•ã€‚è¯·æŒ‡å®šä¸€ä¸ªæœ‰æ•ˆçš„æ–¹æ³•æˆ–è€…æŠŠè„šæœ¬é™„åŠ åˆ°ç›®æ ‡èŠ‚ç‚¹ã€‚" +msgstr "找ä¸åˆ°ç›®æ ‡æ–¹æ³•ã€‚è¯·æŒ‡å®šä¸€ä¸ªæœ‰æ•ˆçš„æ–¹æ³•æˆ–æŠŠè„šæœ¬é™„åŠ åˆ°ç›®æ ‡èŠ‚ç‚¹ã€‚" #: editor/connections_dialog.cpp msgid "Connect to Node:" @@ -918,15 +919,15 @@ msgstr "ä¿¡å·ï¼š" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "连接“%sâ€åˆ°â€œ%sâ€" +msgstr "连接 “%s†到 “%sâ€" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "将“%sâ€ä»Žâ€œ%sâ€æ–å¼€" +msgstr "å°† “%s†从 “%s†æ–å¼€" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" -msgstr "æ–开所有与信å·â€œ%sâ€çš„连接" +msgstr "æ–å¼€æ‰€æœ‰ä¸Žä¿¡å· â€œ%s†的连接" #: editor/connections_dialog.cpp msgid "Connect..." @@ -947,7 +948,7 @@ msgstr "编辑连接:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "ä½ ç¡®å®šè¦ä»Žä¿¡å·â€œ%sâ€ä¸ç§»é™¤æ‰€æœ‰è¿žæŽ¥å—?" +msgstr "确定è¦ä»Žä¿¡å· “%s†ä¸ç§»é™¤æ‰€æœ‰è¿žæŽ¥å—?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -959,7 +960,7 @@ msgstr "ç›é€‰ä¿¡å·" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "ä½ ç¡®å®šè¦ä»Žè¯¥å¹¿æ’ä¿¡å·ä¸ç§»é™¤æ‰€æœ‰è¿žæŽ¥å—?" +msgstr "确定è¦ä»Žè¯¥ä¿¡å·ä¸ç§»é™¤æ‰€æœ‰è¿žæŽ¥å—?" #: editor/connections_dialog.cpp msgid "Disconnect All" @@ -975,7 +976,7 @@ msgstr "跳转到方法" #: editor/create_dialog.cpp msgid "Change %s Type" -msgstr "更改%s类型" +msgstr "更改 %s 类型" #: editor/create_dialog.cpp editor/project_settings_editor.cpp msgid "Change" @@ -983,7 +984,7 @@ msgstr "更改" #: editor/create_dialog.cpp msgid "Create New %s" -msgstr "新建%s" +msgstr "创建 %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -1027,7 +1028,7 @@ msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" -"场景“%sâ€æ£è¢«ä¿®æ”¹ã€‚\n" +"场景 “%s†æ£è¢«ä¿®æ”¹ã€‚\n" "修改åªæœ‰åœ¨é‡æ–°åŠ è½½åŽæ‰èƒ½ç”Ÿæ•ˆã€‚" #: editor/dependency_editor.cpp @@ -1035,7 +1036,7 @@ msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" -"资æºâ€œ%sâ€æ£åœ¨ä½¿ç”¨ä¸ã€‚\n" +"èµ„æº â€œ%s†æ£åœ¨ä½¿ç”¨ä¸ã€‚\n" "修改åªæœ‰åœ¨é‡æ–°åŠ è½½åŽæ‰èƒ½ç”Ÿæ•ˆã€‚" #: editor/dependency_editor.cpp @@ -1083,14 +1084,19 @@ msgid "Owners Of:" msgstr "拥有者:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "是å¦ä»Žé¡¹ç›®ä¸åˆ é™¤é€‰å®šæ–‡ä»¶ï¼Ÿï¼ˆæ— æ³•æ¢å¤ï¼‰" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" "è¦åˆ 除的文件被其他资æºæ‰€ä¾èµ–。\n" "ä»ç„¶è¦åˆ 除å—ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼‰" @@ -1125,7 +1131,7 @@ msgstr "åŠ è½½å‡ºé”™ï¼" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "æ°¸ä¹…åˆ é™¤é€‰ä¸çš„%dæ¡é¡¹ç›®å—?(æ¤æ“ä½œæ— æ³•æ’¤é”€ï¼ï¼‰" +msgstr "è¦æ°¸ä¹…åˆ é™¤é€‰ä¸çš„ %d æ¡é¡¹ç›®å—?(æ¤æ“ä½œæ— æ³•æ’¤é”€ï¼ï¼‰" #: editor/dependency_editor.cpp msgid "Show Dependencies" @@ -1153,19 +1159,19 @@ msgstr "没有显å¼ä»Žå±žå…³ç³»çš„资æºï¼š" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "修改å—典的键" +msgstr "修改å—典键" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" -msgstr "改å˜å—典的值" +msgstr "改å˜å—典值" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "Godot社区致谢ï¼" +msgstr "Godot ç¤¾åŒºæ„Ÿè°¢ä½ ï¼" #: editor/editor_about.cpp msgid "Godot Engine contributors" -msgstr "Godot引擎贡献者" +msgstr "Godot Engine 贡献者" #: editor/editor_about.cpp msgid "Project Founders" @@ -1184,7 +1190,7 @@ msgstr "项目管ç†å‘˜ " #: editor/editor_about.cpp msgid "Developers" -msgstr "å¼€å‘者" +msgstr "å¼€å‘人员" #: editor/editor_about.cpp msgid "Authors" @@ -1241,8 +1247,8 @@ msgid "" "is an exhaustive list of all such third-party components with their " "respective copyright statements and license terms." msgstr "" -"Godot引擎ä¾èµ–多个第三方å…费开æºä»£ç 库,这些库全部兼容MIT许å¯è¯çš„æ¡æ¬¾ã€‚以下是" -"所有æ¤ç±»ç¬¬ä¸‰æ–¹ç»„件åŠå…¶å„自版æƒå£°æ˜Žå’Œè®¸å¯æ¡æ¬¾çš„详尽列表。" +"Godot 引擎ä¾èµ–多个第三方å…费开æºä»£ç 库,这些库全部兼容 MIT 许å¯è¯çš„æ¡æ¬¾ã€‚以下" +"是所有æ¤ç±»ç¬¬ä¸‰æ–¹ç»„件åŠå…¶å„自版æƒå£°æ˜Žå’Œè®¸å¯æ¡æ¬¾çš„详尽列表。" #: editor/editor_about.cpp msgid "All Components" @@ -1258,7 +1264,7 @@ msgstr "许å¯è¯" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in ZIP format." -msgstr "打开压缩文件时出错,éžZIPæ ¼å¼ã€‚" +msgstr "æ‰“å¼€åŒ…æ–‡ä»¶æ—¶å‡ºé”™ï¼Œéž ZIP æ ¼å¼ã€‚" #: editor/editor_asset_installer.cpp msgid "%s (Already Exists)" @@ -1274,7 +1280,7 @@ msgstr "ä»¥ä¸‹æ–‡ä»¶æ— æ³•ä»ŽåŒ…ä¸æå–:" #: editor/editor_asset_installer.cpp msgid "And %s more files." -msgstr "以åŠå…¶å®ƒ%s个文件。" +msgstr "以åŠå…¶å®ƒ %s 个文件。" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package installed successfully!" @@ -1315,15 +1321,15 @@ msgstr "修改音频总线音é‡" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "开关音频总线独å¥" +msgstr "å¼€ï¼å…³éŸ³é¢‘总线独å¥" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "开关音频总线é™éŸ³" +msgstr "é™éŸ³ï¼å–消é™éŸ³éŸ³é¢‘总线" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" -msgstr "开关音频总线æ—通效果" +msgstr "å¼€å¯ï¼å…³é—音频总线æ—通效果" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" @@ -1416,7 +1422,7 @@ msgstr "打开音频总线布局" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." -msgstr "文件“%sâ€ä¸å˜åœ¨ã€‚" +msgstr "文件 “%s†ä¸å˜åœ¨ã€‚" #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" @@ -1478,7 +1484,7 @@ msgstr "有效å—符:" #: editor/editor_autoload_settings.cpp msgid "Must not collide with an existing engine class name." -msgstr "与引擎内置类型å称冲çªã€‚" +msgstr "与引擎内置类å称冲çªã€‚" #: editor/editor_autoload_settings.cpp msgid "Must not collide with an existing built-in type name." @@ -1490,27 +1496,27 @@ msgstr "与已å˜åœ¨çš„全局常é‡å称冲çªã€‚" #: editor/editor_autoload_settings.cpp msgid "Keyword cannot be used as an autoload name." -msgstr "该å称已被用作其他 autoload å 用。" +msgstr "关键å—ä¸å¯ç”¨ä½œ Autoload å称。" #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "Autoload '%s'å·²å˜åœ¨ï¼" +msgstr "Autoload '%s' å·²å˜åœ¨ï¼" #: editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "é‡å‘½åè‡ªåŠ¨åŠ è½½è„šæœ¬" +msgstr "é‡å‘½å Autoload" #: editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "切æ¢å…¨å±€AutoLoad" +msgstr "å¼€å¯ï¼å…³é—全局 AutoLoad" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "移动Autoload" +msgstr "移动 Autoload" #: editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "移除Autoload" +msgstr "移除 Autoload" #: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp msgid "Enable" @@ -1518,15 +1524,15 @@ msgstr "å¯ç”¨" #: editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "é‡æŽ’åºAutoload" +msgstr "é‡æŽ’åº Autoload" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "æ— æ³•åŠ è½½autoload:" +msgstr "æ— æ³•åŠ è½½ Autoload:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "æ·»åŠ è‡ªåŠ¨åŠ è½½" +msgstr "æ·»åŠ Autoload" #: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp #: editor/editor_plugin_settings.cpp @@ -1559,11 +1565,11 @@ msgstr "更新场景" #: editor/editor_data.cpp msgid "Storing local changes..." -msgstr "ä¿å˜ä¿®æ”¹ä¸..." +msgstr "ä¿å˜æœ¬åœ°æ›´æ”¹..." #: editor/editor_data.cpp msgid "Updating scene..." -msgstr "更新场景ä¸..." +msgstr "更新场景..." #: editor/editor_data.cpp editor/editor_properties.cpp msgid "[empty]" @@ -1575,7 +1581,7 @@ msgstr "[未ä¿å˜]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first." -msgstr "请先选择一个目录。" +msgstr "请先选择一个基础目录。" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1585,7 +1591,7 @@ msgstr "选择目录" #: editor/filesystem_dock.cpp editor/project_manager.cpp #: scene/gui/file_dialog.cpp msgid "Create Folder" -msgstr "新建文件夹" +msgstr "创建文件夹" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp @@ -1619,13 +1625,14 @@ msgstr "打包ä¸" msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." -msgstr "ç›®æ ‡å¹³å°éœ€è¦GLES2的“ETCâ€çº¹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨â€œå¯¼å…¥Etcâ€ã€‚" +msgstr "ç›®æ ‡å¹³å°éœ€è¦ GLES2 çš„ “ETC†纹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨ “Import Etcâ€ã€‚" #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." -msgstr "ç›®æ ‡å¹³å°éœ€è¦GLES3的“ETC2â€çº¹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨â€œå¯¼å…¥Etc 2â€ã€‚" +msgstr "" +"ç›®æ ‡å¹³å°éœ€è¦ GLES3 çš„ “ETC2†纹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨ “Import Etc 2â€ã€‚" #: editor/editor_export.cpp msgid "" @@ -1634,33 +1641,33 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" -"ç›®æ ‡å¹³å°éœ€è¦â€œETCâ€çº¹ç†åŽ‹ç¼©ï¼Œä»¥ä¾¿é©±åŠ¨ç¨‹åºå›žé€€åˆ°GLES2。\n" -"在项目设置ä¸å¯ç”¨â€œå¯¼å…¥Etcâ€ï¼Œæˆ–ç¦ç”¨â€œå¯ç”¨é©±åŠ¨ç¨‹åºå›žé€€â€ã€‚" +"ç›®æ ‡å¹³å°éœ€è¦ “ETC†纹ç†åŽ‹ç¼©ï¼Œä»¥ä¾¿é©±åŠ¨ç¨‹åºå›žé€€åˆ° GLES2。\n" +"在项目设置ä¸å¯ç”¨ “Import Etcâ€ï¼Œæˆ–ç¦ç”¨ “Driver Fallback Enabledâ€ã€‚" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." -msgstr "ç›®æ ‡å¹³å°éœ€è¦GLES2的“ETCâ€çº¹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨â€œå¯¼å…¥Etcâ€ã€‚" +msgstr "" +"ç›®æ ‡å¹³å°éœ€è¦ GLES2 çš„ “PVRTC†纹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨ “Import Pvrtcâ€ã€‚" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." -msgstr "ç›®æ ‡å¹³å°éœ€è¦GLES3的“ETC2â€çº¹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨â€œå¯¼å…¥Etc 2â€ã€‚" +msgstr "" +"ç›®æ ‡å¹³å°éœ€è¦ GLES3 çš„ “ETC2†或 “PVRTC†纹ç†åŽ‹ç¼©ã€‚在项目设置ä¸å¯ç”¨ “Import " +"Etc 2†或 “Import Pvrtcâ€ã€‚" #: editor/editor_export.cpp -#, fuzzy 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 "" -"ç›®æ ‡å¹³å°éœ€è¦â€œETCâ€çº¹ç†åŽ‹ç¼©ï¼Œä»¥ä¾¿é©±åŠ¨ç¨‹åºå›žé€€åˆ°GLES2。\n" -"在项目设置ä¸å¯ç”¨â€œå¯¼å…¥Etcâ€ï¼Œæˆ–ç¦ç”¨â€œå¯ç”¨é©±åŠ¨ç¨‹åºå›žé€€â€ã€‚" +"ç›®æ ‡å¹³å°éœ€è¦ “PVRTC†纹ç†åŽ‹ç¼©ï¼Œä»¥ä¾¿é©±åŠ¨ç¨‹åºå›žé€€åˆ° GLES2。\n" +"在项目设置ä¸å¯ç”¨ “Import Pvrtcâ€ï¼Œæˆ–ç¦ç”¨ “Driver Fallback Enabledâ€ã€‚" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1680,11 +1687,11 @@ msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶ï¼š" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." -msgstr "以32ä½å¹³å°å¯¼å‡ºæ—¶ï¼Œå†…嵌的PCKä¸èƒ½å¤§äºŽ4GB。" +msgstr "以 32 ä½å¹³å°å¯¼å‡ºæ—¶ï¼Œå†…嵌的 PCK ä¸èƒ½å¤§äºŽ 4GB。" #: editor/editor_feature_profile.cpp msgid "3D Editor" -msgstr "3D编辑器" +msgstr "3D 编辑器" #: editor/editor_feature_profile.cpp msgid "Script Editor" @@ -1712,11 +1719,11 @@ msgstr "导入é¢æ¿" #: editor/editor_feature_profile.cpp msgid "Erase profile '%s'? (no undo)" -msgstr "是å¦åˆ 除é…置文件“%sâ€ï¼Ÿï¼ˆæ— 法撤销)" +msgstr "是å¦åˆ 除é…置文件 “%sâ€ï¼Ÿï¼ˆæ— 法撤销)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" -msgstr "é…置文件必须是有效的文件å,并且ä¸èƒ½åŒ…å«â€œ.â€" +msgstr "é…置文件必须是有效的文件å,并且ä¸èƒ½åŒ…å« â€œ.â€" #: editor/editor_feature_profile.cpp msgid "Profile with this name already exists." @@ -1756,17 +1763,17 @@ msgstr "å¯ç”¨çš„类:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "文件“%sâ€çš„æ ¼å¼æ— 效,导入ä¸æ¢ã€‚" +msgstr "文件 “%sâ€ çš„æ ¼å¼æ— 效,导入ä¸æ¢ã€‚" #: editor/editor_feature_profile.cpp msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." -msgstr "é…置文件“%sâ€å·²å˜åœ¨ã€‚在导入之å‰å…ˆåˆ 除它,导入已ä¸æ¢ã€‚" +msgstr "é…置文件 “%s†已å˜åœ¨ã€‚在导入之å‰å…ˆåˆ 除该é…置文件,导入已ä¸æ¢ã€‚" #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." -msgstr "å°†é…置文件ä¿å˜åˆ°è·¯å¾„“%sâ€æ—¶å‡ºé”™ã€‚" +msgstr "å°†é…置文件ä¿å˜åˆ°è·¯å¾„ “%s†时出错。" #: editor/editor_feature_profile.cpp msgid "Unset" @@ -1774,7 +1781,7 @@ msgstr "未设置" #: editor/editor_feature_profile.cpp msgid "Current Profile:" -msgstr "当å‰é…置文件:" +msgstr "当å‰é…置文件:" #: editor/editor_feature_profile.cpp msgid "Make Current" @@ -1813,7 +1820,7 @@ msgstr "åˆ é™¤é…置文件" #: editor/editor_feature_profile.cpp msgid "Godot Feature Profile" -msgstr "Godot功能é…置文件" +msgstr "Godot 功能é…置文件" #: editor/editor_feature_profile.cpp msgid "Import Profile(s)" @@ -1867,11 +1874,11 @@ msgstr "所有å¯ç”¨ç±»åž‹" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Files (*)" -msgstr "所有文件(*)" +msgstr "所有文件 (*)" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "打开å•ä¸ªæ–‡ä»¶" +msgstr "打开文件" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open File(s)" @@ -1950,7 +1957,7 @@ msgstr "刷新文件。" #: editor/editor_file_dialog.cpp msgid "(Un)favorite current folder." -msgstr "(å–消)收è—当å‰æ–‡ä»¶å¤¹ã€‚" +msgstr "收è—ï¼å–消收è—当å‰æ–‡ä»¶å¤¹ã€‚" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Toggle the visibility of hidden files." @@ -1958,11 +1965,11 @@ msgstr "切æ¢éšè—文件的å¯è§æ€§ã€‚" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." -msgstr "ä»¥ç½‘æ ¼ç¼©ç•¥å›¾å½¢å¼æŸ¥çœ‹æ‰€æœ‰é¡¹ã€‚" +msgstr "ä»¥ç½‘æ ¼ç¼©ç•¥å›¾æŸ¥çœ‹é¡¹ç›®ã€‚" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a list." -msgstr "以列表的形å¼æŸ¥çœ‹æ‰€æœ‰é¡¹ã€‚" +msgstr "以列表查看项目。" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" @@ -1990,11 +1997,11 @@ msgstr "扫ææºæ–‡ä»¶" msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" -msgstr "ä¸åŒç±»åž‹çš„%s 文件å˜åœ¨å¤šç§å¯¼å…¥æ–¹å¼ï¼Œè‡ªåŠ¨å¯¼å…¥å¤±è´¥" +msgstr "文件 %s 有ä¸åŒç±»åž‹çš„多个导入器,已ä¸æ¢å¯¼å…¥" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" -msgstr "æ£åœ¨ï¼ˆé‡æ–°ï¼‰å¯¼å…¥ç´ æ" +msgstr "æ£åœ¨å¯¼å…¥æˆ–é‡æ–°å¯¼å…¥ç´ æ" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" @@ -2192,7 +2199,7 @@ msgstr "开始" #: editor/editor_network_profiler.cpp msgid "%s/s" -msgstr "%s/s" +msgstr "%s/秒" #: editor/editor_network_profiler.cpp msgid "Down" @@ -2208,23 +2215,23 @@ msgstr "节点" #: editor/editor_network_profiler.cpp msgid "Incoming RPC" -msgstr "ä¼ å…¥RPC" +msgstr "ä¼ å…¥ RPC" #: editor/editor_network_profiler.cpp msgid "Incoming RSET" -msgstr "ä¼ å…¥RSET" +msgstr "ä¼ å…¥ RSET" #: editor/editor_network_profiler.cpp msgid "Outgoing RPC" -msgstr "ä¼ å‡ºRPC" +msgstr "ä¼ å‡º RPC" #: editor/editor_network_profiler.cpp msgid "Outgoing RSET" -msgstr "ä¼ å‡ºRSET" +msgstr "ä¼ å‡º RSET" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" -msgstr "新建窗å£" +msgstr "新窗å£" #: editor/editor_node.cpp msgid "Imported resources can't be saved." @@ -2233,7 +2240,7 @@ msgstr "导入的资æºæ— 法ä¿å˜ã€‚" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp msgid "OK" -msgstr "确定" +msgstr "好" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" @@ -2243,7 +2250,7 @@ msgstr "ä¿å˜èµ„æºå‡ºé”™ï¼" msgid "" "This resource can't be saved because it does not belong to the edited scene. " "Make it unique first." -msgstr "æ— æ³•ä¿å˜æ¤èµ„æºï¼Œå› 为它ä¸å±žäºŽå·²ç¼–辑的场景。首先使它唯一化。" +msgstr "æ— æ³•ä¿å˜æ¤èµ„æºï¼Œå› 为æ¤èµ„æºä¸å±žäºŽå·²ç¼–辑的场景。请先唯一化æ¤èµ„æºã€‚" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." @@ -2255,7 +2262,7 @@ msgstr "æ— æ³•ä»¥å¯å†™æ¨¡å¼æ‰“开文件:" #: editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "未知的文件类型请求:" +msgstr "请求文件的类型未知:" #: editor/editor_node.cpp msgid "Error while saving." @@ -2263,23 +2270,23 @@ 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 "æ— æ³•æ‰“å¼€â€œ%sâ€ã€‚文件å¯èƒ½å·²è¢«ç§»åŠ¨æˆ–åˆ é™¤ã€‚" +msgstr "æ— æ³•æ‰“å¼€ “%sâ€ã€‚文件å¯èƒ½å·²è¢«ç§»åŠ¨æˆ–åˆ é™¤ã€‚" #: editor/editor_node.cpp msgid "Error while parsing '%s'." -msgstr "解æžâ€œ%sâ€æ—¶å‡ºé”™ã€‚" +msgstr "è§£æž â€œ%s†时出错。" #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "文件“%sâ€æ„外结æŸã€‚" +msgstr "文件 “%s†æ„外结æŸã€‚" #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." -msgstr "“%sâ€æˆ–å…¶ä¾èµ–项缺失。" +msgstr "“%s†或其ä¾èµ–项缺失。" #: editor/editor_node.cpp msgid "Error while loading '%s'." -msgstr "åŠ è½½â€œ%sâ€æ—¶å‡ºé”™ã€‚" +msgstr "åŠ è½½ “%s†时出错。" #: editor/editor_node.cpp msgid "Saving Scene" @@ -2302,18 +2309,18 @@ 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 "" -"æ— æ³•ä¿å˜æ¤åœºæ™¯ï¼Œå› 为包å«å¾ªçŽ¯å®žä¾‹åŒ–。\n" -"请解决它,然åŽå°è¯•å†æ¬¡ä¿å˜ã€‚" +"场景包å«å¾ªçŽ¯å®žä¾‹åŒ–ï¼Œæ— æ³•ä¿å˜ã€‚\n" +"请解决æ¤é—®é¢˜åŽå°è¯•å†æ¬¡ä¿å˜ã€‚" #: editor/editor_node.cpp msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." -msgstr "æ— æ³•ä¿å˜åœºæ™¯ï¼Œä¾èµ–项(实例或基类)验è¯å¤±è´¥ã€‚" +msgstr "æ— æ³•ä¿å˜åœºæ™¯ã€‚å¯èƒ½æ˜¯å› 为ä¾èµ–é¡¹ï¼ˆå®žä¾‹æˆ–ç»§æ‰¿ï¼‰æ— æ³•æ»¡è¶³ã€‚" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "æ— æ³•è¦†ç›–ä»å¤„于打开状æ€çš„场景!" +msgstr "æ— æ³•è¦†ç›–ä»å¤„于打开状æ€çš„场景ï¼" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2332,19 +2339,25 @@ msgid "Error saving TileSet!" msgstr "ä¿å˜å›¾å—集时出错ï¼" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "ä¿å˜å¸ƒå±€å‡ºé”™ï¼" +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." -msgstr "覆盖编辑器默认布局。" +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "é‡ç½®ä¸ºé»˜è®¤å¸ƒå±€è®¾ç½®ã€‚" #: editor/editor_node.cpp @@ -2353,8 +2366,8 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" -"æ¤èµ„æºå±žäºŽå·²å¯¼å…¥çš„场景, å› æ¤å®ƒä¸å¯ç¼–辑。\n" -"请阅读与导入场景相关的文档, 以便更好地ç†è§£æ¤å·¥ä½œæµã€‚" +"æ¤èµ„æºå±žäºŽå·²å¯¼å…¥çš„场景,ä¸å¯ç¼–辑。\n" +"请阅读与导入场景相关的文档,以更佳ç†è§£æ¤å·¥ä½œæµã€‚" #: editor/editor_node.cpp msgid "" @@ -2362,13 +2375,13 @@ msgid "" "Changes to it won't be kept when saving the current scene." msgstr "" "这个资æºå±žäºŽå®žä¾‹æˆ–继承的场景。\n" -"ä¿å˜å½“å‰åœºæ™¯æ—¶ä¸ä¼šä¿ç•™å¯¹å®ƒçš„更改。" +"ä¿å˜å½“å‰åœºæ™¯æ—¶ä¸ä¼šä¿ç•™æ›´æ”¹ã€‚" #: 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 "æ¤èµ„æºå·²å¯¼å…¥ï¼Œå› æ¤æ— 法编辑。在“导入â€é¢æ¿ä¸æ›´æ”¹è®¾ç½®ï¼Œç„¶åŽé‡æ–°å¯¼å…¥ã€‚" +msgstr "æ¤èµ„æºå·²å¯¼å…¥ï¼Œå› æ¤æ— 法编辑。在导入é¢æ¿ä¸æ›´æ”¹è®¾ç½®å¹¶é‡æ–°å¯¼å…¥ã€‚" #: editor/editor_node.cpp msgid "" @@ -2377,9 +2390,9 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" -"场景已被导入, 对它的更改将ä¸ä¼šä¿ç•™ã€‚\n" -"对其进行实例化或继承将å…许对其进行更改。\n" -"请阅读与导入场景相关的文档, 以便更好地ç†è§£æ¤å·¥ä½œæµã€‚" +"场景已被导入,所åšçš„更改将ä¸ä¼šä¿ç•™ã€‚\n" +"请实例化或继承该场景以å…许对其进行更改。\n" +"请阅读与导入场景相关的文档,以更佳ç†è§£æ¤å·¥ä½œæµã€‚" #: editor/editor_node.cpp msgid "" @@ -2388,11 +2401,11 @@ msgid "" "this workflow." msgstr "" "è¿™æ˜¯è¿œç¨‹å¯¹è±¡ï¼Œå› æ¤ä¸ä¼šä¿ç•™å¯¹å…¶çš„更改。\n" -"请阅读与调试相关的文档,以更好地了解æ¤å·¥ä½œæµç¨‹ã€‚" +"请阅读与调试相关的文档,以更佳ç†è§£æ¤å·¥ä½œæµã€‚" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "没有设置è¦æ‰§è¡Œçš„场景。" +msgstr "没有设置è¦è¿è¡Œçš„场景。" #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -2424,7 +2437,7 @@ msgstr "ä¿å˜å¹¶å…³é—" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "是å¦åœ¨å…³é—å‰ä¿å˜å¯¹â€œ%sâ€çš„更改?" +msgstr "是å¦åœ¨å…³é—å‰ä¿å˜å¯¹ “%s†的更改?" #: editor/editor_node.cpp msgid "Saved %s modified resource(s)." @@ -2432,7 +2445,7 @@ msgstr "å·²ä¿å˜ %s 个修改åŽçš„资æºã€‚" #: editor/editor_node.cpp msgid "A root node is required to save the scene." -msgstr "ä¿å˜åœºæ™¯éœ€è¦æ ¹èŠ‚点。" +msgstr "å¿…é¡»æœ‰æ ¹èŠ‚ç‚¹æ‰å¯ä¿å˜åœºæ™¯ã€‚" #: editor/editor_node.cpp msgid "Save Scene As..." @@ -2452,7 +2465,7 @@ msgstr "æ¤åœºæ™¯å°šæœªä¿å˜ã€‚是å¦åœ¨è¿è¡Œå‰ä¿å˜ï¼Ÿ" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "æ¤æ“作必须在打开一个场景åŽæ‰èƒ½æ‰§è¡Œã€‚" +msgstr "必须先打开一个场景æ‰èƒ½å®Œæˆæ¤æ“作。" #: editor/editor_node.cpp msgid "Export Mesh Library" @@ -2460,7 +2473,7 @@ msgstr "å¯¼å‡ºç½‘æ ¼åº“" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "需è¦æœ‰æ ¹èŠ‚点æ‰èƒ½å®Œæˆæ¤æ“作。" +msgstr "å¿…é¡»æœ‰æ ¹èŠ‚ç‚¹æ‰èƒ½å®Œæˆæ¤æ“作。" #: editor/editor_node.cpp msgid "Export Tile Set" @@ -2468,7 +2481,7 @@ msgstr "导出图å—集" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." -msgstr "æ¤æ“作必须先选择一个节点æ‰èƒ½æ‰§è¡Œã€‚" +msgstr "必须先选择节点æ‰èƒ½å®Œæˆæ¤æ“作。" #: editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" @@ -2476,7 +2489,7 @@ msgstr "当å‰åœºæ™¯å°šæœªä¿å˜ã€‚是å¦ä»è¦æ‰“开?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "æ— æ³•é‡æ–°åŠ 载未ä¿å˜çš„场景。" +msgstr "æ— æ³•é‡æ–°åŠ 载从未ä¿å˜è¿‡çš„场景。" #: editor/editor_node.cpp msgid "Reload Saved Scene" @@ -2512,17 +2525,17 @@ msgstr "ä¿å˜åŽé€€å‡º" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" -msgstr "以下场景在退出å‰ä¿å˜æ›´æ”¹å—?" +msgstr "退出å‰è¦ä¿å˜ä»¥ä¸‹åœºæ™¯æ›´æ”¹å—?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" -msgstr "在打开项目管ç†å™¨ä¹‹å‰ä¿å˜æ›´æ”¹å—?" +msgstr "打开项目管ç†å™¨å‰è¦ä¿å˜ä¸‹åˆ—场景更改å—?" #: editor/editor_node.cpp msgid "" "This option is deprecated. Situations where refresh must be forced are now " "considered a bug. Please report." -msgstr "该选项已废弃。必须强制刷新的情况现在被视为 bug。请报告。" +msgstr "该选项已废弃。必须强制刷新的情况现在被视为 Bug,请报告。" #: editor/editor_node.cpp msgid "Pick a Main Scene" @@ -2538,37 +2551,37 @@ msgstr "é‡æ–°æ‰“开关é—的场景" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." -msgstr "æ— æ³•åœ¨â€œ%sâ€ä¸Šå¯ç”¨åŠ 载项æ’件:é…置解æžå¤±è´¥ã€‚" +msgstr "æ— æ³•åœ¨ “%s†上å¯ç”¨åŠ 载项æ’件:é…置解æžå¤±è´¥ã€‚" #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." -msgstr "æ— æ³•åœ¨â€œres://addons/%sâ€ä¸æ‰¾åˆ°æ’件的脚本å—段。" +msgstr "æ— æ³•åœ¨ “res://addons/%s†ä¸æ‰¾åˆ°åŠ 载项æ’件的脚本å—段。" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "æ— æ³•ä»Žè·¯å¾„ä¸åŠ è½½æ’件脚本:“%sâ€ã€‚" +msgstr "æ— æ³•ä»Žè·¯å¾„ “%s†ä¸åŠ è½½åŠ è½½é¡¹è„šæœ¬ã€‚" #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." -msgstr "æ— æ³•ä»Žè·¯å¾„åŠ è½½æ’件脚本:“%sâ€è„šæœ¬çœ‹ä¸ŠåŽ»ä¼¼ä¹Žæœ‰ä»£ç 错误,请检查其è¯æ³•ã€‚" +msgstr "æ— æ³•ä»Žè·¯å¾„ “%sâ€ åŠ è½½åŠ è½½é¡¹è„šæœ¬ï¼šè„šæœ¬ä¼¼ä¹Žæœ‰ä»£ç 错误,请检查其è¯æ³•ã€‚" #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." -msgstr "æ— æ³•ä»Žè·¯å¾„åŠ è½½æ’件脚本:“%sâ€åŸºç±»åž‹ä¸æ˜¯ EditorPlugin。" +msgstr "æ— æ³•ä»Žè·¯å¾„ “%sâ€ åŠ è½½åŠ è½½é¡¹è„šæœ¬ï¼šåŸºç±»åž‹ä¸æ˜¯ EditorPlugin。" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." -msgstr "æ— æ³•ä»Žè·¯å¾„åŠ è½½æ’件脚本:“%sâ€è„šæœ¬ä¸åœ¨å·¥å…·æ¨¡å¼ä¸‹ã€‚" +msgstr "æ— æ³•ä»Žè·¯å¾„ “%sâ€ åŠ è½½æ’件脚本:脚本ä¸åœ¨å·¥å…·æ¨¡å¼ä¸‹ã€‚" #: 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 "" -"场景“%sâ€æ˜¯è‡ªåŠ¨å¯¼å…¥çš„ï¼Œå› æ¤æ— 法修改。\n" +"场景 “%sâ€ æ˜¯è‡ªåŠ¨å¯¼å…¥çš„ï¼Œå› æ¤æ— 法修改。\n" "è‹¥è¦å¯¹å…¶è¿›è¡Œæ›´æ”¹ï¼Œå¯ä»¥æ–°å»ºç»§æ‰¿åœºæ™¯ã€‚" #: editor/editor_node.cpp @@ -2576,12 +2589,12 @@ 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 "场景“%sâ€çš„ä¾èµ–å·²è¢«ç ´å:" +msgstr "场景 “%s†的ä¾èµ–å·²è¢«ç ´å:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" @@ -2594,7 +2607,7 @@ msgid "" "category." msgstr "" "尚未定义主场景,是å¦é€‰æ‹©ä¸€ä¸ªï¼Ÿ\n" -"ä½ å¯ä»¥ç¨åŽåœ¨â€œé¡¹ç›®è®¾ç½®â€çš„“applicationâ€åˆ†ç±»ä¸‹ä¿®æ”¹ã€‚" +"ç¨åŽä¹Ÿå¯åœ¨ “项目设置†的 “application†分类下修改。" #: editor/editor_node.cpp msgid "" @@ -2602,8 +2615,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"所选场景“%sâ€ä¸å˜åœ¨ï¼Œæ˜¯å¦é€‰æ‹©æœ‰æ•ˆçš„场景?\n" -"请在“项目设置â€çš„“applicationâ€åˆ†ç±»ä¸‹è®¾ç½®é€‰æ‹©ä¸»åœºæ™¯ã€‚" +"所选场景 “%s†ä¸å˜åœ¨ï¼Œæ˜¯å¦é€‰æ‹©æœ‰æ•ˆçš„场景?\n" +"ç¨åŽä¹Ÿå¯åœ¨ “项目设置†的 “application†分类下设置主场景。" #: editor/editor_node.cpp msgid "" @@ -2611,8 +2624,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"选ä¸çš„“%sâ€åœºæ™¯å¹¶éžåœºæ™¯æ–‡ä»¶ï¼Œè¯·é€‰æ‹©æœ‰æ•ˆçš„场景。\n" -"ä½ å¯ä»¥åœ¨â€œé¡¹ç›®è®¾ç½®â€çš„“applicationâ€åˆ†ç±»ä¸‹æ›´æ¢ä¸»åœºæ™¯ã€‚" +"选ä¸çš„ “%s†场景并éžåœºæ™¯æ–‡ä»¶ï¼Œè¯·é€‰æ‹©æœ‰æ•ˆçš„场景。\n" +"ç¨åŽä¹Ÿå¯åœ¨ “项目设置†的 “application†分类下更æ¢ä¸»åœºæ™¯ã€‚" #: editor/editor_node.cpp msgid "Save Layout" @@ -2638,31 +2651,31 @@ msgstr "è¿è¡Œæ¤åœºæ™¯" #: editor/editor_node.cpp msgid "Close Tab" -msgstr "å…³é—æ ‡ç¾é¡µ" +msgstr "å…³é—选项å¡" #: editor/editor_node.cpp msgid "Undo Close Tab" -msgstr "撤销关é—æ ‡ç¾é¡µ" +msgstr "撤销关é—选项å¡" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" -msgstr "å…³é—å…¶ä»–æ ‡ç¾é¡µ" +msgstr "å…³é—其他选项å¡" #: editor/editor_node.cpp msgid "Close Tabs to the Right" -msgstr "å…³é—å³ä¾§æ ‡ç¾é¡µ" +msgstr "å…³é—å³ä¾§é€‰é¡¹å¡" #: editor/editor_node.cpp msgid "Close All Tabs" -msgstr "å…³é—å…¨éƒ¨æ ‡ç¾" +msgstr "å…³é—全部选项å¡" #: editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "切æ¢åœºæ™¯æ ‡ç¾é¡µ" +msgstr "切æ¢åœºæ™¯é€‰é¡¹å¡" #: editor/editor_node.cpp msgid "%d more files or folders" -msgstr "其它 %d 个文件或文件夹" +msgstr "其它 %d 个文件和文件夹" #: editor/editor_node.cpp msgid "%d more folders" @@ -2682,7 +2695,7 @@ msgstr "专注模å¼" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." -msgstr "切æ¢ä¸“注模å¼ã€‚" +msgstr "进入ï¼ç¦»å¼€ä¸“注模å¼ã€‚" #: editor/editor_node.cpp msgid "Add a new scene." @@ -2694,7 +2707,7 @@ msgstr "场景" #: editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "å‰å¾€ä¸Šä¸€ä¸ªæ‰“开的场景。" +msgstr "转到上一个打开的场景。" #: editor/editor_node.cpp msgid "Copy Text" @@ -2702,11 +2715,11 @@ msgstr "å¤åˆ¶æ–‡æœ¬" #: editor/editor_node.cpp msgid "Next tab" -msgstr "ä¸‹ä¸€æ ‡ç¾" +msgstr "下一个选项å¡" #: editor/editor_node.cpp msgid "Previous tab" -msgstr "ä¸Šä¸€æ ‡ç¾" +msgstr "上一个选项å¡" #: editor/editor_node.cpp msgid "Filter Files..." @@ -2829,10 +2842,10 @@ msgid "" "mobile device).\n" "You don't need to enable it to use the GDScript debugger locally." msgstr "" -"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œä¸€é”®éƒ¨ç½²åŽçš„å¯æ‰§è¡Œæ–‡ä»¶å°†å°è¯•è¿žæŽ¥åˆ°è¿™å°ç”µè„‘çš„IP以便调试所è¿è¡Œçš„" -"工程。\n" -"该选项æ„在进行远程调试(尤其是移动设备)。\n" -"在本地使用GDScriptè°ƒè¯•å™¨æ— éœ€å¯ç”¨ã€‚" +"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œä¸€é”®éƒ¨ç½²åŽçš„å¯æ‰§è¡Œæ–‡ä»¶å°†å°è¯•è¿žæŽ¥åˆ°è¿™å°ç”µè„‘çš„ IP 以便调试所è¿è¡Œ" +"的项目。\n" +"该选项用于进行远程调试(尤其是移动设备)。\n" +"在本地使用 GDScript è°ƒè¯•å™¨æ—¶æ— éœ€å¯ç”¨ã€‚" #: editor/editor_node.cpp msgid "Small Deploy with Network Filesystem" @@ -2847,10 +2860,10 @@ msgid "" "On Android, deploying will use the USB cable for faster performance. This " "option speeds up testing for projects with large assets." msgstr "" -"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œä¸€é”®éƒ¨ç½²åˆ°Android时所导出的å¯æ‰§è¡Œæ–‡ä»¶å°†ä¸åŒ…å«å·¥ç¨‹æ•°æ®ã€‚\n" -"文件系统将由编辑器基于工程通过网络æ供。\n" -"在Androidå¹³å°ï¼Œéƒ¨ç½²å°†é€šè¿‡USB线缆进行以æ高性能。如果工程ä¸åŒ…å«è¾ƒå¤§çš„ç´ æ,该" -"选项会æ高测试速度。" +"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œä¸€é”®éƒ¨ç½²åˆ° Android 时所导出的å¯æ‰§è¡Œæ–‡ä»¶å°†ä¸åŒ…å«é¡¹ç›®æ•°æ®ã€‚\n" +"文件系统将由编辑器基于项目通过网络æ供。\n" +"在 Android å¹³å°ï¼Œéƒ¨ç½²å°†é€šè¿‡ USB 线缆进行以æ高性能。如果项目ä¸åŒ…å«è¾ƒå¤§çš„ç´ " +"æ,该选项å¯æ高测试速度。" #: editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -2860,7 +2873,7 @@ msgstr "显示碰撞区域" msgid "" "When this option is enabled, collision shapes and raycast nodes (for 2D and " "3D) will be visible in the running project." -msgstr "å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œç¢°æ’žåŒºåŸŸå’Œå…‰çº¿æŠ•å°„节点(2Då’Œ3D)将在工程è¿è¡Œæ—¶å¯è§ã€‚" +msgstr "å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œç¢°æ’žåŒºåŸŸå’Œå…‰çº¿æŠ•å°„节点(2D å’Œ 3D)将在项目è¿è¡Œæ—¶å¯è§ã€‚" #: editor/editor_node.cpp msgid "Visible Navigation" @@ -2870,7 +2883,7 @@ msgstr "显示导航" msgid "" "When this option is enabled, navigation meshes and polygons will be visible " "in the running project." -msgstr "å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œå¯¼èˆªç½‘æ ¼å’Œå¤šè¾¹å½¢å°†åœ¨å·¥ç¨‹è¿è¡Œæ—¶å¯è§ã€‚" +msgstr "å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œå¯¼èˆªç½‘æ ¼å’Œå¤šè¾¹å½¢å°†åœ¨é¡¹ç›®è¿è¡Œæ—¶å¯è§ã€‚" #: editor/editor_node.cpp msgid "Synchronize Scene Changes" @@ -2883,7 +2896,7 @@ msgid "" "When used remotely on a device, this is more efficient when the network " "filesystem option is enabled." msgstr "" -"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œåœ¨ç¼–辑器ä¸å¯¹åœºæ™¯çš„任何修改都会被应用于æ£åœ¨è¿è¡Œçš„工程ä¸ã€‚\n" +"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œåœ¨ç¼–辑器ä¸å¯¹åœºæ™¯çš„任何修改都会被应用于æ£åœ¨è¿è¡Œçš„项目ä¸ã€‚\n" "当使用于远程设备时,å¯ç”¨ç½‘络文件系统能æ高编辑效率。" #: editor/editor_node.cpp @@ -2897,7 +2910,7 @@ msgid "" "When used remotely on a device, this is more efficient when the network " "filesystem option is enabled." msgstr "" -"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œä¿å˜çš„任何脚本都会被æ£åœ¨è¿è¡Œçš„工程é‡æ–°åŠ 载。\n" +"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œä»»ä½•ä¿å˜çš„脚本都会被æ£åœ¨è¿è¡Œçš„项目é‡æ–°åŠ 载。\n" "当使用于远程设备时,å¯ç”¨ç½‘络文件系统能æ高编辑效率。" #: editor/editor_node.cpp editor/script_create_dialog.cpp @@ -2918,27 +2931,27 @@ msgstr "截å±" #: editor/editor_node.cpp msgid "Screenshots are stored in the Editor Data/Settings Folder." -msgstr "截图将ä¿å˜åœ¨ç¼–辑器数æ®/设置文件夹ä¸ã€‚" +msgstr "截图将ä¿å˜åœ¨ç¼–辑器数æ®æˆ–设置文件夹ä¸ã€‚" #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "å…¨å±æ¨¡å¼" +msgstr "进入ï¼ç¦»å¼€å…¨å±æ¨¡å¼" #: editor/editor_node.cpp msgid "Toggle System Console" -msgstr "系统命令行模å¼" +msgstr "打开ï¼å…³é—系统命令行" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "打开“编辑器数æ®/设置â€æ–‡ä»¶å¤¹" +msgstr "打开 “编辑器数æ®/设置†文件夹" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "打开编辑器数æ®æ–‡ä»¶å¤¹" +msgstr "打开 “编辑器数æ®â€ 文件夹" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" -msgstr "打开“编辑器设置â€æ–‡ä»¶å¤¹" +msgstr "打开 “编辑器设置†文件夹" #: editor/editor_node.cpp msgid "Manage Editor Features..." @@ -2995,7 +3008,7 @@ msgstr "è¿è¡Œ" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." -msgstr "æš‚åœè¿è¡Œåœºæ™¯ï¼Œä»¥ä¾¿è¿›è¡Œè°ƒè¯•ã€‚" +msgstr "æš‚åœè¿è¡Œåœºæ™¯ä»¥è¿›è¡Œè°ƒè¯•ã€‚" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3052,7 +3065,7 @@ msgstr "文件系统" #: editor/editor_node.cpp msgid "Inspector" -msgstr "属性" +msgstr "属性检查器" #: editor/editor_node.cpp msgid "Expand Bottom Panel" @@ -3084,11 +3097,12 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" -"通过将æºæ¨¡æ¿å®‰è£…到“res://android/buildâ€ï¼Œå°†ä¸ºè‡ªå®šä¹‰Android构建设置项目。\n" -"然åŽï¼Œæ‚¨å¯ä»¥åº”用修改并在导出时构建自己的自定义APKï¼ˆæ·»åŠ æ¨¡å—,更改" -"AndroidManifest.xmlç‰ï¼‰ã€‚\n" -"请注æ„,为了进行自定义构建而ä¸æ˜¯ä½¿ç”¨é¢„先构建的APK,应在Android导出预设ä¸å¯" -"用“使用自定义构建â€é€‰é¡¹ã€‚" +"通过将æºæ¨¡æ¿å®‰è£…到 “res://android/build†,将为自定义 Android 构建设置项" +"目。\n" +"然åŽï¼Œå¯ä»¥åº”用修改并在导出时构建自己的自定义 APKï¼ˆæ·»åŠ æ¨¡å—ã€æ›´æ”¹ " +"AndroidManifest.xml ç‰ï¼‰ã€‚\n" +"请注æ„,è¦ä½¿ç”¨è‡ªå®šä¹‰æž„建而ä¸æ˜¯ä½¿ç”¨é¢„先构建的APK,需在 Android 导出预设ä¸å¯ç”¨ " +"“使用自定义构建†选项。" #: editor/editor_node.cpp msgid "" @@ -3097,12 +3111,12 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" -"Android构建模æ¿å·²å®‰è£…在æ¤é¡¹ç›®ä¸ï¼Œå¹¶ä¸”ä¸ä¼šè¢«è¦†ç›–。\n" -"å†æ¬¡å°è¯•æ‰§è¡Œæ¤æ“作之å‰ï¼Œè¯·æ‰‹åŠ¨åˆ 除“res://android/buildâ€ç›®å½•ã€‚" +"Android 构建模æ¿å·²å®‰è£…在æ¤é¡¹ç›®ä¸ï¼Œå°†ä¸ä¼šè¢«è¦†ç›–。\n" +"å†æ¬¡å°è¯•æ‰§è¡Œæ¤æ“作之å‰ï¼Œè¯·æ‰‹åŠ¨åˆ 除 “res://android/build†目录。" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "从ZIP文件ä¸å¯¼å…¥æ¨¡æ¿" +msgstr "从 ZIP 文件ä¸å¯¼å…¥æ¨¡æ¿" #: editor/editor_node.cpp msgid "Template Package" @@ -3134,11 +3148,11 @@ msgstr "选择" #: editor/editor_node.cpp msgid "Open 2D Editor" -msgstr "打开2D编辑器" +msgstr "打开 2D 编辑器" #: editor/editor_node.cpp msgid "Open 3D Editor" -msgstr "打开3D编辑器" +msgstr "打开 3D 编辑器" #: editor/editor_node.cpp msgid "Open Script Editor" @@ -3182,7 +3196,7 @@ msgstr "编辑æ’件" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "已安装æ’件:" +msgstr "已安装æ’件:" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp msgid "Update" @@ -3227,15 +3241,15 @@ msgstr "物ç†å¸§ %" #: editor/editor_profiler.cpp msgid "Inclusive" -msgstr "包å«" +msgstr "全部" #: editor/editor_profiler.cpp msgid "Self" -msgstr "自身" +msgstr "仅自己" #: editor/editor_profiler.cpp msgid "Frame #:" -msgstr "帧å·ï¼š" +msgstr "帧 #:" #: editor/editor_profiler.cpp msgid "Time" @@ -3259,7 +3273,7 @@ msgstr "层" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "第%dä½ï¼Œå€¼ä¸º%d" +msgstr "第 %d ä½ï¼Œå€¼ä¸º %d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -3271,7 +3285,7 @@ msgstr "指定..." #: editor/editor_properties.cpp msgid "Invalid RID" -msgstr "æ— æ•ˆçš„RID" +msgstr "æ— æ•ˆçš„ RID" #: editor/editor_properties.cpp msgid "" @@ -3284,7 +3298,7 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" -"æ— æ³•åœ¨ä¿å˜ä¸ºæ–‡ä»¶çš„资æºä¸Šåˆ›å»ºè§†å›¾çº¹ç†ã€‚\n" +"æ— æ³•åœ¨ä¿å˜ä¸ºæ–‡ä»¶çš„资æºä¸Šåˆ›å»º ViewportTexture。\n" "资æºéœ€è¦å±žäºŽåœºæ™¯ã€‚" #: editor/editor_properties.cpp @@ -3294,8 +3308,8 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" -"æ— æ³•åœ¨æ¤èµ„æºä¸Šåˆ›å»ºè§†å›¾çº¹ç†ï¼Œå› 为它未设置为本地到场景。\n" -"请打开上é¢çš„“本地到场景â€å±žæ€§ï¼ˆä»¥åŠåŒ…å«å®ƒçš„所有资æºåˆ°èŠ‚点)。" +"æ— æ³•åœ¨æ¤èµ„æºä¸Šåˆ›å»º ViewportTextureï¼Œå› ä¸ºè¿™ä¸ªèµ„æºæœªè®¾ç½®å¯¹åº”的本地场景。\n" +"请打开资æºä¸Šçš„ “Local to Scene†属性(以åŠåˆ°èŠ‚点内所有包å«è¯¥èµ„æºçš„资æºï¼‰ã€‚" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -3311,11 +3325,11 @@ msgstr "扩展脚本" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New %s" -msgstr "新建%s" +msgstr "新建 %s" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Make Unique" -msgstr "转æ¢ä¸ºç‹¬ç«‹èµ„æº" +msgstr "唯一化" #: editor/editor_properties.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp @@ -3333,11 +3347,11 @@ msgstr "粘贴" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Convert To %s" -msgstr "转æ¢ä¸º%s" +msgstr "转æ¢ä¸º %s" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "选定的ä¸æ˜¯Viewport节点ï¼" +msgstr "选定节点ä¸æ˜¯ Viewportï¼" #: editor/editor_properties_array_dict.cpp msgid "Size: " @@ -3362,7 +3376,7 @@ msgstr "新建值:" #: editor/editor_properties_array_dict.cpp msgid "Add Key/Value Pair" -msgstr "æ·»åŠ é”®/值对" +msgstr "æ·»åŠ é”®å€¼å¯¹" #: editor/editor_run_native.cpp msgid "" @@ -3375,31 +3389,31 @@ msgstr "" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "在_run()方法ä¸å¡«å†™æ‚¨çš„逻辑代ç 。" +msgstr "在 _run() 方法ä¸å¡«å†™é€»è¾‘代ç 。" #: editor/editor_run_script.cpp msgid "There is an edited scene already." -msgstr "å·²ç»å˜åœ¨ä¸€ä¸ªæ£åœ¨ç¼–辑的场景。" +msgstr "å·²å˜åœ¨ä¸€ä¸ªæ£åœ¨ç¼–辑的场景。" #: editor/editor_run_script.cpp msgid "Couldn't instance script:" -msgstr "æ— æ³•å®žä¾‹åŒ–è„šæœ¬:" +msgstr "æ— æ³•å®žä¾‹åŒ–è„šæœ¬ï¼š" #: editor/editor_run_script.cpp msgid "Did you forget the 'tool' keyword?" -msgstr "您是å¦é—æ¼äº†tool关键å—?" +msgstr "是å¦é—æ¼äº† tool 关键å—?" #: editor/editor_run_script.cpp msgid "Couldn't run script:" -msgstr "æ— æ³•æ‰§è¡Œè„šæœ¬:" +msgstr "æ— æ³•è¿è¡Œè„šæœ¬ï¼š" #: editor/editor_run_script.cpp msgid "Did you forget the '_run' method?" -msgstr "您是å¦é—æ¼äº†_run()方法?" +msgstr "是å¦é—æ¼äº† _run() 方法?" #: editor/editor_spin_slider.cpp msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." -msgstr "按ä½Ctrlé”®æ¥å››èˆäº”入至整数。 按ä½Shift键获å–更精确的å˜åŒ–。" +msgstr "æŒ‰ä½ Ctrl é”®æ¥å–整。 æŒ‰ä½ Shift 键获å–更精确的å˜åŒ–。" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -3452,23 +3466,23 @@ msgstr "检索镜åƒï¼Œè¯·ç‰å¾…..." #: editor/export_template_manager.cpp msgid "Remove template version '%s'?" -msgstr "是å¦ç§»é™¤ç‰ˆæœ¬ä¸ºâ€œ%sâ€çš„模æ¿ï¼Ÿ" +msgstr "是å¦ç§»é™¤æ¨¡æ¿ç‰ˆæœ¬ “%sâ€ï¼Ÿ" #: editor/export_template_manager.cpp msgid "Can't open export templates zip." -msgstr "æ— æ³•æ‰“å¼€ZIP导出模æ¿ã€‚" +msgstr "æ— æ³•æ‰“å¼€ ZIP 导出模æ¿ã€‚" #: editor/export_template_manager.cpp msgid "Invalid version.txt format inside templates: %s." -msgstr "模æ¿æ–‡ä»¶ï¼š%s ä¸çš„ version.txt æ ¼å¼æ— 效。" +msgstr "模æ¿ä¸çš„ version.txt æ ¼å¼æ— 效:%s。" #: editor/export_template_manager.cpp msgid "No version.txt found inside templates." -msgstr "模æ¿ä¸æ²¡æœ‰æ‰¾åˆ°version.txt文件。" +msgstr "模æ¿ä¸æ²¡æœ‰æ‰¾åˆ° version.txt。" #: editor/export_template_manager.cpp msgid "Error creating path for templates:" -msgstr "创建模æ¿æ–‡ä»¶è·¯å¾„出错:" +msgstr "创建模æ¿è·¯å¾„出错:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -3484,7 +3498,7 @@ msgstr "获å–é•œåƒåˆ—表时出错。" #: editor/export_template_manager.cpp msgid "Error parsing JSON of mirror list. Please report this issue!" -msgstr "解æžé•œåƒåˆ—表JSON时出错。请æ交æ¤é—®é¢˜ï¼" +msgstr "解æžé•œåƒåˆ—表 JSON 时出错。请æ交æ¤é—®é¢˜ï¼" #: editor/export_template_manager.cpp msgid "" @@ -3534,11 +3548,11 @@ msgid "" "The problematic templates archives can be found at '%s'." msgstr "" "模æ¿å®‰è£…失败。\n" -"有问题的模æ¿æ–‡æ¡£åœ¨â€œ%sâ€ã€‚" +"有问题的模æ¿æ–‡æ¡£åœ¨ “%sâ€ã€‚" #: editor/export_template_manager.cpp msgid "Error requesting URL:" -msgstr "请求URL时出错:" +msgstr "请求 URL 时出错:" #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -3588,7 +3602,7 @@ msgstr "SSL æ¡æ‰‹é”™è¯¯" #: editor/export_template_manager.cpp msgid "Uncompressing Android Build Sources" -msgstr "æ— åŽ‹ç¼©çš„Android Build资æº" +msgstr "解压 Android Build 资æº" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3636,11 +3650,11 @@ msgstr "状æ€ï¼šå¯¼å…¥æ–‡ä»¶å¤±è´¥ã€‚请手动修å¤æ–‡ä»¶åŽé‡æ–°å¯¼å…¥ã€‚" #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." -msgstr "æ— æ³•ç§»åŠ¨/é‡å‘½åæ ¹èµ„æºã€‚" +msgstr "æ— æ³•ç§»åŠ¨æˆ–é‡å‘½åæ ¹èµ„æºã€‚" #: editor/filesystem_dock.cpp msgid "Cannot move a folder into itself." -msgstr "æ— æ³•å°†æ–‡ä»¶å¤¹ç§»åŠ¨åˆ°å…¶è‡ªèº«ã€‚" +msgstr "æ— æ³•å°†æ–‡ä»¶å¤¹ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹è‡ªå·±å†…ã€‚" #: editor/filesystem_dock.cpp msgid "Error moving:" @@ -3680,7 +3694,7 @@ msgstr "é‡å‘½å文件夹:" #: editor/filesystem_dock.cpp msgid "Duplicating file:" -msgstr "æ‹·è´æ–‡ä»¶ï¼š" +msgstr "å¤åˆ¶æ–‡ä»¶ï¼š" #: editor/filesystem_dock.cpp msgid "Duplicating folder:" @@ -3700,7 +3714,7 @@ msgstr "打开场景" #: editor/filesystem_dock.cpp msgid "Instance" -msgstr "创建实例节点" +msgstr "实例" #: editor/filesystem_dock.cpp msgid "Add to Favorites" @@ -3724,13 +3738,18 @@ msgstr "é‡å‘½å为..." #: editor/filesystem_dock.cpp msgid "Duplicate..." -msgstr "æ‹·è´..." +msgstr "é‡å¤..." #: editor/filesystem_dock.cpp msgid "Move To..." msgstr "移动..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "移动 Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "新建场景..." @@ -3761,11 +3780,11 @@ msgstr "é‡å‘½å" #: editor/filesystem_dock.cpp msgid "Previous Folder/File" -msgstr "上一个文件夹/文件" +msgstr "上一个文件夹或文件" #: editor/filesystem_dock.cpp msgid "Next Folder/File" -msgstr "下一个文件夹/文件" +msgstr "下一个文件夹或文件" #: editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" @@ -3793,7 +3812,7 @@ msgstr "移动" #: editor/filesystem_dock.cpp msgid "There is already file or folder with the same name in this location." -msgstr "当å‰ä½ç½®å·²å˜åœ¨ç›¸åŒåå—的文件或文件夹。" +msgstr "当å‰ä½ç½®å·²å˜åœ¨åŒå文件或文件夹。" #: editor/filesystem_dock.cpp msgid "Overwrite" @@ -3809,7 +3828,7 @@ msgstr "创建脚本" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp msgid "Find in Files" -msgstr "跨文件查找" +msgstr "在文件ä¸æŸ¥æ‰¾" #: editor/find_in_files.cpp msgid "Find:" @@ -3827,7 +3846,7 @@ msgstr "ç›é€‰ï¼š" msgid "" "Include the files with the following extensions. Add or remove them in " "ProjectSettings." -msgstr "包å«ä¸‹åˆ—扩展å的文件。å¯åœ¨é¡¹ç›®è®¾ç½®ä¸å¢žåŠ 或移除。" +msgstr "包å«ä¸‹åˆ—扩展å的文件。å¯åœ¨é¡¹ç›®è®¾ç½®ä¸æ·»åŠ 或移除。" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3876,11 +3895,11 @@ msgstr "分组å称已å˜åœ¨ã€‚" #: editor/groups_editor.cpp msgid "Invalid group name." -msgstr "组åæ— æ•ˆã€‚" +msgstr "分组åç§°æ— æ•ˆã€‚" #: editor/groups_editor.cpp msgid "Rename Group" -msgstr "é‡å‘½å组" +msgstr "é‡å‘½å分组" #: editor/groups_editor.cpp msgid "Delete Group" @@ -3917,43 +3936,43 @@ msgstr "管ç†åˆ†ç»„" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" -msgstr "导入为独立场景" +msgstr "导入为å•ä¸€åœºæ™¯" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Animations" -msgstr "与独立的动画一åŒå¯¼å…¥" +msgstr "与动画分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials" -msgstr "导入独立æè´¨" +msgstr "与æ质分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects" -msgstr "导入独立物体" +msgstr "与对象分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials" -msgstr "导入独立物体 + æè´¨" +msgstr "与对象 + æ质分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Animations" -msgstr "导入独立的物体和动画" +msgstr "与对象 + 动画分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" -msgstr "与独立的æ质和动画一åŒå¯¼å…¥" +msgstr "与æè´¨ + 动画分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "使用å•ç‹¬çš„对象 + æè´¨ + 动画导入" +msgstr "与对象 + æè´¨ + 动画分开导入" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" -msgstr "导入多个场景" +msgstr "导入为多个场景" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes+Materials" -msgstr "导入多个场景 + æè´¨" +msgstr "导入为多个场景 + æè´¨" #: editor/import/resource_importer_scene.cpp #: editor/plugins/mesh_library_editor_plugin.cpp @@ -3962,7 +3981,7 @@ msgstr "导入场景" #: editor/import/resource_importer_scene.cpp msgid "Importing Scene..." -msgstr "导入场景..." +msgstr "导入场景ä¸..." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" @@ -3970,7 +3989,7 @@ msgstr "æ£åœ¨ç”Ÿæˆå…‰ç…§è´´å›¾" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " -msgstr "æ£åœ¨ç”ŸæˆMesh: " +msgstr "æ£åœ¨ç”Ÿæˆç½‘æ ¼ï¼š " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script..." @@ -3990,7 +4009,7 @@ msgstr "åŽå¤„ç†è„šæœ¬è¿è¡Œå‘生错误:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "ä½ æ˜¯å¦åœ¨ `post_import()` 方法ä¸è¿”回了 Node è¡ç”Ÿå¯¹è±¡ï¼Ÿ" +msgstr "有在 `post_import()` 方法ä¸è¿”回继承了 Node 的对象å—?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -3998,15 +4017,15 @@ msgstr "ä¿å˜ä¸..." #: editor/import_dock.cpp msgid "%d Files" -msgstr "%d个文件" +msgstr "%d 个文件" #: editor/import_dock.cpp msgid "Set as Default for '%s'" -msgstr "设置为“%sâ€çš„默认值" +msgstr "设置为 “%s†的默认值" #: editor/import_dock.cpp msgid "Clear Default for '%s'" -msgstr "清除默认'%s'" +msgstr "清除 “%s†的默认值" #: editor/import_dock.cpp msgid "Import As:" @@ -4116,15 +4135,15 @@ msgstr "多节点组" #: editor/node_dock.cpp msgid "Select a single node to edit its signals and groups." -msgstr "选择一个节点以编辑其信å·å’Œç»„。" +msgstr "选择一个节点以编辑其信å·å’Œåˆ†ç»„。" #: editor/plugin_config_dialog.cpp msgid "Edit a Plugin" -msgstr "编辑一个æ’件" +msgstr "编辑æ’件" #: editor/plugin_config_dialog.cpp msgid "Create a Plugin" -msgstr "创建一个æ’件" +msgstr "创建æ’件" #: editor/plugin_config_dialog.cpp msgid "Plugin Name:" @@ -4210,11 +4229,11 @@ msgstr "移动节点" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Limits" -msgstr "更改混åˆç©ºé—´1Dé™åˆ¶" +msgstr "更改 BlendSpace1D é™åˆ¶" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Labels" -msgstr "更改混åˆç©ºé—´1Dæ ‡ç¾" +msgstr "更改 BlendSpace1D æ ‡ç¾" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4234,11 +4253,11 @@ msgstr "æ·»åŠ åŠ¨ç”»ç‚¹" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Remove BlendSpace1D Point" -msgstr "移除混åˆç©ºé—´1D顶点" +msgstr "移除 BlendSpace1D 顶点" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" -msgstr "移动混åˆç©ºé—´1D节点顶点" +msgstr "移动 BlendSpace1D 节点顶点" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4259,7 +4278,7 @@ 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 "选择并移动点,使用 RMB 创建点。" +msgstr "é€‰æ‹©å¹¶ç§»åŠ¨ç‚¹ï¼Œä½¿ç”¨é¼ æ ‡å³é”®åˆ›å»ºç‚¹ã€‚" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp @@ -4294,19 +4313,19 @@ msgstr "æ·»åŠ ä¸‰è§’é¢" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Limits" -msgstr "更改混åˆç©ºé—´2Dé™åˆ¶" +msgstr "更改 BlendSpace2D é™åˆ¶" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Labels" -msgstr "更改混åˆç©ºé—´2Dæ ‡ç¾" +msgstr "更改 BlendSpace2D æ ‡ç¾" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Remove BlendSpace2D Point" -msgstr "移除混åˆç©ºé—´2D顶点" +msgstr "移除 BlendSpace2D 顶点" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Remove BlendSpace2D Triangle" -msgstr "移除混åˆç©ºé—´2D三角形" +msgstr "移除 BlendSpace2D 三角形" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." @@ -4318,11 +4337,11 @@ msgstr "ä¸å˜åœ¨ä»»ä½•ä¸‰è§’å½¢ï¼Œå› æ¤ä¸ä¼šæœ‰ä»»ä½•æ··æ•ˆæžœåˆäº§ç”Ÿã€‚" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Toggle Auto Triangles" -msgstr "切æ¢è‡ªåŠ¨ä¸‰è§’å½¢" +msgstr "打开ï¼å…³é—自动三角形" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." -msgstr "通过连接点创建三角形。" +msgstr "通过连接点æ¥åˆ›å»ºä¸‰è§’形。" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Erase points and triangles." @@ -4330,12 +4349,12 @@ msgstr "擦除点和三角形。" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Generate blend triangles automatically (instead of manually)" -msgstr "自动创建混åˆä¸‰è§’形(éžæ‰‹åŠ¨ï¼‰" +msgstr "自动生æˆæ··åˆä¸‰è§’形(而éžæ‰‹åŠ¨ï¼‰" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend:" -msgstr "æ··åˆ:" +msgstr "æ··åˆï¼š" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Parameter Changed" @@ -4352,7 +4371,7 @@ msgstr "输出节点ä¸èƒ½è¢«æ·»åŠ 到混åˆæ ‘。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Add Node to BlendTree" -msgstr "在åˆæˆæ ‘ä¸æ·»åŠ 节点" +msgstr "æ·»åŠ èŠ‚ç‚¹åˆ° BlendTree" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Node Moved" @@ -4400,7 +4419,7 @@ msgstr "没有设置动画æ’æ”¾å™¨ï¼Œå› æ¤æ— 法获å–轨é“å称。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Player path set is invalid, so unable to retrieve track names." -msgstr "æ— æ•ˆçš„æ’æ”¾å™¨è·¯åŠ²è®¾ç½®ï¼Œå› æ¤æ— 法获å–轨é“å称。" +msgstr "æ’æ”¾å™¨è·¯å¾„è®¾ç½®æ— æ•ˆï¼Œæ— æ³•èŽ·å–轨é“å称。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -4442,7 +4461,7 @@ msgstr "å¯ç”¨ç›é€‰" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "切æ¢AutoPlay" +msgstr "打开ï¼å…³é—自动æ’放" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" @@ -4501,7 +4520,7 @@ msgstr "没有需è¦å¤åˆ¶çš„动画ï¼" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation resource on clipboard!" -msgstr "剪切æ¿ä¸ä¸å˜åœ¨åŠ¨ç”»èµ„æºï¼" +msgstr "剪贴æ¿ä¸ä¸å˜åœ¨åŠ¨ç”»èµ„æºï¼" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" @@ -4513,7 +4532,7 @@ msgstr "粘贴动画" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation to edit!" -msgstr "没有动画需è¦ç¼–辑ï¼" +msgstr "没有动画能编辑ï¼" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -4537,11 +4556,11 @@ msgstr "从当å‰ä½ç½®æ’放选ä¸åŠ¨ç”»ï¼ˆD)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "动画ä½ç½®ï¼ˆå•ä½:秒)。" +msgstr "动画ä½ç½®ï¼ˆç§’)。" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." -msgstr "节点全局缩放动画æ’放。" +msgstr "为节点全局缩放动画æ’放。" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" @@ -4569,7 +4588,7 @@ msgstr "åŠ è½½åŽè‡ªåŠ¨æ’放" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "å¯ç”¨æ´‹è‘±çš®(Onion Skinning)" +msgstr "å¯ç”¨æ´‹è‘±çš®" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning Options" @@ -4589,23 +4608,23 @@ msgstr "未æ¥" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" -msgstr "Depth(深度)" +msgstr "深度" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" -msgstr "1æ¥" +msgstr "1 æ¥" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "2æ¥" +msgstr "2 æ¥" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "3æ¥" +msgstr "3 æ¥" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "ä»…ä¸åŒ" +msgstr "仅差异" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" @@ -4613,7 +4632,7 @@ msgstr "强制用白色调和" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" -msgstr "包括3D控制器" +msgstr "包括 Gizmo (3D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pin AnimationPlayer" @@ -4636,11 +4655,11 @@ msgstr "错误ï¼" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "æ··åˆæ—¶é—´:" +msgstr "æ··åˆæ—¶é—´ï¼š" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "接下æ¥ï¼ˆè‡ªåŠ¨æŽ’列):" +msgstr "接下æ¥ï¼ˆè‡ªåŠ¨é˜Ÿåˆ—):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" @@ -4665,11 +4684,11 @@ msgstr "æ·»åŠ èŠ‚ç‚¹" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "终点" +msgstr "结æŸ" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" -msgstr "å³åˆ»" +msgstr "ç«‹å³" #: editor/plugins/animation_state_machine_editor.cpp msgid "Sync" @@ -4677,7 +4696,7 @@ msgstr "åŒæ¥" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "在终点" +msgstr "在结尾" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" @@ -4689,7 +4708,7 @@ msgstr "å过渡动画需è¦å¼€å§‹å’Œç»“æŸèŠ‚点。" #: editor/plugins/animation_state_machine_editor.cpp msgid "No playback resource set at path: %s." -msgstr "è·¯å¾„ä¸‹æ— æ’放资æºï¼š%s。" +msgstr "è·¯å¾„ä¸‹æ— å¯æ’放资æºï¼š%s。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Removed" @@ -4727,11 +4746,11 @@ msgstr "移除选ä¸çš„节点或过渡动画。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." -msgstr "å¼€å¯æˆ–å…³é—动画的自动æ’放,在开始,é‡å¯æˆ–者æœç´¢0ä½ç½®å¤„。" +msgstr "å¼€å¯æˆ–å…³é—动画在开始,é‡å¯æˆ–者æœç´¢0ä½ç½®å¤„的自动æ’放。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." -msgstr "设置终点结æŸåŠ¨ç”»ã€‚这对于å过渡动画éžå¸¸æœ‰ç”¨ã€‚" +msgstr "设置终点结æŸåŠ¨ç”»ã€‚适用于å过渡动画。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition: " @@ -4765,11 +4784,11 @@ msgstr "淡出(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend" -msgstr "æ··åˆ" +msgstr "æ··åˆ (Blend)" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix" -msgstr "æ··åˆ" +msgstr "æ··åˆ (Mix)" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Auto Restart:" @@ -4794,19 +4813,19 @@ msgstr "æ•°é‡:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 0:" -msgstr "æ··åˆ0:" +msgstr "æ··åˆ 0:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 1:" -msgstr "æ··åˆ1:" +msgstr "æ··åˆ 1:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "X-Fade(交å‰æ·¡åŒ–)时间(s):" +msgstr "交å‰æ·¡åŒ– (X-Fade) 时间(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Current:" -msgstr "当å‰:" +msgstr "当å‰ï¼š" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -4816,15 +4835,15 @@ msgstr "æ·»åŠ è¾“å…¥" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "清除Auto-Advance" +msgstr "清除自动 Advance" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "设置清除Auto-Advance" +msgstr "设置自动 Advance" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Delete Input" -msgstr "åˆ é™¤è¾“å…¥äº‹ä»¶" +msgstr "åˆ é™¤è¾“å…¥" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is valid." @@ -4844,31 +4863,31 @@ msgstr "å•é¡¹èŠ‚点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix Node" -msgstr "æ··åˆ(Mix)节点" +msgstr "Mix 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend2 Node" -msgstr "æ··åˆ2(Blend) 节点" +msgstr "Blend2 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend3 Node" -msgstr "æ··åˆ3(Blend) 节点" +msgstr "Blend3 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend4 Node" -msgstr "æ··åˆ4(Blend) 节点" +msgstr "Blend4 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeScale Node" -msgstr "时间缩放节点" +msgstr "TimeScale 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "TimeSeek(时间寻找) 节点" +msgstr "TimeSeek 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Transition Node" -msgstr "过渡节点" +msgstr "Transition 节点" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Import Animations..." @@ -4896,11 +4915,11 @@ msgstr "连接错误,请é‡è¯•ã€‚" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" -msgstr "æ— æ³•è¿žæŽ¥åˆ°æœåŠ¡å™¨:" +msgstr "æ— æ³•è¿žæŽ¥åˆ°ä¸»æœºï¼š" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response from host:" -msgstr "æœåŠ¡å™¨æ— å“应:" +msgstr "ä¸»æœºæ— å“应:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve hostname:" @@ -4908,7 +4927,7 @@ msgstr "æ— æ³•è§£æžä¸»æœºå:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "请求失败,错误代ç :" +msgstr "请求失败,返回代ç :" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed." @@ -4940,7 +4959,7 @@ msgstr "超时。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "文件hash值错误,该文件å¯èƒ½è¢«ç¯¡æ”¹ã€‚" +msgstr "文件哈希值错误,该文件å¯èƒ½è¢«ç¯¡æ”¹ã€‚" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" @@ -4952,7 +4971,7 @@ msgstr "获得:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed sha256 hash check" -msgstr "sha256å“ˆå¸Œå€¼æ ¡éªŒå¤±è´¥" +msgstr "SHA-256 å“ˆå¸Œå€¼æ ¡éªŒå¤±è´¥" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" @@ -4960,7 +4979,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..." @@ -4976,7 +4995,7 @@ msgstr "请求错误" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" -msgstr "空闲" +msgstr "闲置" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Install..." @@ -4992,7 +5011,7 @@ msgstr "下载错误" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" -msgstr "已在下载æ¤ç´ æï¼" +msgstr "æ¤ç´ æ已在下载ï¼" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Recently Updated" @@ -5000,7 +5019,7 @@ msgstr "最近更新" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Least Recently Updated" -msgstr "最久未更新" +msgstr "最近更新(倒åºï¼‰" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (A-Z)" @@ -5040,7 +5059,7 @@ msgstr "全部" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "未找到“%sâ€ã€‚" +msgstr "未找到 “%sâ€ã€‚" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5052,16 +5071,16 @@ msgstr "æ’件..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" -msgstr "排åº:" +msgstr "排åºï¼š" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp msgid "Category:" -msgstr "分类:" +msgstr "分类:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "站点:" +msgstr "站点:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Support" @@ -5081,7 +5100,7 @@ msgstr "载入ä¸..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "ç´ æZIP文件" +msgstr "ç´ æ ZIP 文件" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5097,7 +5116,7 @@ msgstr "" msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." -msgstr "没有å¯çƒ˜ç„™çš„Mesh。请确ä¿Mesh包å«UV2通é“并且勾选'Bake Light'选项。" +msgstr "没有å¯çƒ˜ç„™çš„ç½‘æ ¼ã€‚è¯·ç¡®ä¿ç½‘æ ¼åŒ…å« UV2 通é“并且勾选 “Bake Light†选项。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." @@ -5174,50 +5193,43 @@ msgstr "创建垂直水平å‚考线" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "å°† CanvasItem “%sâ€çš„ Pivot Offset 设为 (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "旋转 CanvasItem" +msgstr "旋转 %d 个 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "旋转 CanvasItem" +msgstr "旋转 CanvasItem “%s†为 %d 度" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "移动 CanvasItem" +msgstr "移动 CanvasItem “%s†的锚点" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "缩放 Node2D “%s†为 (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "缩放 Control “%s†为 (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "缩放包å«é¡¹" +msgstr "缩放 %d 个 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "缩放包å«é¡¹" +msgstr "缩放 CanvasItem “%s†为 (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "移动 CanvasItem" +msgstr "移动 %s 个 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "移动 CanvasItem" +msgstr "移动 CanvasItem “%s†至 (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5227,29 +5239,29 @@ msgstr "容器的å级的锚点和边è·å€¼è¢«å…¶çˆ¶å®¹å™¨é‡å†™ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." -msgstr "控件节点的定ä½ç‚¹å’Œè¾¹è·å€¼çš„预设。" +msgstr "Control 节点的定ä½ç‚¹å’Œè¾¹è·å€¼çš„预设。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." -msgstr "激活åŽï¼Œç§»åŠ¨æŽ§åˆ¶èŠ‚点会更改å˜é”šç‚¹ï¼Œè€Œéžè¾¹è·ã€‚" +msgstr "激活åŽï¼Œç§»åŠ¨ Control 节点会更改å˜é”šç‚¹ï¼Œè€Œéžè¾¹è·ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Left" -msgstr "左上角" +msgstr "左上" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Right" -msgstr "å³ä¸Šè§’" +msgstr "å³ä¸Š" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Bottom Right" -msgstr "å³ä¸‹è§’" +msgstr "å³ä¸‹" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Bottom Left" -msgstr "左下角" +msgstr "左下" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Left" @@ -5371,7 +5383,7 @@ msgstr "清除骨骼" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "æ·»åŠ IK链" +msgstr "æ·»åŠ IK 链" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" @@ -5404,7 +5416,7 @@ msgstr "Alt+拖动:移动" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." -msgstr "按下V键修改旋转ä¸å¿ƒï¼Œåœ¨ç§»åŠ¨æ—¶æŒ‰ä¸‹Shift+Væ¥æ‹–动它。" +msgstr "按下 “V†键修改旋转ä¸å¿ƒï¼Œåœ¨ç§»åŠ¨æ—¶æŒ‰ä¸‹ Shift+V æ¥æ‹–动它。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" @@ -5432,7 +5444,7 @@ msgid "" "(same as Alt+RMB in select mode)." msgstr "" "æ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®çš„所有节点\n" -"(åŒAlt+é¼ æ ‡å³é”®ï¼‰ã€‚" +"ï¼ˆåŒ Alt + é¼ æ ‡å³é”®ï¼‰ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." @@ -5645,11 +5657,11 @@ msgstr "清除姿势" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" -msgstr "ç½‘æ ¼æ¥è¿›ä¹˜ä»¥2" +msgstr "ç½‘æ ¼æ¥è¿›ä¹˜ä»¥ 2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Divide grid step by 2" -msgstr "ç½‘æ ¼æ¥è¿›é™¤ä»¥2" +msgstr "ç½‘æ ¼æ¥è¿›é™¤ä»¥ 2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan View" @@ -5657,7 +5669,7 @@ msgstr "平移视图" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" -msgstr "æ·»åŠ %s" +msgstr "æ·»åŠ %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Adding %s..." @@ -5675,7 +5687,7 @@ 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 "从%s实例化场景出错" +msgstr "从 %s 实例化场景出错" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Default Type" @@ -5686,12 +5698,12 @@ msgid "" "Drag & drop + Shift : Add node as sibling\n" "Drag & drop + Alt : Change node type" msgstr "" -"拖放+ Shiftï¼šå°†èŠ‚ç‚¹æ·»åŠ ä¸ºå…„å¼ŸèŠ‚ç‚¹\n" -"拖放+ Alt:更改节点类型" +"拖放 + Shiftï¼šå°†èŠ‚ç‚¹æ·»åŠ ä¸ºå…„å¼ŸèŠ‚ç‚¹\n" +"拖放 + Alt:更改节点类型" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Polygon3D" -msgstr "创建Polygon3D" +msgstr "创建 Polygon3D" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" @@ -5736,7 +5748,7 @@ msgstr "生æˆé¡¶ç‚¹è®¡æ•°:" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Mask" -msgstr "Emission Mask(å‘å°„é®æŒ¡)" +msgstr "å‘å°„é®ç½©" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5761,29 +5773,29 @@ msgstr "从åƒç´ æ•èŽ·" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Colors" -msgstr "Emission Colors(自å‘光颜色)" +msgstr "å‘射色彩" #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" -msgstr "CPUç²’å" +msgstr "CPUParticles" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "从Mesh创建å‘射点" +msgstr "ä»Žç½‘æ ¼åˆ›å»ºå‘射点" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "从Node创建å‘射点" +msgstr "从节点创建å‘射点" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 0" -msgstr "ä¿æŒ0" +msgstr "Flat 0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 1" -msgstr "ä¿æŒ1" +msgstr "Flat 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" @@ -5835,7 +5847,7 @@ msgstr "移除曲线点" #: editor/plugins/curve_editor_plugin.cpp msgid "Toggle Curve Linear Tangent" -msgstr "切æ¢æ›²çº¿çº¿æ€§Tangent" +msgstr "切æ¢æ›²çº¿çº¿æ€§æ£åˆ‡" #: editor/plugins/curve_editor_plugin.cpp msgid "Hold Shift to edit tangents individually" @@ -5847,7 +5859,7 @@ msgstr "é¼ æ ‡å³é”®æ·»åŠ 点" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "烘培GI探针" +msgstr "烘培 GI 探针" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -5855,7 +5867,7 @@ msgstr "æ¸å˜ç¼–辑" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" -msgstr "第%d项" +msgstr "第 %d 项" #: editor/plugins/item_list_editor_plugin.cpp msgid "Items" @@ -5875,11 +5887,11 @@ msgstr "ç½‘æ ¼ä¸ºç©ºï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Couldn't create a Trimesh collision shape." -msgstr "æ— æ³•åˆ›å»ºTrimesh碰撞形状。" +msgstr "æ— æ³•åˆ›å»ºä¸‰è§’ç½‘æ ¼ç¢°æ’žå½¢çŠ¶ã€‚" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" -msgstr "创建é™æ€ä¸‰ç»´èº«ä½“" +msgstr "创建é™æ€ä¸‰è§’ç½‘æ ¼èº«ä½“" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" @@ -5887,7 +5899,7 @@ msgstr "æ¤æ“ä½œæ— æ³•å¼•ç”¨åœ¨æ ¹èŠ‚ç‚¹ä¸Šï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Shape" -msgstr "åˆ›å»ºä¸‰ç»´ç½‘æ ¼é™æ€å½¢çŠ¶" +msgstr "åˆ›å»ºä¸‰è§’ç½‘æ ¼é™æ€å½¢çŠ¶" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Can't create a single convex collision shape for the scene root." @@ -5919,23 +5931,23 @@ msgstr "åˆ›å»ºå¯¼èˆªç½‘æ ¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "包å«çš„Meshä¸æ˜¯ArrayMesh类型。" +msgstr "包å«çš„ Mesh ä¸æ˜¯ ArrayMesh 类型。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "UV展开失败,å¯èƒ½è¯¥ç½‘æ ¼å¹¶éžæµå½¢ï¼Ÿ" +msgstr "UV 展开失败,å¯èƒ½è¯¥ç½‘æ ¼å¹¶éžæµå½¢ï¼Ÿ" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "没有è¦è°ƒè¯•çš„ç½‘æ ¼ã€‚" +msgstr "没有å¯è°ƒè¯•çš„ç½‘æ ¼ã€‚" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "模型在æ¤å±‚上没有UV图" +msgstr "模型在æ¤å±‚上没有 UV" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "MeshInstance (ç½‘æ ¼å®žä¾‹) 缺少 Mesh(ç½‘æ ¼)ï¼" +msgstr "MeshInstance 缺少 Meshï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" @@ -5943,7 +5955,7 @@ msgstr "ç½‘æ ¼æ²¡æœ‰å¯ç”¨æ¥åˆ›å»ºè½®å»“的表é¢ï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" -msgstr "ç½‘æ ¼åŽŸå§‹ç±»åž‹ä¸æ˜¯ PRIMITIVE_TRIANGLES(ä¸‰è§’å½¢ç½‘æ ¼)ï¼" +msgstr "Mesh 原始类型ä¸æ˜¯ PRIMITIVE_TRIANGLESï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -5967,7 +5979,7 @@ msgid "" "automatically.\n" "This is the most accurate (but slowest) option for collision detection." msgstr "" -"创建StaticBody并自动为其分é…基于多边形的碰撞形状。\n" +"创建 StaticBody 并自动为其分é…基于多边形的碰撞形状。\n" "这是最准确(但是最慢)的碰撞检测手段。" #: editor/plugins/mesh_instance_editor_plugin.cpp @@ -6018,19 +6030,19 @@ msgid "" "that property isn't possible." msgstr "" "创建一个é™æ€è½®å»“ç½‘æ ¼ã€‚è½®å»“ç½‘æ ¼ä¼šè‡ªåŠ¨ç¿»è½¬æ³•çº¿ã€‚\n" -"å¯ä»¥ç”¨æ¥åœ¨å¿…è¦æ—¶ä»£æ›¿SpatialMaterialçš„Grow属性。" +"å¯ä»¥ç”¨æ¥åœ¨å¿…è¦æ—¶ä»£æ›¿ SpatialMaterial çš„ Grow 属性。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV1" -msgstr "查看UV1" +msgstr "查看 UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV2" -msgstr "查看UV2" +msgstr "查看 UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "ä¸ºå…‰ç…§æ˜ å°„/环境光é®è”½å±•å¼€UV2" +msgstr "ä¸ºå…‰ç…§æ˜ å°„æˆ–çŽ¯å¢ƒå…‰é®è”½å±•å¼€ UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -6042,11 +6054,11 @@ msgstr "轮廓大å°ï¼š" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Channel Debug" -msgstr "调试UV通é“" +msgstr "调试 UV 通é“" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" -msgstr "确定è¦ç§»é™¤é¡¹ç›®%då—?" +msgstr "确定è¦ç§»é™¤é¡¹ç›® %d å—?" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "" @@ -6079,11 +6091,11 @@ msgstr "从场景ä¸æ›´æ–°" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "æœªæŒ‡å®šç½‘æ ¼æºï¼ˆä¸”节点ä¸æ²¡æœ‰è®¾ç½®å¤šç½‘æ ¼ç‰©ä½“(MultiMesh))。" +msgstr "æœªæŒ‡å®šç½‘æ ¼æºï¼ˆä¸”节点ä¸æ²¡æœ‰è®¾ç½® MultiMesh 集)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "æœªæŒ‡å®šç½‘æ ¼æºï¼ˆä¸”å¤šç½‘æ ¼(MultiMesh)ä¸åŒ…å«ç½‘æ ¼(Mesh))。" +msgstr "æœªæŒ‡å®šç½‘æ ¼æºï¼ˆä¸” MultiMesh ä¸åŒ…å« Mesh)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -6091,11 +6103,11 @@ msgstr "ç½‘æ ¼æºæ— æ•ˆï¼ˆè·¯å¾„æ— æ•ˆï¼‰ã€‚" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "ç½‘æ ¼æºæ— 效(ä¸æ˜¯ç½‘æ ¼å®žä¾‹(MeshInstance))。" +msgstr "ç½‘æ ¼æºæ— 效(ä¸æ˜¯ MeshInstance)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "ç½‘æ ¼æºæ— 效(ä¸åŒ…å«ç½‘æ ¼(Mesh)资æºï¼‰ã€‚" +msgstr "ç½‘æ ¼æºæ— 效(ä¸åŒ…å« Mesh 资æºï¼‰ã€‚" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -6115,7 +6127,7 @@ msgstr "表é¢çš„æºæ— æ•ˆï¼ˆæ— é¢ï¼‰ã€‚" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "选择æºç½‘æ ¼:" +msgstr "选择æºç½‘æ ¼ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" @@ -6127,7 +6139,7 @@ msgstr "填充表é¢" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "å¡«å……MultiMesh" +msgstr "å¡«å…… MultiMesh" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" @@ -6139,11 +6151,11 @@ msgstr "æºç½‘æ ¼ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "Xè½´" +msgstr "X è½´" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "Yè½´" +msgstr "Y è½´" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" @@ -6177,7 +6189,7 @@ msgstr "创建导航多边形" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" -msgstr "转æ¢ä¸º CPUç²’å" +msgstr "转æ¢ä¸º CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generating Visibility Rect" @@ -6189,12 +6201,12 @@ msgstr "生æˆå¯è§†åŒ–区域" #: 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 #: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" -msgstr "生æˆæ—¶é—´ï¼ˆç§’):" +msgstr "生æˆæ—¶é—´ï¼ˆç§’):" #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry's faces don't contain any area." @@ -6206,23 +6218,23 @@ msgstr "å‡ ä½•ä½“ä¸åŒ…å«ä»»ä½•é¢ã€‚" #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." -msgstr "“%sâ€æœªä»ŽSpatial继承。" +msgstr "“%s†未从 Spatial 继承。" #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain geometry." -msgstr "\"%s\"ä¸åŒ…å«å‡ 何体。" +msgstr "“%s†ä¸åŒ…å«å‡ 何体。" #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain face geometry." -msgstr "\"%s\"ä¸åŒ…å«é¢å‡ 何体。" +msgstr "“%s†ä¸åŒ…å«é¢å‡ 何体。" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" -msgstr "创建å‘射器(Emitter)" +msgstr "创建å‘射器 (Emitter)" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Points:" -msgstr "å‘å°„ä½ç½®:" +msgstr "å‘å°„ä½ç½®ï¼š" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" @@ -6230,7 +6242,7 @@ msgstr "表é¢é¡¶ç‚¹" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "表é¢å®šç‚¹+法线(方å‘å‘é‡ï¼‰" +msgstr "表é¢å®šç‚¹ + 法线(有å‘)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" @@ -6242,19 +6254,19 @@ msgstr "å‘å°„æºï¼š " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "需è¦ä½¿ç”¨â€œParticlesMaterialâ€ç±»åž‹çš„处ç†æ质。" +msgstr "需è¦ä½¿ç”¨ “ParticlesMaterial†类型的处ç†æ质。" #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "æ£åœ¨ç”ŸæˆAABB" +msgstr "æ£åœ¨ç”Ÿæˆ AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate Visibility AABB" -msgstr "生æˆå¯è§çš„AABB" +msgstr "生æˆå¯è§çš„ AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" -msgstr "生æˆAABB" +msgstr "ç”Ÿæˆ AABB" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" @@ -6297,12 +6309,12 @@ msgstr "选择顶点" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Shift+Drag: Select Control Points" -msgstr "Shift+拖拽:选择控制点" +msgstr "Shift+拖动:选择控制点" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Click: Add Point" -msgstr "é¼ æ ‡å·¦é”®:æ·»åŠ ç‚¹" +msgstr "å•å‡»ï¼šæ·»åŠ 点" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Left Click: Split Segment (in curve)" @@ -6311,11 +6323,11 @@ msgstr "é¼ æ ‡å·¦é”®ï¼šæ‹†åˆ†ç‰‡æ®µï¼ˆæ›²çº¿å†…ï¼‰" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Right Click: Delete Point" -msgstr "é¼ æ ‡å³é”®:åˆ é™¤ç‚¹" +msgstr "é¼ æ ‡å³é”®ï¼šåˆ 除点" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" -msgstr "选择控制点(Shift+拖动)" +msgstr "选择控制点(Shift+拖动)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6358,11 +6370,11 @@ msgstr "设置曲线的顶点åæ ‡" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Position" -msgstr "设置的曲线åˆå§‹ä½ç½®ï¼ˆPos)" +msgstr "设置曲线内控点ä½ç½®" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Out Position" -msgstr "设置曲线外控制点" +msgstr "设置曲线外控点ä½ç½®" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" @@ -6374,15 +6386,15 @@ msgstr "移除路径顶点" #: editor/plugins/path_editor_plugin.cpp msgid "Remove Out-Control Point" -msgstr "移除曲线外控制点" +msgstr "移除外控点" #: editor/plugins/path_editor_plugin.cpp msgid "Remove In-Control Point" -msgstr "移除曲线内控制点" +msgstr "移除内控点" #: editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" -msgstr "拆分(曲线)" +msgstr "拆分线段(在曲线ä¸ï¼‰" #: editor/plugins/physical_bone_plugin.cpp msgid "Move Joint" @@ -6391,7 +6403,7 @@ msgstr "移动关节" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "Polygon2D 的骨架属性并没有指å‘一个 Skeleton2D 节点" +msgstr "Polygon2D çš„éª¨æž¶å±žæ€§å¹¶æ²¡æœ‰æŒ‡å‘ Skeleton2D 节点" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Sync Bones" @@ -6407,13 +6419,13 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "创建UV贴图" +msgstr "创建 UV 贴图" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." -msgstr "多边形2d 具有内部顶点, å› æ¤ä¸èƒ½å†åœ¨è§†å£ä¸å¯¹å…¶è¿›è¡Œç¼–辑。" +msgstr "Polygon2D å…·æœ‰å†…éƒ¨é¡¶ç‚¹ï¼Œå› æ¤ä¸èƒ½å†äºŽè§†å£ä¸å¯¹å…¶è¿›è¡Œç¼–辑。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" @@ -6453,11 +6465,11 @@ msgstr "绘制骨骼æƒé‡" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Open Polygon 2D UV editor." -msgstr "打开2D多边形UV编辑器。" +msgstr "打开 2D 多边形 UV 编辑器。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" -msgstr "2D多边形UV编辑器" +msgstr "2D 多边形 UV 编辑器" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV" @@ -6480,22 +6492,20 @@ 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" -msgstr "Ctrl:旋转" +msgstr "Ctrl: 旋转" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Ctrl: Scale" @@ -6515,13 +6525,13 @@ msgstr "缩放多边形" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "建立自定义多边形。å¯ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。" +msgstr "创建自定义多边形。å¯ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." -msgstr "移除自定义多边形。如果ä¸å˜åœ¨ï¼Œç¦ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。" +msgstr "移除自定义多边形。如果没有剩下任何多边形,则会ç¦ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6536,18 +6546,16 @@ 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 "转æ¢ä¸ºPolygon2D" +msgstr "å¤åˆ¶ UV 为多边形" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" -msgstr "清除UV" +msgstr "清除 UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Settings" @@ -6645,7 +6653,7 @@ msgstr "é¢„åŠ è½½èµ„æº" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "AnimationTree 没有设置路径到一个 AnimationPlayer" +msgstr "AnimationTree 没有设置到 AnimationPlayer 的路径" #: editor/plugins/root_motion_editor_plugin.cpp msgid "Path to AnimationPlayer is invalid" @@ -6714,7 +6722,7 @@ msgstr "脚本并éžå¤„于工具模å¼ï¼Œæ— 法执行。" #: editor/plugins/script_editor_plugin.cpp msgid "" "To run this script, it must inherit EditorScript and be set to tool mode." -msgstr "如需执行æ¤è„šæœ¬ï¼Œå¿…须继承EditorScript并将其设为工具模å¼ã€‚" +msgstr "如需执行æ¤è„šæœ¬ï¼Œå¿…须继承 EditorScript 并将其设为工具模å¼ã€‚" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" @@ -6752,7 +6760,7 @@ msgstr "ç›é€‰è„šæœ¬" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." -msgstr "切æ¢æŒ‰å—æ¯è¡¨æŽ’åºæ–¹å¼æŽ’列方法。" +msgstr "切æ¢æŒ‰å—æ¯é¡ºåºæŽ’列方法。" #: editor/plugins/script_editor_plugin.cpp msgid "Filter methods" @@ -6870,7 +6878,7 @@ msgstr "使用外部编辑器进行调试" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation." -msgstr "打开Godot在线文档。" +msgstr "打开 Godot 在线文档。" #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." @@ -6933,7 +6941,7 @@ msgstr "ç›®æ ‡" #: editor/plugins/script_text_editor.cpp msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "未找到方法“%sâ€ï¼ˆè¿žæŽ¥äºŽä¿¡å·â€œ%sâ€ã€æ¥è‡ªèŠ‚点“%sâ€ã€ç›®æ ‡èŠ‚点“%sâ€ï¼‰ã€‚" +msgstr "未找到方法 “%sâ€ï¼ˆè¿žæŽ¥äºŽä¿¡å·â€œ%sâ€ã€æ¥è‡ªèŠ‚点“%sâ€ã€ç›®æ ‡èŠ‚点“%sâ€ï¼‰ã€‚" #: editor/plugins/script_text_editor.cpp msgid "[Ignore]" @@ -6949,12 +6957,12 @@ msgstr "转到函数" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." -msgstr "åªå¯ä»¥æ‹–拽æ¥è‡ªæ–‡ä»¶ç³»ç»Ÿä¸çš„资æºã€‚" +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 "æ— æ³•æ”¾ç½®è¯¥èŠ‚ç‚¹ï¼Œå› ä¸ºè„šæœ¬â€œ%sâ€æœªåœ¨è¯¥åœºæ™¯ä¸ä½¿ç”¨ã€‚" +msgstr "æ— æ³•æ”¾ç½®è¯¥èŠ‚ç‚¹ï¼Œå› ä¸ºè„šæœ¬ “%s†未在该场景ä¸ä½¿ç”¨ã€‚" #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" @@ -6996,7 +7004,7 @@ msgstr "æ–点" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Go To" -msgstr "跳转到" +msgstr "转到" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -7026,7 +7034,7 @@ msgstr "切æ¢æ³¨é‡Š" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" -msgstr "折å /展开行" +msgstr "折å ï¼å±•å¼€è¡Œ" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -7034,7 +7042,7 @@ msgstr "折å 所有行" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "å–消折å 所有行" +msgstr "展开所有行" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" @@ -7058,7 +7066,7 @@ msgstr "å°†ç¼©è¿›è½¬ä¸ºç©ºæ ¼" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Tabs" -msgstr "将缩进转为Tabs" +msgstr "将缩进转为制表符" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -7099,7 +7107,7 @@ msgstr "转到行..." #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Toggle Breakpoint" -msgstr "切æ¢æ–点" +msgstr "设置ï¼ç§»é™¤æ–点" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" @@ -7107,18 +7115,18 @@ msgstr "移除所有æ–点" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Breakpoint" -msgstr "å‰å¾€ä¸‹ä¸€ä¸ªæ–点" +msgstr "转到下一个æ–点" #: editor/plugins/script_text_editor.cpp msgid "Go to Previous Breakpoint" -msgstr "å‰å¾€ä¸Šä¸€ä¸ªæ–点" +msgstr "转到上一个æ–点" #: editor/plugins/shader_editor_plugin.cpp msgid "" "This shader has been modified on on disk.\n" "What action should be taken?" msgstr "" -"æ¤ç€è‰²å™¨å·²åœ¨ç£ç›˜ä¸Šä¿®æ”¹.\n" +"æ¤ç€è‰²å™¨å·²åœ¨ç£ç›˜ä¸Šä¿®æ”¹ã€‚\n" "应该采å–什么行动?" #: editor/plugins/shader_editor_plugin.cpp @@ -7179,15 +7187,15 @@ msgstr "已忽略å˜æ¢ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "Xè½´å˜æ¢ã€‚" +msgstr "X è½´å˜æ¢ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "Yè½´å˜æ¢ã€‚" +msgstr "Y è½´å˜æ¢ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "Zè½´å˜æ¢ã€‚" +msgstr "Z è½´å˜æ¢ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." @@ -7203,7 +7211,7 @@ msgstr "移动: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "旋转%s度。" +msgstr "旋转 %s 度。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." @@ -7343,7 +7351,7 @@ msgstr "查看信æ¯" #: editor/plugins/spatial_editor_plugin.cpp msgid "View FPS" -msgstr "查看帧率" +msgstr "查看 FPS" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" @@ -7363,7 +7371,7 @@ msgstr "效果预览" #: editor/plugins/spatial_editor_plugin.cpp msgid "Not available when using the GLES2 renderer." -msgstr "使用GLES2渲染器时ä¸å¯ç”¨ã€‚" +msgstr "使用 GLES2 渲染器时ä¸å¯ç”¨ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -7406,12 +7414,12 @@ 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 "" -"注æ„:显示的FPS值是编辑器的帧速率。\n" -"它ä¸èƒ½ç”¨äºŽè¡¨çŽ°æ¸¸æˆä¸çš„实际性能。" +"注æ„:显示的 FPS 值是编辑器的帧速率。\n" +"ä¸èƒ½å馈出实际游æˆä¸çš„性能。" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" -msgstr "XForm对è¯æ¡†" +msgstr "XForm 对è¯æ¡†" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7423,9 +7431,9 @@ msgid "" msgstr "" "点击以切æ¢å¯è§çŠ¶æ€ã€‚\n" "\n" -"ççœ¼ï¼šæ ‡å¿—å¯è§ã€‚\n" -"é—çœ¼ï¼šæ ‡å¿—éšè—。\n" -"åŠççœ¼ï¼šæ ‡å¿—ä¹Ÿå¯ç©¿è¿‡ä¸é€æ˜Žçš„表é¢å¯è§ï¼ˆâ€œXå…‰â€ï¼‰ã€‚" +"ç眼:Gizmo å¯è§ã€‚\n" +"é—眼:Gizmo éšè—。\n" +"åŠç眼:Gizmo 也å¯ç©¿è¿‡ä¸é€æ˜Žçš„表é¢å¯è§ï¼ˆâ€œX-Ray - X å…‰â€ï¼‰ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Nodes To Floor" @@ -7512,31 +7520,31 @@ msgstr "å˜æ¢å¯¹è¯æ¡†..." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "1个视å£" +msgstr "1 个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports" -msgstr "2个视å£" +msgstr "2 个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "2个视å£ï¼ˆå¤‡é€‰ï¼‰" +msgstr "2 个视å£ï¼ˆå¤‡é€‰ï¼‰" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "3个视å£" +msgstr "3 个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "3个视å£ï¼ˆå¤‡é€‰ï¼‰" +msgstr "3 个视å£ï¼ˆå¤‡é€‰ï¼‰" #: editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" -msgstr "4个视å£" +msgstr "4 个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "Gizmos" -msgstr "控制器" +msgstr "Gizmo" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7577,11 +7585,11 @@ 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" @@ -7617,35 +7625,35 @@ msgstr "æ— å控制器" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create Mesh2D" -msgstr "创建Mesh2D" +msgstr "创建 Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Mesh2D Preview" -msgstr "Mesh2D预览" +msgstr "Mesh2D 预览" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" -msgstr "创建Polygon 2D" +msgstr "创建 Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Polygon2D Preview" -msgstr "Polygon2D预览" +msgstr "Polygon2D 预览" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" -msgstr "创建CollisionPolygon2D" +msgstr "创建 CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "CollisionPolygon2D Preview" -msgstr "CollisionPolygon2D预览" +msgstr "CollisionPolygon2D 预览" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" -msgstr "创建LightOccluder2D" +msgstr "创建 LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "LightOccluder2D Preview" -msgstr "LightOccluder2D预览" +msgstr "LightOccluder2D 预览" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -7653,7 +7661,7 @@ msgstr "Sprite 是空的ï¼" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." -msgstr "æ— æ³•å°†ä½¿ç”¨åŠ¨ç”»å¸§çš„ç²¾çµè½¬æ¢ä¸ºç½‘æ ¼ã€‚" +msgstr "æ— æ³•å°†ä½¿ç”¨åŠ¨ç”»å¸§å°†ç²¾çµè½¬æ¢ä¸ºç½‘æ ¼ã€‚" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." @@ -7661,7 +7669,7 @@ msgstr "æ— æ•ˆçš„å‡ ä½•ä½“ï¼Œæ— æ³•ä½¿ç”¨ç½‘æ ¼æ›¿æ¢ã€‚" #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Mesh2D" -msgstr "转æ¢ä¸ºMesh2D" +msgstr "转æ¢ä¸º Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." @@ -7669,7 +7677,7 @@ msgstr "æ— æ•ˆçš„å‡ ä½•ä½“ï¼Œæ— æ³•åˆ›å»ºå¤šè¾¹å½¢ã€‚" #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Polygon2D" -msgstr "转æ¢ä¸ºPolygon2D" +msgstr "转æ¢ä¸º Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." @@ -7677,7 +7685,7 @@ msgstr "æ— æ•ˆçš„å‡ ä½•ä½“ï¼Œæ— æ³•åˆ›å»ºå¤šè¾¹å½¢ç¢°æ’žä½“ã€‚" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D Sibling" -msgstr "创建CollisionPolygon2D兄弟节点" +msgstr "创建 CollisionPolygon2D 兄弟节点" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." @@ -7685,7 +7693,7 @@ msgstr "æ— æ•ˆçš„å‡ ä½•ä½“ï¼Œæ— æ³•åˆ›å»ºé®å…‰ä½“。" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D Sibling" -msgstr "创建LightOccluder2D兄弟节点" +msgstr "创建 LightOccluder2D 兄弟节点" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" @@ -7717,7 +7725,7 @@ msgstr "未选择帧" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add %d Frame(s)" -msgstr "æ·»åŠ %d帧" +msgstr "æ·»åŠ %d 帧" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" @@ -7745,7 +7753,7 @@ msgstr "æ·»åŠ ç©ºç™½å¸§" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "修改动画FPS" +msgstr "修改动画 FPS" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" @@ -7817,7 +7825,7 @@ msgstr "选择/清除所有帧" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Create Frames from Sprite Sheet" -msgstr "从 Sprite Sheet ä¸åˆ›å»ºå¸§" +msgstr "从精çµè¡¨ä¸åˆ›å»ºå¸§" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" @@ -7833,7 +7841,7 @@ msgstr "设置边è·" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "å¸é™„模å¼:" +msgstr "å¸é™„模å¼ï¼š" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp @@ -7854,7 +7862,7 @@ msgstr "自动è£å‰ª" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Offset:" -msgstr "ç½‘æ ¼å移é‡:" +msgstr "å移é‡ï¼š" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" @@ -7922,7 +7930,7 @@ msgstr "ä¸å¯ç”¨çš„按钮" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "项目(Item)" +msgstr "项目" #: editor/plugins/theme_editor_plugin.cpp msgid "Disabled Item" @@ -7930,11 +7938,11 @@ msgstr "ä¸å¯ç”¨çš„项目" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "检查项目(Item)" +msgstr "检查项目" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "已选项目(Checked Item)" +msgstr "已选项目" #: editor/plugins/theme_editor_plugin.cpp msgid "Radio Item" @@ -7946,47 +7954,47 @@ msgstr "已选å•é€‰é¡¹ç›®" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." -msgstr "命å为 Sep。" +msgstr "带å称的分隔线" #: editor/plugins/theme_editor_plugin.cpp msgid "Submenu" -msgstr "åèœå•(Submenu)" +msgstr "åèœå•" #: editor/plugins/theme_editor_plugin.cpp msgid "Subitem 1" -msgstr "å项目1" +msgstr "å项目 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Subitem 2" -msgstr "å项目2" +msgstr "å项目 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "有(Has)" +msgstr "有" #: editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "许多(Many)" +msgstr "许多" #: editor/plugins/theme_editor_plugin.cpp msgid "Disabled LineEdit" -msgstr "行编辑ä¸å¯ç”¨" +msgstr "å·²ç¦ç”¨ LineEdit" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "分页1" +msgstr "é€‰é¡¹å¡ 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "分页2" +msgstr "é€‰é¡¹å¡ 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "分页3" +msgstr "é€‰é¡¹å¡ 3" #: editor/plugins/theme_editor_plugin.cpp msgid "Editable Item" -msgstr "å¯ç¼–辑节点" +msgstr "å¯ç¼–辑的项目" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" @@ -7994,11 +8002,11 @@ msgstr "åæ ‘" #: editor/plugins/theme_editor_plugin.cpp msgid "Has,Many,Options" -msgstr "有,很多,选项" +msgstr "有, 很多, 选项" #: editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" -msgstr "æ•°æ®ç±»åž‹:" +msgstr "æ•°æ®ç±»åž‹ï¼š" #: editor/plugins/theme_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp @@ -8083,21 +8091,20 @@ msgid "Paint Tile" msgstr "绘制图å—" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift+é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶ç›´çº¿\n" -"Shift+Ctrl+é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶çŸ©å½¢" +"Shift + é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶ç›´çº¿\n" +"Shift + Command + é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶çŸ©å½¢" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" "Shift+LMB: Line Draw\n" "Shift+Ctrl+LMB: Rectangle Paint" msgstr "" -"Shift+é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶ç›´çº¿\n" -"Shift+Ctrl+é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶çŸ©å½¢" +"Shift + é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶ç›´çº¿\n" +"Shift + Ctrl + é¼ æ ‡å·¦é”®ï¼šç»˜åˆ¶çŸ©å½¢" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" @@ -8193,7 +8200,7 @@ msgstr "优先级" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Z Index" -msgstr "Z索引" +msgstr "Z 索引" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" @@ -8225,7 +8232,7 @@ msgstr "å›¾æ ‡æ¨¡å¼" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Z Index Mode" -msgstr "Z索引模å¼" +msgstr "Z 索引模å¼" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." @@ -8241,7 +8248,7 @@ msgstr "擦除ä½æŽ©ç 。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new rectangle." -msgstr "新建矩形。" +msgstr "创建新矩形。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." @@ -8253,7 +8260,7 @@ msgstr "ä¿æŒå¤šè¾¹å½¢ä½äºŽçº¹ç†åŒºåŸŸä¸ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "å¯ç”¨å¸é™„å¹¶æ˜¾ç¤ºç½‘æ ¼ï¼ˆå¯é€šè¿‡å±žæ€§é¢æ¿è®¾ç½®ï¼‰ã€‚" +msgstr "å¯ç”¨å¸é™„å¹¶æ˜¾ç¤ºç½‘æ ¼ï¼ˆå¯é€šè¿‡å±žæ€§æ£€æŸ¥å™¨è®¾ç½®ï¼‰ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" @@ -8286,7 +8293,7 @@ msgstr "åˆ é™¤çº¹ç†" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." -msgstr "%s æ–‡ä»¶æ²¡æœ‰è¢«æ·»åŠ ï¼Œå› ä¸ºå·²æ·»åŠ åœ¨åˆ—è¡¨ä¸ã€‚" +msgstr "å› ä¸ºæœ‰ %s ä¸ªæ–‡ä»¶å·²æ·»åŠ åœ¨åˆ—è¡¨ä¸ï¼Œæ‰€ä»¥æ²¡æœ‰è¢«æ·»åŠ 。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8298,7 +8305,7 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete selected Rect." -msgstr "åˆ é™¤é€‰ä¸çš„Rect。" +msgstr "åˆ é™¤é€‰ä¸çŸ©å½¢ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8321,7 +8328,7 @@ msgid "" msgstr "" "é¼ æ ‡å·¦é”®ï¼šå¯ç”¨æ¯”特。\n" "é¼ æ ‡å³é”®ï¼šå…³é—比特。\n" -"Shift+é¼ æ ‡å·¦é”®ï¼šè®¾ç½®é€šé…符ä½ã€‚\n" +"Shift + é¼ æ ‡å·¦é”®ï¼šè®¾ç½®é€šé…符ä½ã€‚\n" "点击å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp @@ -8443,7 +8450,7 @@ msgstr "图å—集" #: editor/plugins/version_control_editor_plugin.cpp msgid "No VCS addons are available." -msgstr "没有å¯ç”¨çš„VCSæ’件。" +msgstr "没有å¯ç”¨çš„ VCS æ’件。" #: editor/plugins/version_control_editor_plugin.cpp msgid "Error" @@ -8463,7 +8470,7 @@ msgstr "æ交" #: editor/plugins/version_control_editor_plugin.cpp msgid "VCS Addon is not initialized" -msgstr "VCSæ’件未åˆå§‹åŒ–" +msgstr "VCS æ’件未åˆå§‹åŒ–" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" @@ -8536,7 +8543,7 @@ msgstr "检测文件差异的å˜åŒ–" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" -msgstr "åªä½¿ç”¨GLES3" +msgstr "ï¼ˆä»…é™ GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Output" @@ -8548,7 +8555,7 @@ msgstr "æ ‡é‡" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector" -msgstr "Vector" +msgstr "矢é‡" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean" @@ -8556,7 +8563,7 @@ msgstr "布尔值" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sampler" -msgstr "é‡‡æ ·ï¼ˆSampler)" +msgstr "é‡‡æ · Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8596,7 +8603,7 @@ msgstr "设置表达å¼" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Resize VisualShader node" -msgstr "调整å¯è§†ç€è‰²å™¨èŠ‚点" +msgstr "调整 VisualShader 节点大å°" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" @@ -8611,7 +8618,6 @@ msgid "Add Node to Visual Shader" msgstr "å°†èŠ‚ç‚¹æ·»åŠ åˆ°å¯è§†ç€è‰²å™¨" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" msgstr "节点已移动" @@ -8633,9 +8639,8 @@ msgid "Visual Shader Input Type Changed" msgstr "å¯è§†ç€è‰²å™¨è¾“入类型已更改" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "设置统一å称" +msgstr "已更改 UniformRef çš„å称" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -8671,11 +8676,11 @@ msgstr "ç°åº¦å‡½æ•°ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "å°†HSVå‘é‡è½¬æ¢ä¸ºç‰æ•ˆçš„RGBå‘é‡ã€‚" +msgstr "å°† HSV å‘é‡è½¬æ¢ä¸ºç‰æ•ˆçš„ RGB å‘é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "å°†RGBå‘é‡è½¬æ¢ä¸ºç‰æ•ˆçš„HSVå‘é‡ã€‚" +msgstr "å°† RGB å‘é‡è½¬æ¢ä¸ºç‰æ•ˆçš„ HSV å‘é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." @@ -8731,15 +8736,15 @@ msgstr "返回两个å‚数之间 %s 比较的布尔结果。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" -msgstr "ç‰äºŽï¼ˆ==)" +msgstr "ç‰äºŽ (==)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than (>)" -msgstr "大于(>)" +msgstr "大于 (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "大于或ç‰äºŽï¼ˆ> =)" +msgstr "大于或ç‰äºŽ (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8751,35 +8756,35 @@ msgstr "如果æä¾›çš„æ ‡é‡ç›¸ç‰ï¼Œæ›´å¤§æˆ–æ›´å°ï¼Œåˆ™è¿”回关è”çš„å‘é‡ msgid "" "Returns the boolean result of the comparison between INF and a scalar " "parameter." -msgstr "返回INFå’Œæ ‡é‡å‚数之间比较的布尔结果。" +msgstr "返回 INF å’Œæ ‡é‡å‚数之间比较的布尔结果。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between NaN and a scalar " "parameter." -msgstr "返回NaNå’Œæ ‡é‡å‚数之间比较的布尔结果。" +msgstr "返回 NaN å’Œæ ‡é‡å‚数之间比较的布尔结果。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than (<)" -msgstr "å°äºŽ (<)" +msgstr "å°äºŽ (<)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than or Equal (<=)" -msgstr "å°äºŽæˆ–ç‰äºŽï¼ˆ<=)" +msgstr "å°äºŽæˆ–ç‰äºŽ (<=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Not Equal (!=)" -msgstr "ä¸ç‰äºŽï¼ˆ!=)" +msgstr "ä¸ç‰äºŽ (!=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided boolean value is true or false." -msgstr "如果æ供的布尔值是true或false,则返回关è”çš„å‘é‡ã€‚" +msgstr "如果æ供的布尔值是 true 或 false,则返回关è”çš„å‘é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated scalar if the provided boolean value is true or false." -msgstr "如果æ供的布尔值是true或false,则返回关è”çš„æ ‡é‡ã€‚" +msgstr "如果æ供的布尔值是 true 或 false,则返回关è”çš„æ ‡é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the comparison between two parameters." @@ -8801,7 +8806,7 @@ msgstr "布尔统一。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for all shader modes." -msgstr "“%sâ€ä¸ºæ‰€æœ‰ç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "所有ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Input parameter." @@ -8809,27 +8814,27 @@ msgstr "输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." -msgstr "“%sâ€ä¸ºé¡¶ç‚¹å’Œç‰‡æ®µç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "顶点和片段ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." -msgstr "“%sâ€ä¸ºç‰‡æ®µå’Œç¯å…‰ç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "片段和ç¯å…‰ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment shader mode." -msgstr "“%sâ€ä¸ºç‰‡æ®µç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "片段ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for light shader mode." -msgstr "“%sâ€ä¸ºç¯å…‰ç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "ç¯å…‰ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex shader mode." -msgstr "“%sâ€ä¸ºé¡¶ç‚¹ç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "顶点ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader mode." -msgstr "“%sâ€ä¸ºé¡¶ç‚¹å’Œç‰‡æ®µç€è‰²å™¨æ¨¡å¼çš„输入å‚数。" +msgstr "顶点和片段ç€è‰²å™¨æ¨¡å¼çš„ “%s†输入å‚数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar function." @@ -8841,35 +8846,35 @@ msgstr "æ ‡é‡è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "E constant (2.718282). Represents the base of the natural logarithm." -msgstr "E常数(2.718282)。表示自然对数的基数。" +msgstr "E 常数 (2.718282)。表示自然对数的基数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Epsilon constant (0.00001). Smallest possible scalar number." -msgstr "Epsilon常数(0.00001)。最å°çš„æ ‡é‡æ•°ã€‚" +msgstr "ε (eplison) 常数 (0.00001)。最å°çš„æ ‡é‡æ•°ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Phi constant (1.618034). Golden ratio." -msgstr "Phi常数(1.618034)。黄金比例。" +msgstr "Φ (Phi) 常数 (1.618034)。黄金比例。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi/4 constant (0.785398) or 45 degrees." -msgstr "Pi / 4常数(0.785398)或45度。" +msgstr "Ï€ (Pi)/4 常数 (0.785398) 或 45 度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi/2 constant (1.570796) or 90 degrees." -msgstr "Pi/2常数(1.570796)或90度。" +msgstr "Ï€ (Pi)/2 常数 (1.570796) 或 90 度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi constant (3.141593) or 180 degrees." -msgstr "Pi 常数 (3.141593) 或 180 度。" +msgstr "Ï€ (Pi) 常数 (3.141593) 或 180 度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Tau constant (6.283185) or 360 degrees." -msgstr "Tau常数(6.283185)或360度。" +msgstr "Ï„ (Tau) 常数 (6.283185)或 360 度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sqrt2 constant (1.414214). Square root of 2." -msgstr "Sqrt2 常数 (1.414214)。2 çš„å¹³æ–¹æ ¹ã€‚" +msgstr "Sqrt2 常数 (1.414214)。2 çš„å¹³æ–¹æ ¹ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the absolute value of the parameter." @@ -8926,11 +8931,11 @@ msgstr "将以弧度为å•ä½çš„é‡è½¬æ¢ä¸ºåº¦ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." -msgstr "以e为底的指数。" +msgstr "以 e 为底的指数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 Exponential." -msgstr "2为底的指数。" +msgstr "以 2 为底的指数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer less than or equal to the parameter." @@ -8950,7 +8955,7 @@ msgstr "自然对数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 logarithm." -msgstr "2为底的对数。" +msgstr "以 2 为底的对数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the greater of two values." @@ -9021,10 +9026,10 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" -"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" +"SmoothStep 函数( scalar(edge0), scalar(edge1), scalar(x) ).\n" "\n" -"如果'x'å°äºŽ'edge0'则返回0.0,如果x大于'edge1'则返回1.0。å¦åˆ™åœ¨0.0å’Œ1.0之间返" -"回Hermite多项å¼æ’值的值。" +"如果 “x†å°äºŽ “edge0†则返回 0.0,如果 x 大于 “edge1†则返回 1.0。å¦åˆ™åœ¨ 0.0 " +"å’Œ 1.0 之间返回埃尔米特多项å¼æ’值的值。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9032,9 +9037,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" -"Step function( scalar(edge), scalar(x) ).\n" +"Step 函数( scalar(edge), scalar(x) ).\n" "\n" -"如果'x'å°äºŽ'edge'则返回0.0,å¦åˆ™è¿”回1.0。" +"如果 “x†å°äºŽ “edge†则返回 0.0,å¦åˆ™è¿”回 1.0。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." @@ -9112,9 +9117,9 @@ msgid "" msgstr "" "计算一对矢é‡çš„外积。\n" "\n" -"OuterProduct 将第一个å‚æ•°\"c\"视为列矢é‡ï¼ˆåŒ…å«ä¸€åˆ—的矩阵),将第二个å‚æ•°\"r" -"\"视为行矢é‡ï¼ˆå…·æœ‰ä¸€è¡Œçš„矩阵),并执行线性代数矩阵乘以\"c * r\",生æˆè¡Œæ•°ä¸º" -"\"c\"ä¸çš„组件,其列数是\"r\"ä¸çš„组件数。" +"OuterProduct 将第一个å‚æ•° “c†视为列矢é‡ï¼ˆåŒ…å«ä¸€åˆ—的矩阵),将第二个å‚æ•° “r†" +"视为行矢é‡ï¼ˆå…·æœ‰ä¸€è¡Œçš„矩阵),并执行线性代数矩阵乘以 “c * râ€ï¼Œç”Ÿæˆè¡Œæ•°ä¸º “c†" +"ä¸çš„组件,其列数是 “r†ä¸çš„组件数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes transform from four vectors." @@ -9187,8 +9192,8 @@ msgid "" "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 "" -"返回指å‘与å‚考å‘é‡ç›¸åŒæ–¹å‘çš„å‘é‡ã€‚该函数有三个å‘é‡å‚数:N,方å‘å‘é‡ï¼ŒI,入射" -"å‘é‡ï¼ŒNref,å‚考å‘é‡ã€‚如果Iå’ŒNref的点乘å°äºŽé›¶ï¼Œè¿”回值为n,å¦åˆ™è¿”回-N。" +"返回指å‘与å‚考å‘é‡ç›¸åŒæ–¹å‘çš„å‘é‡ã€‚该函数有三个å‘é‡å‚数:N,方å‘å‘é‡ï¼›I,入射" +"å‘é‡ï¼›Nref,å‚考å‘é‡ã€‚如果 I å’Œ Nref 的点乘å°äºŽé›¶ï¼Œè¿”回值为 N,å¦åˆ™è¿”回 -N。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the length of a vector." @@ -9232,10 +9237,10 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" -"SmoothStep 函数(矢é‡ï¼ˆedge0)ã€çŸ¢é‡ï¼ˆedge1)ã€çŸ¢é‡ï¼ˆx))。 \n" +"SmoothStep 函数( vector(edge0), vector(edge1), vector (x) )。 \n" "\n" -"如果\"x\"å°äºŽ\"edge0\",则返回 0.0;如果\"x\"大于\"edge1\",则返回 0.0。å¦åˆ™ï¼Œ" -"返回值将使用赫密特多项å¼åœ¨ 0.0 å’Œ 1.0 之间æ’值。" +"如果 “x†å°äºŽ “edge0â€ï¼Œåˆ™è¿”回 0.0;如果 “x†大于 “edge1â€ï¼Œåˆ™è¿”回 0.0。å¦åˆ™ï¼Œ" +"返回值将使用埃尔米特多项å¼åœ¨ 0.0 å’Œ 1.0 之间æ’值。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9245,10 +9250,10 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" -"smoothstepå‡½æ•°ï¼ˆæ ‡é‡ï¼ˆedge0)ã€æ ‡é‡ï¼ˆedge1)ã€å‘é‡ï¼ˆx))。\n" +"SmoothStep 函数( scalar(edge0), scalar(edge1), vector(x) )。\n" "\n" -"如果'x'å°äºŽ'edge0'则返回0.0,如果x大于'edge1'则返回1.0。å¦åˆ™åœ¨0.0å’Œ1.0之间返" -"回Hermite多项å¼æ’值的值。" +"如果 “x†å°äºŽ “edge0†则返回 0.0,如果 x 大于 “edge1†则返回 1.0。å¦åˆ™ï¼Œè¿”回" +"值将使用埃尔米特多项å¼åœ¨ 0.0 å’Œ 1.0 之间æ’值。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9256,9 +9261,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" -"Step function( scalar(edge), scalar(x) ).\n" +"Step 函数( scalar(edge), scalar(x) )。\n" "\n" -"如果'x'å°äºŽ'edge'则返回0.0,å¦åˆ™è¿”回1.0。" +"如果 “x†å°äºŽ “edge†则返回 0.0,å¦åˆ™è¿”回 1.0。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9266,9 +9271,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" -"Step function( scalar(edge), scalar(x) ).\n" +"Step 函数( scalar(edge), scalar(x) )。\n" "\n" -"如果'x'å°äºŽ'edge'则返回0.0,å¦åˆ™è¿”回1.0。" +"如果 “x†å°äºŽ “edge†则返回 0.0,å¦åˆ™è¿”回 1.0。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." @@ -9304,8 +9309,8 @@ msgid "" "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 "" -"自定义Godotç€è‰²å™¨è¯è¨€è¡¨è¾¾å¼ï¼Œå¯ä»¥æœ‰ä»»æ„æ•°é‡çš„输入和输出端å£ã€‚它会往顶点/片段/" -"ç¯å…‰å‡½æ•°ä¸ç›´æŽ¥æ³¨å…¥ä»£ç ,请勿在其ä¸å£°æ˜Žå‡½æ•°ã€‚" +"自定义 Godot ç€è‰²å™¨è¯è¨€è¡¨è¾¾å¼ï¼Œå¯ä»¥æœ‰ä»»æ„æ•°é‡çš„输入和输出端å£ã€‚它会往顶点/片" +"段/ç¯å…‰å‡½æ•°ä¸ç›´æŽ¥æ³¨å…¥ä»£ç ,请勿在其ä¸å£°æ˜Žå‡½æ•°ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9325,7 +9330,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "至现有一致的引用。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9339,7 +9344,7 @@ msgstr "(仅é™ç‰‡æ®µ/ç¯å…‰æ¨¡å¼ï¼‰çŸ¢é‡å¯¼æ•°åŠŸèƒ½ã€‚" msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'x' using local " "differencing." -msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆçŸ¢é‡ï¼‰ä½¿ç”¨å±€éƒ¨å·®åˆ†çš„“ xâ€ä¸çš„导数。" +msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆçŸ¢é‡ï¼‰ä½¿ç”¨å±€éƒ¨å·®åˆ†çš„ “x†ä¸çš„导数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9363,13 +9368,13 @@ msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆæ ‡é‡ï¼‰ä½¿ç”¨å±€éƒ¨å·®åˆ†çš„'y'å¯¼æ• msgid "" "(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " "'y'." -msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆå‘é‡ï¼‰â€œ xâ€å’Œâ€œ yâ€ä¸çš„ç»å¯¹å¯¼æ•°ä¹‹å’Œã€‚" +msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆå‘é‡ï¼‰â€œx†和 “y†ä¸çš„ç»å¯¹å¯¼æ•°ä¹‹å’Œã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " "'y'." -msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆæ ‡é‡ï¼‰â€œ xâ€å’Œâ€œ yâ€ä¸çš„ç»å¯¹å¯¼æ•°ä¹‹å’Œã€‚" +msgstr "(仅é™ç‰‡æ®µ/光照模å¼ï¼‰ï¼ˆæ ‡é‡ï¼‰â€œx†和 “y†ä¸çš„ç»å¯¹å¯¼æ•°ä¹‹å’Œã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "VisualShader" @@ -9389,14 +9394,14 @@ msgstr "å¯æ‰§è¡Œçš„" #: editor/project_export.cpp msgid "Delete preset '%s'?" -msgstr "是å¦åˆ 除预设“%sâ€ï¼Ÿ" +msgstr "是å¦åˆ 除预设 “%sâ€ï¼Ÿ" #: editor/project_export.cpp msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" -"æ— æ³•å¯¼å‡ºå¹³å°â€œ%sâ€çš„项目。\n" +"æ— æ³•ä¸ºå¹³å° â€œ%s†导出项目。\n" "导出模æ¿ä¼¼ä¹Žç¼ºå¤±æˆ–æ— æ•ˆã€‚" #: editor/project_export.cpp @@ -9405,7 +9410,7 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" -"æ— æ³•å¯¼å‡ºå¹³å°â€œï¼…sâ€çš„项目。\n" +"æ— æ³•ä¸ºå¹³å° â€œï¼…s†导出项目。\n" "åŽŸå› å¯èƒ½æ˜¯å¯¼å‡ºé¢„设或导出设置内的é…置有问题。" #: editor/project_export.cpp @@ -9518,11 +9523,11 @@ msgstr "åŠ å¯†ï¼ˆåœ¨ä¸‹é¢æ供密钥)" #: editor/project_export.cpp msgid "Invalid Encryption Key (must be 64 characters long)" -msgstr "æ— æ•ˆçš„åŠ å¯†å¯†é’¥ï¼ˆé•¿åº¦å¿…é¡»ä¸º64个å—符)" +msgstr "æ— æ•ˆçš„åŠ å¯†å¯†é’¥ï¼ˆé•¿åº¦å¿…é¡»ä¸º 64 个å—符)" #: editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" -msgstr "è„šæœ¬åŠ å¯†å¯†é’¥ï¼ˆ256ä½16进制ç ):" +msgstr "è„šæœ¬åŠ å¯†å¯†é’¥ï¼ˆ256 ä½ 16 进制ç ):" #: editor/project_export.cpp msgid "Export PCK/Zip" @@ -9546,7 +9551,7 @@ msgstr "ZIP 文件" #: editor/project_export.cpp msgid "Godot Game Pack" -msgstr "Godot游æˆåŒ…" +msgstr "Godot 游æˆåŒ…" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -9566,12 +9571,12 @@ msgstr "指定的路径ä¸å˜åœ¨ã€‚" #: editor/project_manager.cpp msgid "Error opening package file (it's not in ZIP format)." -msgstr "打开包文件时出错(éžZIPæ ¼å¼ï¼‰ã€‚" +msgstr "æ‰“å¼€åŒ…æ–‡ä»¶æ—¶å‡ºé”™ï¼ˆéž ZIP æ ¼å¼ï¼‰ã€‚" #: editor/project_manager.cpp msgid "" "Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file." -msgstr "æ— æ•ˆçš„â€œ.zipâ€é¡¹ç›®æ–‡ä»¶ï¼›æ²¡æœ‰åŒ…å«â€œproject.godotâ€æ–‡ä»¶ã€‚" +msgstr "æ— æ•ˆçš„ “.zipâ€ é¡¹ç›®æ–‡ä»¶ã€‚æ²¡æœ‰åŒ…å« â€œproject.godot†文件。" #: editor/project_manager.cpp msgid "Please choose an empty folder." @@ -9579,11 +9584,11 @@ msgstr "请选择空文件夹。" #: editor/project_manager.cpp msgid "Please choose a \"project.godot\" or \".zip\" file." -msgstr "请选择“project.godotâ€æˆ–“.zipâ€æ–‡ä»¶ã€‚" +msgstr "请选择 “project.godot†或 “.zip†文件。" #: editor/project_manager.cpp msgid "This directory already contains a Godot project." -msgstr "该目录已ç»åŒ…å«Godot项目。" +msgstr "该目录已ç»åŒ…å« Godot 项目。" #: editor/project_manager.cpp msgid "New Game Project" @@ -9607,7 +9612,7 @@ msgstr "该路径ä¸å·²å˜åœ¨åŒå文件夹。" #: editor/project_manager.cpp msgid "It would be a good idea to name your project." -msgstr "为项目命å是一个好主æ„。" +msgstr "最好为项目起个åå—。" #: editor/project_manager.cpp msgid "Invalid project path (changed anything?)." @@ -9622,11 +9627,11 @@ msgstr "" #: editor/project_manager.cpp msgid "Couldn't edit project.godot in project path." -msgstr "æ— æ³•åœ¨é¡¹ç›®è·¯å¾„ä¸‹ç¼–è¾‘project.godot文件。" +msgstr "æ— æ³•åœ¨é¡¹ç›®è·¯å¾„ä¸‹ç¼–è¾‘ project.godot 文件。" #: editor/project_manager.cpp msgid "Couldn't create project.godot in project path." -msgstr "æ— æ³•åœ¨é¡¹ç›®è·¯å¾„ä¸‹åˆ›å»ºproject.godot文件。" +msgstr "æ— æ³•åœ¨é¡¹ç›®è·¯å¾„ä¸‹åˆ›å»º project.godot 文件。" #: editor/project_manager.cpp msgid "Rename Project" @@ -9650,7 +9655,7 @@ msgstr "创建并编辑" #: editor/project_manager.cpp msgid "Install Project:" -msgstr "安装项目:" +msgstr "安装项目:" #: editor/project_manager.cpp msgid "Install & Edit" @@ -9740,12 +9745,12 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" -"以下项目设置文件未指定创建它的Godot版本。\n" +"以下项目设置文件未指定创建它的 Godot 版本。\n" "\n" "%s\n" "\n" -"如果继ç»æ‰“开,它将转æ¢ä¸ºGodot的当å‰é…ç½®æ–‡ä»¶æ ¼å¼ã€‚\n" -"è¦å‘Šï¼šä½ å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" +"如果继ç»æ‰“开,该项目会转æ¢ä¸º Godot 当å‰çš„é…ç½®æ–‡ä»¶æ ¼å¼ã€‚\n" +"è¦å‘Šï¼šå°†æ— 法å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开该项目。" #: editor/project_manager.cpp msgid "" @@ -9758,18 +9763,18 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" -"以下项目设置文件由较旧的引擎版本生æˆï¼Œéœ€è¦ä¸ºæ¤ç‰ˆæœ¬è¿›è¡Œè½¬æ¢ï¼š\n" +"以下项目设置文件由较旧版本的引擎生æˆï¼Œéœ€è¦ä¸ºæ¤ç‰ˆæœ¬è¿›è¡Œè½¬æ¢ï¼š\n" "\n" "%s\n" "\n" "是å¦è¦è½¬æ¢ï¼Ÿ\n" -"è¦å‘Šï¼š æ‚¨å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" +"è¦å‘Šï¼š å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开该项目。" #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." -msgstr "项目设置是由更新的引擎版本创建的,其设置与æ¤ç‰ˆæœ¬ä¸å…¼å®¹ã€‚" +msgstr "项目设置是由较新版本的引擎创建的,其设置与æ¤ç‰ˆæœ¬ä¸å…¼å®¹ã€‚" #: editor/project_manager.cpp msgid "" @@ -9778,7 +9783,7 @@ msgid "" "the \"Application\" category." msgstr "" "æ— æ³•è¿è¡Œé¡¹ç›®ï¼šæœªå®šä¹‰ä¸»åœºæ™¯ã€‚ \n" -"请编辑项目并在“应用程åºâ€ç±»åˆ«ä¸‹çš„“项目设置â€ä¸è®¾ç½®ä¸»åœºæ™¯ã€‚" +"请编辑项目并在 â€œé¡¹ç›®è®¾ç½®â€ ä¸ â€œApplication†类别下设置主场景。" #: editor/project_manager.cpp msgid "" @@ -9786,18 +9791,18 @@ msgid "" "Please edit the project to trigger the initial import." msgstr "" "æ— æ³•è¿è¡Œé¡¹ç›®ï¼š 需è¦å¯¼å…¥ç´ æ。\n" -"请编辑项目,从而触å‘首次导入。" +"请编辑项目æ¥è§¦å‘首次导入。" #: editor/project_manager.cpp msgid "Are you sure to run %d projects at once?" -msgstr "您确定è¦åŒæ—¶è¿è¡Œ%d个项目å—?" +msgstr "确定è¦åŒæ—¶è¿è¡Œ %d 个项目å—?" #: editor/project_manager.cpp msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." msgstr "" -"是å¦ä»Žåˆ—表ä¸åˆ 除%d个项目? \n" +"是å¦ä»Žåˆ—表ä¸åˆ 除 %d 个项目? \n" "项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚" #: editor/project_manager.cpp @@ -9829,7 +9834,7 @@ msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." msgstr "" -"您确定è¦æ‰«æ%s文件夹ä¸çš„现有Godot项目å—? \n" +"确定è¦æ‰«æ文件夹 %s ä¸çš„现有 Godot 项目å—? \n" "è¿™å¯èƒ½éœ€è¦ä¸€æ®µæ—¶é—´ã€‚" #. TRANSLATORS: This refers to the application where users manage their Godot projects. @@ -9878,7 +9883,7 @@ msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" msgstr "" -"ä½ ç›®å‰æ²¡æœ‰ä»»ä½•é¡¹ç›®ã€‚ \n" +"ç›®å‰æ²¡æœ‰ä»»ä½•é¡¹ç›®ã€‚ \n" "是å¦æŸ¥çœ‹ç´ æ库ä¸çš„官方示例项目?" #: editor/project_manager.cpp @@ -9910,12 +9915,11 @@ msgstr "é¼ æ ‡æŒ‰é”®" msgid "" "Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'" -msgstr "" -"æ— æ•ˆçš„æ“作å称。æ“作åä¸èƒ½ä¸ºç©ºï¼Œä¹Ÿä¸èƒ½åŒ…å« '/', ':', '=', '\\' 或者空å—符串" +msgstr "æ— æ•ˆçš„æ“作å称。æ“作åä¸èƒ½ä¸ºç©ºï¼Œä¹Ÿä¸èƒ½åŒ…å« â€œ/â€, “:â€, “=â€, “\\†或 “\"â€" #: editor/project_settings_editor.cpp msgid "An action with the name '%s' already exists." -msgstr "å为'%s'çš„æ“作已å˜åœ¨ã€‚" +msgstr "å为 “%s†的æ“作已å˜åœ¨ã€‚" #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" @@ -9983,7 +9987,7 @@ msgstr "X 按键 2" #: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" -msgstr "手柄摇æ†åºå·:" +msgstr "手柄摇æ†åºå·ï¼š" #: editor/project_settings_editor.cpp msgid "Axis" @@ -10039,11 +10043,11 @@ msgstr "请先选择一个设置项目 ï¼" #: editor/project_settings_editor.cpp msgid "No property '%s' exists." -msgstr "ä¸å˜åœ¨å±žæ€§ '%s'。" +msgstr "ä¸å˜åœ¨å±žæ€§ “%sâ€ã€‚" #: editor/project_settings_editor.cpp msgid "Setting '%s' is internal, and it can't be deleted." -msgstr "“%sâ€æ˜¯å†…éƒ¨è®¾å®šï¼Œæ— æ³•åˆ é™¤ã€‚" +msgstr "“%sâ€ æ˜¯å†…éƒ¨è®¾å®šï¼Œæ— æ³•åˆ é™¤ã€‚" #: editor/project_settings_editor.cpp msgid "Delete Item" @@ -10053,7 +10057,8 @@ msgstr "åˆ é™¤æ¡ç›®" msgid "" "Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'." -msgstr "æ— æ•ˆçš„æ“作å称。它ä¸èƒ½æ˜¯ç©ºçš„也ä¸èƒ½åŒ…å« '/', ':', '=', '\\' 或者 '\"'。" +msgstr "" +"æ— æ•ˆçš„æ“作å称。å称ä¸èƒ½ä¸ºç©ºï¼Œä¹Ÿä¸èƒ½åŒ…å« â€œ/â€, “:â€, “=â€, “\\†或者 “\"â€ã€‚" #: editor/project_settings_editor.cpp msgid "Add Input Action" @@ -10077,11 +10082,11 @@ msgstr "é‡å†™åŠŸèƒ½" #: editor/project_settings_editor.cpp msgid "Add Translation" -msgstr "æ·»åŠ è¯è¨€" +msgstr "æ·»åŠ ç¿»è¯‘" #: editor/project_settings_editor.cpp msgid "Remove Translation" -msgstr "移除è¯è¨€" +msgstr "移除翻译" #: editor/project_settings_editor.cpp msgid "Add Remapped Path" @@ -10093,7 +10098,7 @@ msgstr "æ·»åŠ èµ„æºé‡å®šå‘" #: editor/project_settings_editor.cpp msgid "Change Resource Remap Language" -msgstr "修改è¯è¨€èµ„æºé‡å®šå‘" +msgstr "修改资æºé‡å®šå‘è¯è¨€" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap" @@ -10145,11 +10150,11 @@ msgstr "盲区" #: editor/project_settings_editor.cpp msgid "Device:" -msgstr "设备:" +msgstr "设备:" #: editor/project_settings_editor.cpp msgid "Index:" -msgstr "åºå·:" +msgstr "åºå·ï¼š" #: editor/project_settings_editor.cpp msgid "Localization" @@ -10157,11 +10162,11 @@ msgstr "本地化" #: editor/project_settings_editor.cpp msgid "Translations" -msgstr "è¯è¨€" +msgstr "翻译" #: editor/project_settings_editor.cpp msgid "Translations:" -msgstr "è¯è¨€:" +msgstr "翻译:" #: editor/project_settings_editor.cpp msgid "Remaps" @@ -10173,7 +10178,7 @@ msgstr "资æºï¼š" #: editor/project_settings_editor.cpp msgid "Remaps by Locale:" -msgstr "地区é‡å®šå‘:" +msgstr "ä¾ç…§åŒºåŸŸé‡å®šå‘:" #: editor/project_settings_editor.cpp msgid "Locale" @@ -10181,15 +10186,15 @@ msgstr "区域" #: editor/project_settings_editor.cpp msgid "Locales Filter" -msgstr "区域ç›é€‰å™¨" +msgstr "ç›é€‰åŒºåŸŸ" #: editor/project_settings_editor.cpp msgid "Show All Locales" -msgstr "显示所有è¯è¨€è®¾ç½®" +msgstr "显示所有区域" #: editor/project_settings_editor.cpp msgid "Show Selected Locales Only" -msgstr "仅显示选定的è¯è¨€çŽ¯å¢ƒ" +msgstr "仅显示选定的区域" #: editor/project_settings_editor.cpp msgid "Filter mode:" @@ -10197,7 +10202,7 @@ msgstr "ç›é€‰æ¨¡å¼ï¼š" #: editor/project_settings_editor.cpp msgid "Locales:" -msgstr "区域:" +msgstr "区域:" #: editor/project_settings_editor.cpp msgid "AutoLoad" @@ -10241,7 +10246,7 @@ msgstr "选择节点" #: editor/property_editor.cpp msgid "Error loading file: Not a resource!" -msgstr "åŠ è½½æ–‡ä»¶å‡ºé”™:ä¸æ˜¯èµ„æºæ–‡ä»¶ï¼" +msgstr "åŠ è½½æ–‡ä»¶å‡ºé”™ï¼šä¸æ˜¯èµ„æºæ–‡ä»¶ï¼" #: editor/property_editor.cpp msgid "Pick a Node" @@ -10249,7 +10254,7 @@ msgstr "选择一个节点" #: editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "(Bit)ä½ %d, val %d." +msgstr "ä½ %d,值 %d。" #: editor/property_selector.cpp msgid "Select Property" @@ -10297,7 +10302,7 @@ msgstr "节点å称" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "父节点的å称,如果有的è¯" +msgstr "父节点å称(若有需è¦ï¼‰" #: editor/rename_dialog.cpp msgid "Node type" @@ -10349,7 +10354,7 @@ msgid "" "Missing digits are padded with leading zeros." msgstr "" "计数器数å—的最少个数。\n" -"缺失的数å—将用0填充在头部。" +"缺失的数å—将用 0 填充在头部。" #: editor/rename_dialog.cpp msgid "Post-Process" @@ -10389,7 +10394,7 @@ msgstr "æ£åˆ™è¡¨è¾¾å¼å‡ºé”™ï¼š" #: editor/rename_dialog.cpp msgid "At character %s" -msgstr "ä½äºŽå—符%s" +msgstr "ä½äºŽå—符 %s" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" @@ -10397,7 +10402,7 @@ msgstr "é‡è®¾çˆ¶èŠ‚点" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "é‡è®¾ä½ç½®ï¼ˆé€‰æ‹©æ–°çš„父节点):" +msgstr "é‡è®¾ä½ç½®ï¼ˆé€‰æ‹©æ–°çš„父节点):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" @@ -10409,7 +10414,7 @@ msgstr "é‡è®¾çˆ¶èŠ‚点" #: editor/run_settings_dialog.cpp msgid "Run Mode:" -msgstr "è¿è¡Œæ¨¡å¼:" +msgstr "è¿è¡Œæ¨¡å¼ï¼š" #: editor/run_settings_dialog.cpp msgid "Current Scene" @@ -10421,7 +10426,7 @@ msgstr "主场景" #: editor/run_settings_dialog.cpp msgid "Main Scene Arguments:" -msgstr "主场景å‚æ•°:" +msgstr "主场景å‚数:" #: editor/run_settings_dialog.cpp msgid "Scene Run Settings" @@ -10433,13 +10438,13 @@ msgstr "没有å¯å®žä¾‹åŒ–场景的父节点。" #: editor/scene_tree_dock.cpp msgid "Error loading scene from %s" -msgstr "从%såŠ è½½åœºæ™¯å‡ºé”™" +msgstr "从 %s åŠ è½½åœºæ™¯å‡ºé”™" #: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." -msgstr "æ— æ³•å®žä¾‹åŒ–åœºæ™¯%s当å‰åœºæ™¯å·²å˜åœ¨äºŽå®ƒçš„å节点ä¸ã€‚" +msgstr "æ— æ³•å®žä¾‹åŒ–åœºæ™¯ %sï¼Œå› ä¸ºå½“å‰åœºæ™¯å·²å˜åœ¨äºŽå…¶å节点ä¸ã€‚" #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" @@ -10491,23 +10496,23 @@ msgstr "å°†èŠ‚ç‚¹è®¾ç½®ä¸ºæ ¹èŠ‚ç‚¹" #: editor/scene_tree_dock.cpp msgid "Delete %d nodes and any children?" -msgstr "是å¦åˆ 除节点“%sâ€åŠå…¶å节点?" +msgstr "是å¦åˆ 除节点 “%s†åŠå…¶å节点?" #: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" -msgstr "是å¦åˆ 除%d个节点?" +msgstr "是å¦åˆ 除 %d 个节点?" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" -msgstr "是å¦åˆ é™¤æ ¹èŠ‚ç‚¹â€œ%sâ€ï¼Ÿ" +msgstr "是å¦åˆ é™¤æ ¹èŠ‚ç‚¹ “%sâ€ï¼Ÿ" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" -msgstr "是å¦åˆ 除节点“%sâ€åŠå…¶å节点?" +msgstr "是å¦åˆ 除节点 “%s†åŠå…¶å节点?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\"?" -msgstr "是å¦åˆ 除节点“%sâ€ï¼Ÿ" +msgstr "是å¦åˆ 除节点 “%sâ€ï¼Ÿ" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10525,18 +10530,19 @@ msgstr "将新场景å¦å˜ä¸º..." msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." -msgstr "ç¦ç”¨â€œå¯ç¼–辑实例â€å°†å¯¼è‡´èŠ‚点的所有属性æ¢å¤ä¸ºå…¶é»˜è®¤å€¼ã€‚" +msgstr "ç¦ç”¨ “editable_instance†将导致节点的所有属性æ¢å¤ä¸ºå…¶é»˜è®¤å€¼ã€‚" #: 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 "使用本地" +msgstr "转为本地" #: editor/scene_tree_dock.cpp msgid "New Scene Root" @@ -10709,14 +10715,14 @@ msgstr "(连接æ¥æºï¼‰" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" -msgstr "节点é…ç½®è¦å‘Š:" +msgstr "节点é…ç½®è¦å‘Šï¼š" #: editor/scene_tree_editor.cpp msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." msgstr "" -"节点具有%s个连接和%s个组。\n" +"节点具有 %s 个连接和 %s 个分组。\n" "å•å‡»ä»¥æ˜¾ç¤ºä¿¡å·é¢æ¿ã€‚" #: editor/scene_tree_editor.cpp @@ -10724,7 +10730,7 @@ msgid "" "Node has %s connection(s).\n" "Click to show signals dock." msgstr "" -"节点具有%s个连接。\n" +"节点具有 %s 个连接。\n" "å•å‡»ä»¥æ˜¾ç¤ºä¿¡å·é¢æ¿ã€‚" #: editor/scene_tree_editor.cpp @@ -10829,7 +10835,7 @@ msgstr "é”™è¯¯ï¼šæ— æ³•åˆ›å»ºè„šæœ¬æ–‡ä»¶ã€‚" #: editor/script_create_dialog.cpp msgid "Error loading script from %s" -msgstr "从%såŠ è½½è„šæœ¬å‡ºé”™" +msgstr "从 %s åŠ è½½è„šæœ¬å‡ºé”™" #: editor/script_create_dialog.cpp msgid "Overrides" @@ -10869,7 +10875,7 @@ msgstr "脚本路径/å称有效。" #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9, _ and ." -msgstr "å…许:a-z,a-z,0-9,_ å’Œ ." +msgstr "å…许:a-z, A-Z, 0-9, _ å’Œ ." #: editor/script_create_dialog.cpp msgid "Built-in script (into scene file)." @@ -10927,15 +10933,15 @@ msgstr "错误:" #: editor/script_editor_debugger.cpp msgid "C++ Error" -msgstr "C++错误" +msgstr "C++ 错误" #: editor/script_editor_debugger.cpp msgid "C++ Error:" -msgstr "C++错误:" +msgstr "C++ 错误:" #: editor/script_editor_debugger.cpp msgid "C++ Source" -msgstr "C++æºæ–‡ä»¶" +msgstr "C++ æºæ–‡ä»¶" #: editor/script_editor_debugger.cpp msgid "Source:" @@ -10943,7 +10949,7 @@ msgstr "æºæ–‡ä»¶:" #: editor/script_editor_debugger.cpp msgid "C++ Source:" -msgstr "C++æºæ–‡ä»¶ï¼š" +msgstr "C++ æºæ–‡ä»¶ï¼š" #: editor/script_editor_debugger.cpp msgid "Stack Trace" @@ -11007,7 +11013,7 @@ msgstr "从列表ä¸é€‰å–一个或多个项目以显示图表。" #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "å 用显å˜çš„资æºåˆ—表:" +msgstr "å 用显å˜çš„资æºåˆ—表:" #: editor/script_editor_debugger.cpp msgid "Total:" @@ -11015,7 +11021,7 @@ msgstr "åˆè®¡ï¼š" #: editor/script_editor_debugger.cpp msgid "Export list to a CSV file" -msgstr "将列表导出为CSV文件" +msgstr "将列表导出为 CSV 文件" #: editor/script_editor_debugger.cpp msgid "Resource Path" @@ -11039,15 +11045,15 @@ msgstr "其他" #: editor/script_editor_debugger.cpp msgid "Clicked Control:" -msgstr "点击的控件:" +msgstr "点击的控件:" #: editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "点击的控件类型:" +msgstr "点击的控件类型:" #: editor/script_editor_debugger.cpp msgid "Live Edit Root:" -msgstr "å®žæ—¶ç¼–è¾‘æ ¹èŠ‚ç‚¹:" +msgstr "å®žæ—¶ç¼–è¾‘æ ¹èŠ‚ç‚¹ï¼š" #: editor/script_editor_debugger.cpp msgid "Set From Tree" @@ -11055,7 +11061,7 @@ msgstr "ä»Žåœºæ™¯æ ‘è®¾ç½®" #: editor/script_editor_debugger.cpp msgid "Export measures as CSV" -msgstr "导出为CSVæ ¼å¼" +msgstr "导出为 CSV æ ¼å¼" #: editor/settings_config_dialog.cpp msgid "Erase Shortcut" @@ -11103,11 +11109,11 @@ msgstr "修改通知器 AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "修改粒åAABB" +msgstr "修改粒å AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" -msgstr "修改探针(Probe)范围" +msgstr "修改探针范围" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Sphere Shape Radius" @@ -11171,7 +11177,7 @@ msgstr "åŒå‡»åˆ›å»ºæ–°æ¡ç›®" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "å¹³å°:" +msgstr "å¹³å°ï¼š" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform" @@ -11183,11 +11189,11 @@ msgstr "动æ€é“¾æŽ¥åº“" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "æ·»åŠ CPU架构项" +msgstr "æ·»åŠ æž¶æž„é¡¹" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "GDNativeLibrary" -msgstr "动æ€é“¾æŽ¥åº“" +msgstr "GDNative 库" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Enabled GDNative Singleton" @@ -11203,7 +11209,7 @@ msgstr "库" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Libraries: " -msgstr "库: " +msgstr "库: " #: modules/gdnative/register_types.cpp msgid "GDNative" @@ -11211,7 +11217,7 @@ msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" -msgstr "Stepå‚数为 0 ï¼" +msgstr "Step å‚数为 0ï¼" #: modules/gdscript/gdscript_functions.cpp msgid "Not a script with an instance" @@ -11227,15 +11233,15 @@ msgstr "没有基于资æºæ–‡ä»¶" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "实例å—å…¸æ ¼å¼ä¸æ£ç¡®ï¼ˆç¼ºå°‘@path)" +msgstr "实例å—å…¸æ ¼å¼ä¸æ£ç¡®ï¼ˆç¼ºå°‘ @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" -msgstr "实例å—å…¸æ ¼å¼ä¸æ£ç¡®ï¼ˆæ— æ³•åŠ è½½è„šæœ¬@path)" +msgstr "实例å—å…¸æ ¼å¼ä¸æ£ç¡®ï¼ˆæ— æ³•åŠ è½½ @path 的脚本)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "实例å—å…¸æ ¼å¼ä¸æ£ç¡®ï¼ˆæ— 效脚本@path)" +msgstr "实例å—å…¸æ ¼å¼ä¸æ£ç¡®ï¼ˆ@path çš„è„šæœ¬æ— æ•ˆï¼‰" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" @@ -11319,27 +11325,27 @@ msgstr "编辑 Z è½´" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate X" -msgstr "å…‰æ ‡æ²¿X轴旋转" +msgstr "å…‰æ ‡æ²¿ X 轴旋转" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Y" -msgstr "沿Y轴旋转" +msgstr "沿 Y 轴旋转" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Z" -msgstr "沿Z轴旋转" +msgstr "沿 Z 轴旋转" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" -msgstr "å…‰æ ‡æ²¿Xè½´å‘åŽæ—‹è½¬" +msgstr "å…‰æ ‡æ²¿ X è½´å‘åŽæ—‹è½¬" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Y" -msgstr "å…‰æ ‡æ²¿Yè½´å‘åŽæ—‹è½¬" +msgstr "å…‰æ ‡æ²¿ Y è½´å‘åŽæ—‹è½¬" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Z" -msgstr "å…‰æ ‡æ²¿Zè½´å‘åŽæ—‹è½¬" +msgstr "å…‰æ ‡æ²¿ Z è½´å‘åŽæ—‹è½¬" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Clear Rotation" @@ -11359,11 +11365,11 @@ msgstr "填充已选" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" -msgstr "GridMap设置" +msgstr "GridMap 设置" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Pick Distance:" -msgstr "拾å–è·ç¦»:" +msgstr "拾å–è·ç¦»ï¼š" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Filter meshes" @@ -11371,7 +11377,7 @@ msgstr "ç›é€‰ç½‘æ ¼" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." -msgstr "å‘æ¤GridMapæä¾›ç½‘æ ¼åº“èµ„æºä»¥ä½¿ç”¨å…¶ç½‘æ ¼ã€‚" +msgstr "å‘æ¤ GridMap æä¾›ç½‘æ ¼åº“èµ„æºä»¥ä½¿ç”¨å…¶ç½‘æ ¼ã€‚" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11387,7 +11393,7 @@ msgstr "烘焙导航网" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "æ¸…é™¤å¯¼èˆªç½‘æ ¼(mesh)。" +msgstr "æ¸…é™¤å¯¼èˆªç½‘æ ¼ã€‚" #: modules/recast/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -11427,11 +11433,11 @@ msgstr "åˆ›å»ºå¤šè¾¹å½¢ç½‘æ ¼..." #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "转æ¢ä¸ºå¯¼èˆªç½‘æ ¼(mesh)..." +msgstr "转æ¢ä¸ºå¯¼èˆªç½‘æ ¼..." #: modules/recast/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "å¯¼èˆªç½‘æ ¼(Mesh)生æˆè®¾ç½®:" +msgstr "å¯¼èˆªç½‘æ ¼ç”Ÿæˆè®¾ç½®:" #: modules/recast/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -11446,19 +11452,20 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" -"ä¸€ä¸ªèŠ‚ç‚¹åœ¨æ— å·¥ä½œå†…å˜çš„情况下被yielded,请阅读文档æ¥æŸ¥çœ‹å¦‚何适当的yieldï¼" +"ä¸€ä¸ªèŠ‚ç‚¹åœ¨æ— å·¥ä½œå†…å˜çš„情况下调用了 yield,请阅读文档æ¥æŸ¥çœ‹å¦‚何æ£ç¡®ä½¿ç”¨ " +"yieldï¼" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." -msgstr "节点已yielded,但并没有在第一个工作内å˜ä¸è¿”回一个函数状æ€ã€‚" +msgstr "节点调用了 yield,但并没有在第一个工作内å˜ä¸è¿”回函数状æ€ã€‚" #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." -msgstr "节点工作内å˜çš„第一个节点的返回值必须已赋值ï¼è¯·ä¿®æ£ä½ 的节点。" +msgstr "节点工作内å˜çš„第一个节点的返回值必须被赋值ï¼è¯·ä¿®æ£èŠ‚点。" #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " @@ -11466,7 +11473,7 @@ msgstr "èŠ‚ç‚¹è¿”å›žäº†ä¸€ä¸ªæ— æ•ˆçš„è¿žç»è¾“出: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "在éžå †æ ˆä¸çš„节点ä¸æ‰¾åˆ°è¿žç»bit,报告bugï¼" +msgstr "在éžå †æ ˆä¸çš„节点ä¸æ‰¾åˆ°è¿žç»æ¯”特,请回报 Bugï¼" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " @@ -11582,11 +11589,11 @@ msgstr "å¤åˆ¶ VisualScript 节点" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." -msgstr "æŒ‰ä½ %s 放置一个Getter节点,按ä½Shift键放置一个通用ç¾å。" +msgstr "æŒ‰ä½ %s 放置一个 Getter èŠ‚ç‚¹ï¼ŒæŒ‰ä½ Shift 键放置一个通用ç¾å。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." -msgstr "按ä½Ctrl键放置一个Getter节点。按ä½Shift键放置一个通用ç¾å。" +msgstr "æŒ‰ä½ Ctrl 键放置一个 Getter èŠ‚ç‚¹ã€‚æŒ‰ä½ Shift 键放置一个通用ç¾å。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a simple reference to the node." @@ -11594,19 +11601,19 @@ msgstr "æŒ‰ä½ %s 放置一个场景节点的引用节点。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a simple reference to the node." -msgstr "按ä½Ctrl键放置一个场景节点的引用节点。" +msgstr "æŒ‰ä½ Ctrl 键放置一个场景节点的引用节点。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Variable Setter." -msgstr "æŒ‰ä½ %s 放置å˜é‡çš„Setter节点。" +msgstr "æŒ‰ä½ %s 放置å˜é‡çš„ Setter 节点。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." -msgstr "按ä½Ctrl键放置å˜é‡çš„Setter节点。" +msgstr "æŒ‰ä½ Ctrl 键放置å˜é‡çš„ Setter 节点。" #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" -msgstr "æ·»åŠ Preload节点" +msgstr "æ·»åŠ é¢„è½½ (Preload) 节点" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" @@ -11617,16 +11624,16 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" -"æ— æ³•æ”¾ç½®è¯¥å±žæ€§ï¼Œå› ä¸ºè„šæœ¬â€œ%sâ€æœªåœ¨è¯¥åœºæ™¯ä¸ä½¿ç”¨ã€‚\n" -"放置时按ä½Shifté”®å¯ä»¥ä»…å¤åˆ¶ç¾å。" +"æ— æ³•æ”¾ç½®è¯¥å±žæ€§ï¼Œå› ä¸ºè„šæœ¬ “%s†未在该场景ä¸ä½¿ç”¨ã€‚\n" +"æ”¾ç½®æ—¶æŒ‰ä½ Shift é”®å¯ä»¥ä»…å¤åˆ¶ç¾å。" #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" -msgstr "æ·»åŠ å±žæ€§Getter" +msgstr "æ·»åŠ å±žæ€§ Getter" #: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" -msgstr "æ·»åŠ å±žæ€§Setter" +msgstr "æ·»åŠ å±žæ€§ Setter" #: modules/visual_script/visual_script_editor.cpp msgid "Change Base Type" @@ -11658,7 +11665,7 @@ msgstr "连接节点åºåˆ—" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" -msgstr "脚本已å˜åœ¨å‡½æ•° '%s'" +msgstr "脚本已有函数 “%sâ€" #: modules/visual_script/visual_script_editor.cpp msgid "Change Input Value" @@ -11802,33 +11809,33 @@ msgstr "路径必须指å‘节点ï¼" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "'%s'这个属性å的在节点'%s'ä¸ä¸å˜åœ¨ã€‚" +msgstr "节点 “%s†的索引属性å “%sâ€ æ— æ•ˆã€‚" #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "ï¼šæ— æ•ˆå‚数类型: " +msgstr ": æ— æ•ˆå‚数类型: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "ï¼šæ— æ•ˆå‚数: " +msgstr ": æ— æ•ˆå‚æ•°: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "脚本ä¸æœªæ‰¾åˆ°VariableGet: " +msgstr "脚本ä¸æœªæ‰¾åˆ° VariableGet: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "脚本ä¸æœªæ‰¾åˆ°VariableSet: " +msgstr "脚本ä¸æœªæ‰¾åˆ° VariableSet: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "自定义节点ä¸åŒ…å«_step()方法,ä¸èƒ½ç”Ÿæˆå›¾åƒã€‚" +msgstr "自定义节点ä¸åŒ…å« _step() 方法,ä¸èƒ½ç”Ÿæˆå›¾åƒã€‚" #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." -msgstr "_step()çš„è¿”å›žå€¼æ— æ•ˆï¼Œå¿…é¡»æ˜¯æ•´å½¢ï¼ˆseq out)或å—符串(error)。" +msgstr "_step() çš„è¿”å›žå€¼æ— æ•ˆï¼Œå¿…é¡»æ˜¯æ•´å½¢ (Seq Out) 或å—符串 (Error)。" #: modules/visual_script/visual_script_property_selector.cpp msgid "Search VisualScript" @@ -11844,7 +11851,7 @@ msgstr "设置 %s" #: platform/android/export/export.cpp msgid "Package name is missing." -msgstr "缺包å。" +msgstr "包å缺失。" #: platform/android/export/export.cpp msgid "Package segments must be of non-zero length." @@ -11852,7 +11859,7 @@ msgstr "包段的长度必须为éžé›¶ã€‚" #: platform/android/export/export.cpp msgid "The character '%s' is not allowed in Android application package names." -msgstr "Android应用程åºåŒ…å称ä¸ä¸å…许使用å—符“%sâ€ã€‚" +msgstr "Android 应用程åºåŒ…å称ä¸ä¸å…许使用å—符 “%sâ€ã€‚" #: platform/android/export/export.cpp msgid "A digit cannot be the first character in a package segment." @@ -11860,11 +11867,11 @@ msgstr "包段ä¸çš„第一个å—符ä¸èƒ½æ˜¯æ•°å—。" #: platform/android/export/export.cpp msgid "The character '%s' cannot be the first character in a package segment." -msgstr "包段ä¸çš„第一个å—符ä¸èƒ½æ˜¯â€œ%sâ€ã€‚" +msgstr "包段ä¸çš„第一个å—符ä¸èƒ½æ˜¯ “%sâ€ã€‚" #: platform/android/export/export.cpp msgid "The package must have at least one '.' separator." -msgstr "包必须至少有一个“.â€åˆ†éš”符。" +msgstr "包必须至少有一个 “.†分隔符。" #: platform/android/export/export.cpp msgid "Select device from the list" @@ -11872,11 +11879,11 @@ msgstr "从列表ä¸é€‰æ‹©è®¾å¤‡" #: platform/android/export/export.cpp msgid "ADB executable not configured in the Editor Settings." -msgstr "未在编辑器设置ä¸é…ç½®ADBå¯æ‰§è¡Œæ–‡ä»¶ã€‚" +msgstr "未在编辑器设置ä¸é…ç½® ADB å¯æ‰§è¡Œæ–‡ä»¶ã€‚" #: platform/android/export/export.cpp msgid "OpenJDK jarsigner not configured in the Editor Settings." -msgstr "未在编辑器设置ä¸é…ç½®OpenJDK Jarsigner。" +msgstr "未在编辑器设置ä¸é…ç½® OpenJDK Jarsigner。" #: platform/android/export/export.cpp msgid "Debug keystore not configured in the Editor Settings nor in the preset." @@ -11888,21 +11895,29 @@ msgstr "用于å‘布的密钥å˜å‚¨åœ¨å¯¼å‡ºé¢„设ä¸æœªè¢«æ£ç¡®è®¾ç½®ã€‚" #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." -msgstr "自定义构建需è¦åœ¨â€œç¼–辑器设置â€ä¸ä½¿ç”¨æœ‰æ•ˆçš„Android SDK路径。" +msgstr "自定义构建需è¦åœ¨ “编辑器设置†ä¸ä½¿ç”¨æœ‰æ•ˆçš„ Android SDK 路径。" #: platform/android/export/export.cpp msgid "Invalid Android SDK path for custom build in Editor Settings." -msgstr "用于“编辑器设置â€ä¸è‡ªå®šä¹‰æž„建的Android SDKè·¯å¾„æ˜¯æ— æ•ˆçš„ã€‚" +msgstr "用于 “编辑器设置†ä¸è‡ªå®šä¹‰æž„建的 Android SDK è·¯å¾„æ˜¯æ— æ•ˆçš„ã€‚" + +#: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" #: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." -msgstr "未在项目ä¸å®‰è£…Android构建模æ¿ã€‚从项目èœå•å®‰è£…它。" +msgstr "未在项目ä¸å®‰è£… Android 构建模æ¿ã€‚从项目èœå•å®‰è£…它。" #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." -msgstr "APKæ‰©å±•çš„å…¬é’¥æ— æ•ˆã€‚" +msgstr "APK æ‰©å±•çš„å…¬é’¥æ— æ•ˆã€‚" #: platform/android/export/export.cpp msgid "Invalid package name:" @@ -11913,46 +11928,63 @@ msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" msgstr "" -"“android/modulesâ€é¡¹ç›®è®¾ç½®ï¼ˆå˜æ›´äºŽGodot 3.2.2)ä¸åŒ…å«äº†æ— 效模" -"组“GodotPaymentV3â€.\n" +"“android/modules†项目设置(å˜æ›´äºŽGodot 3.2.2)ä¸åŒ…å«äº†æ— 效模组 " +"“GodotPaymentV3â€ã€‚\n" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." -msgstr "å¿…é¡»å¯ç”¨â€œä½¿ç”¨è‡ªå®šä¹‰æž„建â€æ‰èƒ½ä½¿ç”¨æ’件。" +msgstr "å¿…é¡»å¯ç”¨ “使用自定义构建†æ‰èƒ½ä½¿ç”¨æ’件。" #: platform/android/export/export.cpp msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." -msgstr "“自由度â€åªæœ‰åœ¨å½““Xr Modeâ€æ˜¯â€œOculus Mobile VRâ€æ—¶æ‰æœ‰æ•ˆã€‚" +msgstr "" +"“Degrees Of Freedom†åªæœ‰åœ¨å½“ “Xr Mode†是 “Oculus Mobile VR†时æ‰æœ‰æ•ˆã€‚" #: platform/android/export/export.cpp msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." -msgstr "“手部追踪â€åªæœ‰åœ¨å½““Xr Modeâ€æ˜¯â€œOculus Mobile VRâ€æ—¶æ‰æœ‰æ•ˆã€‚" +msgstr "“Hand Tracking†åªæœ‰åœ¨å½“ “Xr Mode†是 “Oculus Mobile VR†时æ‰æœ‰æ•ˆã€‚" #: platform/android/export/export.cpp msgid "" "\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." -msgstr "“焦点感知â€åªæœ‰åœ¨å½““Xr Modeâ€æ˜¯â€œOculus Mobile VRâ€æ—¶æ‰æœ‰æ•ˆã€‚" +msgstr "“Focus Awareness†åªæœ‰åœ¨å½“ “Xr Mode†是 “Oculus Mobile VR†时æ‰æœ‰æ•ˆã€‚" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "“Export AAB†åªæœ‰åœ¨å½“å¯ç”¨ “Use Custom Build†时æ‰æœ‰æ•ˆã€‚" + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to delete unaligned APK." msgstr "" #: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "æ— æ•ˆæ–‡ä»¶åï¼Android App Bundle 必须有 *.aab 扩展。" + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "APK Expansion 与 Android App Bundle ä¸å…¼å®¹ã€‚" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "æ— æ•ˆæ–‡ä»¶åï¼Android APK 必须有 *.apk 扩展。" + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." @@ -11973,25 +12005,25 @@ msgstr "" #: platform/android/export/export.cpp msgid "Building Android Project (gradle)" -msgstr "构建android项目(gradle)" +msgstr "构建 Android 项目 (Gradle)" #: platform/android/export/export.cpp msgid "" "Building of Android project failed, check output for the error.\n" "Alternatively visit docs.godotengine.org for Android build documentation." msgstr "" -"Android项目构建失败,请检查输出ä¸æ˜¾ç¤ºçš„错误。\n" -"ä½ ä¹Ÿå¯ä»¥è®¿é—®docs.godotengine.org查看Android构建文档。" +"Android 项目构建失败,请检查输出ä¸æ˜¾ç¤ºçš„错误。\n" +"也å¯ä»¥è®¿é—® docs.godotengine.org 查看 Android 构建文档。" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "移动输出" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." -msgstr "" +msgstr "æ— æ³•å¤åˆ¶ä¸Žæ›´å导出文件,请在 Gradle 项目文件夹内确认输出。" #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12003,7 +12035,7 @@ msgstr "æ ‡è¯†ç¬¦ä¸ä¸å…许使用å—符 '%s' 。" #: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." -msgstr "未指定应用商店团队ID-æ— æ³•é…置项目。" +msgstr "未指定 App Store Team ID - æ— æ³•é…置项目。" #: platform/iphone/export/export.cpp msgid "Invalid Identifier:" @@ -12015,7 +12047,7 @@ msgstr "预设ä¸æœªæŒ‡å®šå¿…éœ€çš„å›¾æ ‡ã€‚" #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "åœæ¢HTTPæœåŠ¡" +msgstr "åœæ¢ HTTP æœåŠ¡" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -12023,7 +12055,7 @@ msgstr "在æµè§ˆå™¨ä¸è¿è¡Œ" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." -msgstr "使用默认æµè§ˆå™¨æ‰“开导出的HTML文件。" +msgstr "使用默认æµè§ˆå™¨æ‰“开导出的 HTML 文件。" #: platform/javascript/export/export.cpp msgid "Could not write file:" @@ -12039,11 +12071,11 @@ msgstr "导出模æ¿æ— 效:" #: platform/javascript/export/export.cpp msgid "Could not read custom HTML shell:" -msgstr "æ— æ³•è¯»å–自定义HTML命令:" +msgstr "æ— æ³•è¯»å–自定义 HTML 壳层:" #: platform/javascript/export/export.cpp msgid "Could not read boot splash image file:" -msgstr "æ— æ³•è¯»å–å¯åŠ¨å›¾ç‰‡:" +msgstr "æ— æ³•è¯»å–å¯åŠ¨å›¾ç‰‡ï¼š" #: platform/javascript/export/export.cpp msgid "Using default boot splash image." @@ -12063,11 +12095,11 @@ msgstr "å‘布者显示åç§°æ— æ•ˆã€‚" #: platform/uwp/export/export.cpp msgid "Invalid product GUID." -msgstr "产å“GUIDæ— æ•ˆã€‚" +msgstr "äº§å“ GUID æ— æ•ˆã€‚" #: platform/uwp/export/export.cpp msgid "Invalid publisher GUID." -msgstr "å‘布者GUIDæ— æ•ˆã€‚" +msgstr "å‘布者 GUID æ— æ•ˆã€‚" #: platform/uwp/export/export.cpp msgid "Invalid background color." @@ -12075,47 +12107,47 @@ msgstr "æ— æ•ˆçš„èƒŒæ™¯é¢œè‰²ã€‚" #: platform/uwp/export/export.cpp msgid "Invalid Store Logo image dimensions (should be 50x50)." -msgstr "Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆå›¾åƒå°ºå¯¸å¿…须是50x50)。" +msgstr "商店 Logo å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆå›¾åƒå°ºå¯¸å¿…须是 50x50)。" #: platform/uwp/export/export.cpp msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -msgstr "æ£æ–¹å½¢çš„ 44x44 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º44x44)。" +msgstr "æ£æ–¹å½¢çš„ 44x44 Logo å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º 44x44)。" #: platform/uwp/export/export.cpp msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -msgstr "æ£æ–¹å½¢çš„ 71x71 Logoæ ‡å¿—å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º71x71)。" +msgstr "æ£æ–¹å½¢çš„ 71x71 Logo æ ‡å¿—å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º 71x71)。" #: platform/uwp/export/export.cpp msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -msgstr "æ£æ–¹çš„ 150x150 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º150x150)。" +msgstr "æ£æ–¹å½¢çš„ 150x150 Logo å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º 150x150)。" #: platform/uwp/export/export.cpp msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -msgstr "æ£æ–¹å½¢çš„ 310x310 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º310x310)。" +msgstr "æ£æ–¹å½¢çš„ 310x310 Logo å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º 310x310)。" #: platform/uwp/export/export.cpp msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -msgstr "宽幅310x150 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º310x150)。" +msgstr "宽幅 310x150 Logo å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º 310x150)。" #: platform/uwp/export/export.cpp msgid "Invalid splash screen image dimensions (should be 620x300)." -msgstr "å¯åŠ¨ç”»é¢å›¾ç‰‡å°ºå¯¸æ— 效(应为620x300)。" +msgstr "å¯åŠ¨ç”»é¢å›¾ç‰‡å°ºå¯¸æ— 效(应为 620x300)。" #: 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 "" -"必须创建SpriteFrames资æºï¼Œæˆ–在“ Framesâ€å±žæ€§ä¸è®¾ç½®SpriteFrames资æºï¼Œä»¥ä¾¿" -"AnimatedSprite显示帧。" +"必须创建 SpriteFrames 资æºï¼Œæˆ–在 “Frames†属性ä¸è®¾ç½® SpriteFrames 资æºï¼Œä»¥ä¾¿ " +"AnimatedSprite 显示帧。" #: 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 "" -"æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个CanvasModulate类型的节点,场景ä¸çš„第一个CanvasModulate" -"节点能æ£å¸¸å·¥ä½œï¼Œå…¶ä½™çš„将被忽略。" +"æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个 CanvasModulate 类型的节点,场景ä¸çš„第一个 " +"CanvasModulate 节点能æ£å¸¸å·¥ä½œï¼Œå…¶ä½™çš„将被忽略。" #: scene/2d/collision_object_2d.cpp msgid "" @@ -12133,12 +12165,12 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionPolygon2D类型节点åªèƒ½ä¸ºCollisionObject2D的派生类æ供碰撞形状数æ®ï¼Œè¯·" -"将其放在Area2Dã€StaticBody2Dã€RigidBody2D或KinematicBody2D节点下。" +"CollisionPolygon2D 类型节点åªèƒ½ä¸º CollisionObject2D 的派生类æ供碰撞形状数" +"æ®ï¼Œè¯·å°†å…¶æ”¾åœ¨ Area2D, StaticBody2D, RigidBody2D 或 KinematicBody2D 节点下。" #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." -msgstr "空的CollisionPolygon2Dä¸èµ·ä»»ä½•ç¢°æ’žæ£€æµ‹ä½œç”¨ã€‚" +msgstr "空的 CollisionPolygon2D ä¸èµ·ä»»ä½•ç¢°æ’žæ£€æµ‹ä½œç”¨ã€‚" #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12146,14 +12178,14 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D类型节点åªèƒ½ä¸ºCollisionObject2D的派生类æ供碰撞形状数æ®ï¼Œè¯·å°†" -"其放在Area2Dã€StaticBody2Dã€RigidBody2D或者是KinematicBody2D节点下。" +"CollisionShape2D 类型节点åªèƒ½ä¸º CollisionObject2D 的派生类æ供碰撞形状数æ®ï¼Œ" +"请将其放在 Area2D, StaticBody2D, RigidBody2D 或者是 KinematicBody2D 节点下。" #: scene/2d/collision_shape_2d.cpp msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" -msgstr "形状资æºå¿…须是通过CollisionShape2D节点的shape属性创建的ï¼" +msgstr "CollisionShape2D 必须有形状æ‰èƒ½å·¥ä½œã€‚请先为其创建形状资æºï¼" #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12167,13 +12199,15 @@ msgstr "" msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." -msgstr "CPUParticles2D动画需è¦ä½¿ç”¨å¯ç”¨äº†â€œç²’å动画â€çš„CanvasItemMaterial。" +msgstr "" +"CPUParticles2D 动画需è¦ä½¿ç”¨å¯ç”¨äº† “Particles Animation†的 " +"CanvasItemMaterial。" #: scene/2d/light_2d.cpp msgid "" "A texture with the shape of the light must be supplied to the \"Texture\" " "property." -msgstr "必须将具有ç¯å…‰å½¢çŠ¶çš„纹ç†æ供给“纹ç†â€ï¼ˆTexture)属性。" +msgstr "必须将具有ç¯å…‰å½¢çŠ¶çš„纹ç†æ供给 “Textureâ€ï¼ˆçº¹ç†ï¼‰å±žæ€§ã€‚" #: scene/2d/light_occluder_2d.cpp msgid "" @@ -12189,21 +12223,21 @@ msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"请为æ¤èŠ‚点设置一个NavigationPolygon类型的资æºä½œä¸ºå½¢çŠ¶ï¼Œè¿™æ ·å®ƒæ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +"请为æ¤èŠ‚点设置一个 NavigationPolygon 类型的资æºä½œä¸ºå½¢çŠ¶ï¼Œè¿™æ ·å®ƒæ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/navigation_polygon.cpp msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" -"NavigationPolygonInstance类型的节点必须作为Navigation2Dçš„åå™æ‰èƒ½ä¸ºå…¶æ供导航" -"æ•°æ®ã€‚" +"NavigationPolygonInstance 类型的节点必须作为 Navigation2D çš„å节点或åå™èŠ‚点" +"æ‰èƒ½ä¸ºå…¶æ供导航数æ®ã€‚" #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" -"ParallaxLayer类型的节点必须作为ParallaxBackgroundçš„å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +"ParallaxLayer 类型的节点必须作为 ParallaxBackground çš„å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/particles_2d.cpp msgid "" @@ -12211,8 +12245,8 @@ msgid "" "Use the CPUParticles2D node instead. You can use the \"Convert to " "CPUParticles\" option for this purpose." msgstr "" -"基于GPUçš„ç²’åä¸å—GLES2视频驱动程åºçš„支æŒã€‚\n" -"改为使用CPUParticles2D节点。为æ¤ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨â€œè½¬æ¢ä¸º CPUç²’åâ€é€‰é¡¹ã€‚" +"基于 GPU çš„ç²’åä¸å— GLES2 视频驱动程åºçš„支æŒã€‚\n" +"改为使用 CPUParticles2D 节点。为æ¤ï¼Œå¯ä»¥ä½¿ç”¨ “Convert to CPUParticles†选项。" #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" @@ -12224,11 +12258,12 @@ msgstr "ç²’åæè´¨æ²¡æœ‰æŒ‡å®šï¼Œè¯¥è¡Œä¸ºæ— æ•ˆã€‚" msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." -msgstr "Particles2D 动画需è¦ä½¿ç”¨å¯ç”¨äº†â€œç²’å动画â€çš„CanvasItemMaterial。" +msgstr "" +"Particles2D 动画需è¦ä½¿ç”¨å¯ç”¨äº† “Particles Animation†的 CanvasItemMaterial。" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." -msgstr "PathFollow2D类型的节点åªæœ‰ä½œä¸ºPath2Dçš„å节点节æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "PathFollow2D 类型的节点åªæœ‰ä½œä¸º Path2D çš„å节点节æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/physics_body_2d.cpp msgid "" @@ -12236,13 +12271,13 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" -"对RigidBody2D (在character或rigid模å¼æƒ³ï¼‰çš„尺寸修改在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•æ“Žçš„覆" -"盖。\n" +"对 RigidBody2D (在 Character 或 Rigid 模å¼ä¸‹ï¼‰çš„尺寸修改在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•æ“Ž" +"的覆盖。\n" "建议您修改å节点的碰撞形状。" #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." -msgstr "Path属性必须指å‘有效的Node2D节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "Path 属性必须指å‘有效的 Node2D 节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/skeleton_2d.cpp msgid "This Bone2D chain should end at a Skeleton2D node." @@ -12264,43 +12299,43 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"å¯ç”¨äº†â€œä½¿ç”¨çˆ¶çº§â€çš„图å—地图需è¦çˆ¶çº§ CollisionObject2D æ‰èƒ½æ供形状。请使用它作" -"为 Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D ç‰çš„å项æ¥èµ‹äºˆå®ƒä»¬å½¢" -"状。" +"å¯ç”¨äº†â€œUse Parent†的 TileMap 需è¦çˆ¶çº§ CollisionObject2D æ‰èƒ½æ供形状。请使用" +"它作为 Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ç‰çš„å项æ¥èµ‹äºˆå®ƒä»¬" +"形状。" #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnabler2D works best when used with the edited scene root directly " "as parent." -msgstr "å½“ç›´æŽ¥å°†å·²ç¼–è¾‘çš„åœºæ™¯æ ¹ä½œä¸ºçˆ¶çº§ä½¿ç”¨æ—¶ï¼ŒVisibilityEnabler2D效果最佳。" +msgstr "å½“ç›´æŽ¥å°†å·²ç¼–è¾‘çš„åœºæ™¯æ ¹ä½œä¸ºçˆ¶çº§ä½¿ç”¨æ—¶ï¼ŒVisibilityEnabler2D 效果最佳。" #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent." -msgstr "ARVRCamera必须将ARVROrigin节点作为其父节点。" +msgstr "ARVRCamera 必须将 ARVROrigin 节点作为其父节点。" #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "ARVRController必须具有ARVROrigin节点作为其父节点。" +msgstr "ARVRController 必须具有 ARVROrigin 节点作为其父节点。" #: 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 "控制器IDä¸èƒ½ä¸º0,å¦åˆ™æ¤æŽ§åˆ¶å™¨å°†ä¸ä¼šç»‘定到实际的控制器。" +msgstr "控制器 ID ä¸èƒ½ä¸º 0,å¦åˆ™æ¤æŽ§åˆ¶å™¨å°†ä¸ä¼šç»‘定到实际的控制器。" #: scene/3d/arvr_nodes.cpp msgid "ARVRAnchor must have an ARVROrigin node as its parent." -msgstr "ARVRAnchor必须具有ARVROrigin节点作为其父节点。" +msgstr "ARVRAnchor 必须具有 ARVROrigin 节点作为其父节点。" #: 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 "锚点IDä¸èƒ½ä¸º0,å¦åˆ™æ¤é”šç‚¹å°†ä¸ä¼šç»‘定到实际的锚点。" +msgstr "锚点 ID ä¸èƒ½ä¸º 0,å¦åˆ™æ¤é”šç‚¹å°†ä¸ä¼šç»‘定到实际的锚点。" #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node." -msgstr "ARVROrigin需è¦ä¸€ä¸ªARVRCameraå节点。" +msgstr "ARVROrigin 需è¦ä¸€ä¸ª ARVRCamera å节点。" #: scene/3d/baked_lightmap.cpp msgid "%d%%" @@ -12341,12 +12376,13 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon类型节点åªèƒ½ä¸ºCollisionObject的派生类æ供碰撞形状数æ®ï¼Œè¯·å°†å…¶" -"放在Areaã€StaticBodyã€RigidBody或KinematicBody节点下。" +"CollisionPolygon 类型节点åªèƒ½ä¸º CollisionObject 的派生类æ供碰撞形状数æ®ï¼Œè¯·" +"将其放在 Area, StaticBody, RigidBody, KinematicBody ç‰èŠ‚点下æ¥ä¸ºèŠ‚点æ供形" +"状。" #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." -msgstr "空CollisionPolygon节点ä¸èµ·ç¢°æ’žæ£€æµ‹ä½œç”¨ã€‚" +msgstr "空 CollisionPolygon 节点ä¸èµ·ç¢°æ’žæ£€æµ‹ä½œç”¨ã€‚" #: scene/3d/collision_shape.cpp msgid "" @@ -12354,14 +12390,14 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShape类型节点åªèƒ½ä¸ºCollisionObject的派生类æ供碰撞形状数æ®ï¼Œè¯·å°†å…¶æ”¾" -"在Areaã€StaticBodyã€RigidBody或KinematicBody节点下。" +"CollisionShape 类型节点åªèƒ½ä¸º CollisionObject 的派生类æ供碰撞形状数æ®ï¼Œè¯·å°†" +"其放在 Area, StaticBody, RigidBody, KinematicBody 节点下æ¥ä¸ºèŠ‚点æ供形状。" #: scene/3d/collision_shape.cpp msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." -msgstr "å¿…é¡»æ供形状以使CollisionShape起作用。请为其创建形状资æºã€‚" +msgstr "å¿…é¡»æ供形状以使 CollisionShape 起作用。请为其创建形状资æºã€‚" #: scene/3d/collision_shape.cpp msgid "" @@ -12383,8 +12419,8 @@ msgid "" "CPUParticles animation requires the usage of a SpatialMaterial whose " "Billboard Mode is set to \"Particle Billboard\"." msgstr "" -"CPUParticles动画需è¦ä½¿ç”¨SpatialMaterial,其“公告牌模å¼â€è®¾ç½®ä¸ºâ€œ Particle " -"Billboardâ€ã€‚" +"CPUParticles 动画需è¦ä½¿ç”¨ Billboard Mode 设置为 “Particle Billboard†的 " +"SpatialMaterial。" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -12395,13 +12431,13 @@ msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" -"GLES2视频驱动程åºä¸æ”¯æŒGIProbe。\n" -"请改用BakedLightmap。" +"GLES2 视频驱动程åºä¸æ”¯æŒ GIProbes。\n" +"请改用 BakedLightmap。" #: scene/3d/interpolated_camera.cpp msgid "" "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." -msgstr "InterpolatedCamera已废弃,将在Godot 4.0ä¸åˆ 除。" +msgstr "InterpolatedCamera 已废弃,将在 Godot 4.0 ä¸åˆ 除。" #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." @@ -12409,14 +12445,15 @@ msgstr "角度宽于 90 度的 SpotLight æ— æ³•æŠ•å°„å‡ºé˜´å½±ã€‚" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." -msgstr "æ¤èŠ‚点需è¦è®¾ç½®NavigationMesh资æºæ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "æ¤èŠ‚点需è¦è®¾ç½® NavigationMesh 资æºæ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/3d/navigation_mesh.cpp msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" -"NavigationMeshInstance类型节点必须作为Navigation节点的åå™æ‰èƒ½æ供导航数æ®ã€‚" +"NavigationMeshInstance 类型节点必须作为 Navigation 节点的å节点或åå™èŠ‚点æ‰èƒ½" +"æ供导航数æ®ã€‚" #: scene/3d/particles.cpp msgid "" @@ -12424,31 +12461,33 @@ msgid "" "Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" "\" option for this purpose." msgstr "" -"基于GPUçš„ç²’åä¸å—GLES2视频驱动程åºçš„支æŒã€‚\n" -"改为使用CPUParticles节点。为æ¤ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨â€œè½¬æ¢ä¸º CPUç²’åâ€é€‰é¡¹ã€‚" +"基于 GPU çš„ç²’åä¸å— GLES2 视频驱动程åºçš„支æŒã€‚\n" +"改为使用 CPUParticles 节点。为æ¤ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨ “Convert to CPUParticles†选项。" #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." -msgstr "ç²’åä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshe)指定到绘制通é“(draw passes)。" +msgstr "ç²’åä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼æŒ‡å®šåˆ°ç»˜åˆ¶é€šé“ (Draw Pass)。" #: scene/3d/particles.cpp msgid "" "Particles animation requires the usage of a SpatialMaterial whose Billboard " "Mode is set to \"Particle Billboard\"." msgstr "" -"ç²’å动画需è¦ä½¿ç”¨SpatialMaterial,其“公告牌模å¼â€è®¾ç½®ä¸ºâ€œ Particle Billboardâ€ã€‚" +"ç²’å动画需è¦ä½¿ç”¨ Billboard Mode 设置为 “Particle Billboard†的 " +"SpatialMaterial。" #: scene/3d/path.cpp msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow类型的节点åªæœ‰ä½œä¸ºPath类型节点的å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "PathFollow 类型的节点åªæœ‰ä½œä¸º Path 类型节点的å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/3d/path.cpp msgid "" "PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " "parent Path's Curve resource." msgstr "" -"PathFollow çš„ ROTATION_ORIENTED è¦æ±‚在其父路径的 Curve 资æºä¸å¯ç”¨â€œå‘上矢é‡â€ã€‚" +"PathFollow çš„ ROTATION_ORIENTED è¦æ±‚在其父路径的 Curve 资æºä¸å¯ç”¨ “Up " +"Vectorâ€ã€‚" #: scene/3d/physics_body.cpp msgid "" @@ -12456,15 +12495,16 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" -"对RigidBody(在character或rigid模å¼ä¸‹ï¼‰çš„尺寸修改,在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•æ“Žçš„覆" -"盖。\n" +"对 RigidBody(在 Character 或 Rigid 模å¼ä¸‹ï¼‰çš„尺寸修改,在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•æ“Ž" +"的覆盖。\n" "建议您修改å节点的碰撞形状。" #: scene/3d/remote_transform.cpp msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." -msgstr "“远程路径â€å±žæ€§å¿…须指å‘有效的Spatial或Spatial派生的节点æ‰èƒ½å·¥ä½œã€‚" +msgstr "" +"“Remote Path†属性必须指å‘有效的 Spatial 或 Spatial 派生的节点æ‰èƒ½å·¥ä½œã€‚" #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh." @@ -12484,7 +12524,7 @@ msgid "" "A SpriteFrames resource must be created or set in the \"Frames\" property in " "order for AnimatedSprite3D to display frames." msgstr "" -"必须在“Framesâ€å±žæ€§ä¸åˆ›å»ºæˆ–设置 SpriteFrames 资æºï¼ŒAnimatedSprite3D æ‰ä¼šæ˜¾ç¤º" +"必须在 “Frames†属性ä¸åˆ›å»ºæˆ–设置 SpriteFrames 资æºï¼ŒAnimatedSprite3D æ‰ä¼šæ˜¾ç¤º" "帧。" #: scene/3d/vehicle_body.cpp @@ -12492,52 +12532,53 @@ msgid "" "VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " "it as a child of a VehicleBody." msgstr "" -"VehicleWheel 为 VehicleBody æ供一个车轮系统(Wheel System)。请将它作为" -"VehicleBodyçš„å节点。" +"VehicleWheel 为 VehicleBody æ供一个车轮系统 (Wheel System)。请将它作为 " +"VehicleBody çš„å节点。" #: scene/3d/world_environment.cpp msgid "" "WorldEnvironment requires its \"Environment\" property to contain an " "Environment to have a visible effect." msgstr "" -"WorldEnvironment è¦æ±‚其“Environmentâ€å±žæ€§æ˜¯ä¸€ä¸ª Environment,以产生å¯è§æ•ˆæžœã€‚" +"WorldEnvironment è¦æ±‚å…¶ “Environment†属性是一个 Environment,以产生å¯è§æ•ˆ" +"果。" #: scene/3d/world_environment.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." -msgstr "æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个WorldEnvironment类型的节点。" +msgstr "æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个 WorldEnvironment 类型的节点。" #: 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 "" -"这个WorldEnvironmentè¢«å¿½ç•¥ã€‚æ·»åŠ æ‘„åƒå¤´ï¼ˆç”¨äºŽ3D场景)或将æ¤çŽ¯å¢ƒçš„背景模å¼è®¾ç½®" -"为画布(用于2D场景)。" +"这个 WorldEnvironment è¢«å¿½ç•¥ã€‚æ·»åŠ æ‘„åƒå¤´ï¼ˆç”¨äºŽ 3D 场景)或将æ¤çŽ¯å¢ƒçš„背景模å¼" +"设置为画布(用于 2D 场景)。" #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" -msgstr "在 BlendTree 节点 '%s' 上没有å‘现动画: '%s'" +msgstr "在 BlendTree 节点 “%s†上没有å‘现动画: “%sâ€" #: scene/animation/animation_blend_tree.cpp msgid "Animation not found: '%s'" -msgstr "没有动画: '%s'" +msgstr "没有动画: “%sâ€" #: scene/animation/animation_tree.cpp msgid "In node '%s', invalid animation: '%s'." -msgstr "在节点 '%s' ä¸Šçš„åŠ¨ç”»æ— æ•ˆï¼š '%s' 。" +msgstr "在节点 “%sâ€ ä¸Šçš„åŠ¨ç”»æ— æ•ˆï¼š “%s†。" #: scene/animation/animation_tree.cpp msgid "Invalid animation: '%s'." -msgstr "æ— æ•ˆåŠ¨ç”»ï¼š '%s' 。" +msgstr "æ— æ•ˆåŠ¨ç”»ï¼š “%s†。" #: scene/animation/animation_tree.cpp msgid "Nothing connected to input '%s' of node '%s'." -msgstr "没有任何物体连接到节点 '%s' 的输入 '%s' 。" +msgstr "没有任何物体连接到节点 “%s†的输入 “%s†。" #: scene/animation/animation_tree.cpp msgid "No root AnimationNode for the graph is set." -msgstr "æ²¡æœ‰ä¸ºå›¾è®¾ç½®æ ¹AnimationNode。" +msgstr "æ²¡æœ‰ä¸ºå›¾è®¾ç½®æ ¹ AnimationNode。" #: scene/animation/animation_tree.cpp msgid "Path to an AnimationPlayer node containing animations is not set." @@ -12549,11 +12590,11 @@ msgstr "动画æ’æ”¾å™¨çš„è·¯å¾„æ²¡æœ‰åŠ è½½ä¸€ä¸ª AnimationPlayer 节点。" #: scene/animation/animation_tree.cpp msgid "The AnimationPlayer root node is not a valid node." -msgstr "AnimationPlayeræ ¹èŠ‚ç‚¹ä¸æ˜¯æœ‰æ•ˆèŠ‚点。" +msgstr "AnimationPlayer æ ¹èŠ‚ç‚¹ä¸æ˜¯æœ‰æ•ˆèŠ‚点。" #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." -msgstr "该节点已废弃。请使用Animation Tree代替。" +msgstr "该节点已废弃。请使用 AnimationTree 代替。" #: scene/gui/color_picker.cpp msgid "" @@ -12591,20 +12632,20 @@ msgid "" "children placement behavior.\n" "If you don't intend to add a script, use a plain Control node instead." msgstr "" -"除éžè„šæœ¬é…置其å代放置行为,å¦åˆ™å®¹å™¨æœ¬èº«æ²¡æœ‰ä»»ä½•ä½œç”¨ã€‚\n" -"如果您ä¸æƒ³æ·»åŠ 脚本,请改用普通的Control节点。" +"除éžè„šæœ¬é…置其å节点放置行为,å¦åˆ™å®¹å™¨æœ¬èº«æ²¡æœ‰ä»»ä½•ä½œç”¨ã€‚\n" +"如果您ä¸æƒ³æ·»åŠ 脚本,请改用普通的 Control 节点。" #: 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 "" -"由于该控件的 Mouse Filter 设置为 \"Ignore\" å› æ¤å®ƒçš„ Hint Tooltip å°†ä¸ä¼šå±•" -"示。将 Mouse Filter 设置为 \"Stop\" 或 \"Pass\" å¯ä¿®æ£æ¤é—®é¢˜ã€‚" +"由于该控件的 Mouse Filter 设置为 “Ignoreâ€ å› æ¤å°†ä¸ä¼šæ˜¾ç¤ºé«˜äº®å·¥å…·æ示。将 " +"Mouse Filter 设置为 “Stop†或 “Pass†å¯ä¿®æ£æ¤é—®é¢˜ã€‚" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "æ示ï¼" +msgstr "è¦å‘Šï¼" #: scene/gui/dialogs.cpp msgid "Please Confirm..." @@ -12616,12 +12657,12 @@ msgid "" "functions. Making them visible for editing is fine, but they will hide upon " "running." msgstr "" -"默认情况下,弹出窗å£å°†éšè—,除éžæ‚¨è°ƒç”¨popup()或任何popup *()函数。使它们" -"å¯è§ä»¥è¿›è¡Œç¼–辑是å¯ä»¥çš„,但是它们会在è¿è¡Œæ—¶éšè—。" +"弹窗将默认éšè—,除éžè°ƒç”¨ popup() 或任何 popup*() 函数。虽然å¯ä»¥å°†å¼¹çª—设为å¯è§" +"æ¥è¿›è¡Œç¼–辑,但在è¿è¡Œæ—¶ä¼šéšè—。" #: scene/gui/range.cpp msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "如果å¯ç”¨äº†â€œ Exp Editâ€ï¼Œåˆ™â€œ Min Valueâ€å¿…须大于0。" +msgstr "如果å¯ç”¨äº† “Exp Editâ€ï¼Œåˆ™ “Min Value†必须大于 0。" #: scene/gui/scroll_container.cpp msgid "" @@ -12629,19 +12670,21 @@ msgid "" "Use a container as child (VBox, HBox, etc.), or a Control and set the custom " "minimum size manually." msgstr "" -"ScrollContainer旨在与å•ä¸ªå控件一起使用。\n" -"å节点应该是å•ä¸ªå®¹å™¨ï¼ˆVBoxã€HBoxç‰ï¼‰æˆ–者使用å•ä¸ªæŽ§ä»¶å¹¶æ‰‹åŠ¨è®¾ç½®å…¶è‡ªå®šä¹‰æœ€å°å°º" +"ScrollContainer 适用于与å•ä¸ªå控件一起使用。\n" +"å节点应该是å•ä¸ªå®¹å™¨ï¼ˆVBox, HBox ç‰ï¼‰æˆ–者使用å•ä¸ªæŽ§ä»¶å¹¶æ‰‹åŠ¨è®¾ç½®å…¶è‡ªå®šä¹‰æœ€å°å°º" "寸。" #: scene/gui/tree.cpp msgid "(Other)" -msgstr "(其它)" +msgstr "(其它)" #: scene/main/scene_tree.cpp msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." -msgstr "æ— æ³•åŠ è½½é¡¹ç›®è®¾ç½®ä¸çš„默认环境,详è§ï¼ˆæ¸²æŸ“->视图->默认环境)。" +msgstr "" +"æ— æ³•åŠ è½½é¡¹ç›®è®¾ç½®ä¸çš„默认环境 (Rendering -> Environment -> Default " +"Environment)。" #: scene/main/viewport.cpp msgid "" @@ -12650,13 +12693,13 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"这个 Viewport æœªè¢«è®¾ç½®ä¸ºæ¸²æŸ“ç›®æ ‡ï¼ˆrender targetï¼‰ã€‚å¦‚æžœä½ åˆ»æ„打算让其直接在å±" -"幕上显示其内容,使其æˆä¸ºå控件的所以它å¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·å°†å…¶è®¾ç½®ä¸º " -"RenderTarget,并将其内部纹ç†åˆ†é…给其它节点显示。" +"这个 Viewport æœªè¢«è®¾ç½®ä¸ºæ¸²æŸ“ç›®æ ‡ã€‚å¦‚æžœä½ æƒ³è®©å…¶ç›´æŽ¥åœ¨å±å¹•ä¸Šæ˜¾ç¤ºå†…容,请使其æˆ" +"为 Control çš„åèŠ‚ç‚¹ï¼Œè¿™æ ·ä¸€æ¥è¯¥ Viewport æ‰ä¼šæœ‰å¤§å°ã€‚å¦åˆ™è¯·ä¸ºå…¶è®¾ç½® " +"RenderTarget 并分é…其内部纹ç†æ¥æ˜¾ç¤ºã€‚" #: scene/main/viewport.cpp msgid "Viewport size must be greater than 0 to render anything." -msgstr "Viewport大å°å¤§äºŽ0æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。" +msgstr "Viewport 大å°å¤§äºŽ 0 æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。" #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." @@ -12676,7 +12719,7 @@ msgstr "对函数的赋值。" #: servers/visual/shader_language.cpp msgid "Assignment to uniform." -msgstr "对uniform的赋值。" +msgstr "对统一的赋值。" #: servers/visual/shader_language.cpp msgid "Varyings can only be assigned in vertex function." @@ -12686,6 +12729,12 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸æŒ‡å®šã€‚" msgid "Constants cannot be modified." msgstr "ä¸å…许修改常é‡ã€‚" +#~ msgid "Error trying to save layout!" +#~ msgstr "ä¿å˜å¸ƒå±€å‡ºé”™ï¼" + +#~ msgid "Default editor layout overridden." +#~ msgstr "覆盖编辑器默认布局。" + #~ msgid "Move pivot" #~ msgstr "移动轴心点" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index cfc8abfafa..1104fb0ee9 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -1071,14 +1071,17 @@ msgstr "" #: editor/dependency_editor.cpp #, fuzzy -msgid "Remove selected files from the project? (Can't be restored)" +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." 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? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" #: editor/dependency_editor.cpp @@ -2389,12 +2392,16 @@ msgid "Error saving TileSet!" msgstr "儲å˜TileSet時出ç¾éŒ¯èª¤ï¼" #: editor/editor_node.cpp -#, fuzzy -msgid "Error trying to save layout!" -msgstr "儲å˜ä½ˆå±€æ™‚出ç¾éŒ¯èª¤ï¼" +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." +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 @@ -2403,7 +2410,7 @@ msgstr "未找到佈局å稱ï¼" #: editor/editor_node.cpp #, fuzzy -msgid "Restored default layout to base settings." +msgid "Restored the Default layout to its base settings." msgstr "é‡è¨é è¨ä½ˆå±€ã€‚" #: editor/editor_node.cpp @@ -3861,6 +3868,11 @@ msgid "Move To..." msgstr "æ¬åˆ°..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "移動Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "æ–°å¢žå ´æ™¯..." @@ -12365,6 +12377,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12410,6 +12430,22 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Aligning APK..." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to complete APK alignment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to delete unaligned APK." +msgstr "" + +#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" @@ -13101,6 +13137,10 @@ msgid "Constants cannot be modified." msgstr "" #, fuzzy +#~ msgid "Error trying to save layout!" +#~ msgstr "儲å˜ä½ˆå±€æ™‚出ç¾éŒ¯èª¤ï¼" + +#, fuzzy #~ msgid "Move pivot" #~ msgstr "上移" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index e579ce7d7c..1174e8f484 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-11 17:17+0000\n" +"PO-Revision-Date: 2020-11-17 11:07+0000\n" "Last-Translator: BinotaLIU <me@binota.org>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" @@ -38,7 +38,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.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -61,15 +61,15 @@ msgstr "é‹ç®—å¼ä¸çš„輸入 %i 無效 (未傳éžï¼‰" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "該實體為 null,無法使用 self" +msgstr "該實體為 null,無法使用 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" -msgstr "在型別 %s ã€åŸºç¤Žé¡žåž‹ %s 上å˜å–了無效的索引" +msgstr "索引型別 %s å°åŸºç¤Žé¡žåž‹ %s 無效" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" @@ -307,7 +307,7 @@ msgstr "觸發程åº" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "截圖" +msgstr "截å–" #: editor/animation_track_editor.cpp msgid "Nearest" @@ -324,11 +324,11 @@ msgstr "立方體" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "Clamp å¼å…§æ’循環" +msgstr "鉗制內æ’循環 (Clamp)" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "Wrap å¼å…§æ’循環" +msgstr "無縫內æ’循環 (Wrap)" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -389,15 +389,15 @@ msgstr "AnimationPlayer ä¸èƒ½æ’放自己,åªå¯æ’放其他 Player。" #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" -msgstr "新增ï¼æ’入動畫" +msgstr "新增並æ’入動畫" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" -msgstr "å‹•ç•«æ–°å¢žè»Œè·¡èˆ‡ç•«æ ¼" +msgstr "新增動畫軌é“與關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" -msgstr "新增關éµç•«æ ¼" +msgstr "新增動畫關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Change Animation Step" @@ -437,7 +437,7 @@ msgstr "æ²’æœ‰æ ¹ç¯€é»žæ™‚ç„¡æ³•æ–°å¢žè»Œé“" #: editor/animation_track_editor.cpp msgid "Invalid track for Bezier (no suitable sub-properties)" -msgstr "å°æ–¼è²èŒ²æ›²ç·šç„¡æ•ˆçš„軌é“(éžé©ç”¨ä¹‹å屬性)" +msgstr "ä¸å¯ç”¨æ–¼è²èŒ²æ›²ç·šçš„軌é“(無é©ç”¨ä¹‹å屬性)" #: editor/animation_track_editor.cpp msgid "Add Bezier Track" @@ -477,7 +477,7 @@ msgstr "移動動畫關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" -msgstr "空白剪貼æ¿" +msgstr "剪貼æ¿ç‚ºç©º" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -490,7 +490,7 @@ msgstr "動畫縮放關éµå½±æ ¼" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." -msgstr "該é¸é …ä¸é©ç”¨æ–¼ç·¨è¼¯è²èŒ²æ›²ç·šï¼Œå…¶åƒ…有單一軌é“。" +msgstr "該é¸é …ä¸é©ç”¨è²èŒ²æ›²ç·šç·¨è¼¯ï¼Œå› 曲線僅有單一軌é“。" #: editor/animation_track_editor.cpp msgid "" @@ -509,7 +509,7 @@ msgstr "" "è‹¥è¦é–‹å•Ÿã€ŒåŠ 入客制軌ã€çš„åŠŸèƒ½ï¼Œè«‹åœ¨å ´æ™¯åœ¨åŒ¯å…¥è¨å®šä¸å°‡ [Animation] -> " "[Storage] è¨å®šç‚º\n" "[Files],並啟用 [Animation] -> [Keep Custom Tracks],然後é‡æ–°åŒ¯å…¥ã€‚\n" -"å¦å¯ä½¿ç”¨æœƒå°‡å‹•ç•«åŒ¯å…¥ç¨ç«‹æª”案的匯入é è¨è¨å®šã€‚" +"或者也å¯ä½¿ç”¨æœƒå°‡å‹•ç•«åŒ¯å…¥ç¨ç«‹æª”案的匯入é è¨è¨å®šã€‚" #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" @@ -612,11 +612,11 @@ msgstr "最佳化動畫工具" #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" -msgstr "最大線性錯誤:" +msgstr "最大線性誤差:" #: editor/animation_track_editor.cpp msgid "Max. Angular Error:" -msgstr "最大角度錯誤:" +msgstr "最大角度誤差:" #: editor/animation_track_editor.cpp msgid "Max Optimizable Angle:" @@ -770,13 +770,13 @@ msgstr "å¿…é ˆæŒ‡å®šç›®æ¨™ç¯€é»žæ–¹æ³•ã€‚" #: editor/connections_dialog.cpp msgid "Method name must be a valid identifier." -msgstr "方法åç¨±å¿…é ˆç‚ºæœ‰æ•ˆè˜åˆ¥ç¬¦ã€‚" +msgstr "方法åç¨±å¿…é ˆç‚ºæœ‰æ•ˆè˜åˆ¥é …。" #: editor/connections_dialog.cpp msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." -msgstr "找ä¸åˆ°ç›®æ¨™æ–¹æ³•ï¼è«‹æŒ‡å®šä¸€å€‹æœ‰æ•ˆçš„方法ã€æˆ–å°‡è…³æœ¬é™„åŠ è‡³ç›®æ¨™ç¯€é»žä¸Šã€‚" +msgstr "找ä¸åˆ°ç›®æ¨™æ–¹æ³•ï¼è«‹æŒ‡å®šä¸€å€‹æœ‰æ•ˆçš„æ–¹æ³•ï¼Œæˆ–å°‡è…³æœ¬é™„åŠ è‡³ç›®æ¨™ç¯€é»žä¸Šã€‚" #: editor/connections_dialog.cpp msgid "Connect to Node:" @@ -1037,16 +1037,21 @@ msgid "Owners Of:" msgstr "為下列之æ“有者:" #: editor/dependency_editor.cpp -msgid "Remove selected files from the project? (Can't be restored)" +#, fuzzy +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "確定è¦å°‡æ‰€é¸æª”案自專案ä¸ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰" #: editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" -"Remove them anyway? (no undo)" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." msgstr "" -"有其他資æºéœ€è¦æ£åœ¨åˆªé™¤çš„檔案以æ£å¸¸é‹ä½œã€‚\n" +"有其他資æºéœ€è¦æ£åœ¨åˆªé™¤çš„檔案æ‰èƒ½æ£å¸¸é‹ä½œã€‚\n" "ä¾ç„¶è¦ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰" #: editor/dependency_editor.cpp @@ -1059,7 +1064,7 @@ msgstr "載入時發生錯誤:" #: editor/dependency_editor.cpp msgid "Load failed due to missing dependencies:" -msgstr "由於缺ä¹ä¸‹åˆ—相ä¾æ€§å…§å®¹è€Œç„¡æ³•è¼‰å…¥ï¼š" +msgstr "缺ä¹ä¸‹åˆ—相ä¾æ€§å…§å®¹ï¼Œç„¡æ³•è¼‰å…¥ï¼š" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1123,7 +1128,7 @@ msgstr "Godot Engine è²¢ç»è€…" #: editor/editor_about.cpp msgid "Project Founders" -msgstr "專案創始人" +msgstr "專案發起人" #: editor/editor_about.cpp msgid "Lead Developer" @@ -1138,7 +1143,7 @@ msgstr "專案管ç†å“¡ " #: editor/editor_about.cpp msgid "Developers" -msgstr "開發者" +msgstr "開發人員" #: editor/editor_about.cpp msgid "Authors" @@ -1216,7 +1221,7 @@ msgstr "ç„¡æ³•é–‹å•Ÿå¥—ä»¶æª”æ¡ˆï¼Œéž ZIP æ ¼å¼ã€‚" #: editor/editor_asset_installer.cpp msgid "%s (Already Exists)" -msgstr "%s(已經å˜åœ¨ï¼‰" +msgstr "%s(已å˜åœ¨ï¼‰" #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -1249,7 +1254,7 @@ msgstr "安è£" #: editor/editor_asset_installer.cpp msgid "Package Installer" -msgstr "套件安è£" +msgstr "套件安è£ç¨‹å¼" #: editor/editor_audio_buses.cpp msgid "Speakers" @@ -1269,7 +1274,7 @@ msgstr "更改音訊匯æµæŽ’音é‡" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "切æ›éŸ³è¨ŠåŒ¯æµæŽ’ Solo" +msgstr "é–‹å•Ÿï¼é—œé–‰éŸ³è¨ŠåŒ¯æµæŽ’ç¨å¥" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" @@ -1301,7 +1306,7 @@ msgstr "拖放以é‡æ–°æŽ’列。" #: editor/editor_audio_buses.cpp msgid "Solo" -msgstr "Solo" +msgstr "ç¨å¥" #: editor/editor_audio_buses.cpp msgid "Mute" @@ -1444,7 +1449,7 @@ msgstr "ä¸å¯èˆ‡ç¾å˜çš„全域常數å稱è¡çªã€‚" #: editor/editor_autoload_settings.cpp msgid "Keyword cannot be used as an autoload name." -msgstr "é—œéµå—無法作為 Autoload å稱。" +msgstr "ä¸å¯ä½¿ç”¨é—œéµå—作為 Autoload å稱。" #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" @@ -1456,7 +1461,7 @@ msgstr "é‡æ–°å‘½å Autoload" #: editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "觸發全域 AutoLoad" +msgstr "é–‹å•Ÿï¼é—œé–‰å…¨åŸŸ AutoLoad" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" @@ -1596,33 +1601,30 @@ msgstr "" "請在專案è¨å®šä¸å•Ÿç”¨ã€ŒImport Etcã€æˆ–是ç¦ç”¨ã€ŒDriver Fallback Enabledã€ã€‚" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"目標平å°ä¸Šçš„ GLES2 å¿…é ˆä½¿ç”¨ã€ŒETCã€ç´‹ç†å£“縮。請在專案è¨å®šä¸å•Ÿç”¨ã€ŒImport " -"Etcã€ã€‚" +"目標平å°ä¸Šçš„ GLES2 å¿…é ˆä½¿ç”¨ã€ŒPVRTCã€ç´‹ç†å£“縮。請在專案è¨å®šä¸å•Ÿç”¨ã€ŒImport " +"Pvrtcã€ã€‚" #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"目標平å°ä¸Šçš„ GLES3 å¿…é ˆä½¿ç”¨ã€ŒETC2ã€ç´‹ç†å£“縮。請在專案è¨å®šä¸å•Ÿç”¨ã€ŒImport Etc " -"2ã€ã€‚" +"目標平å°ä¸Šçš„ GLES3 å¿…é ˆä½¿ç”¨ã€ŒETC2ã€æˆ–「PVRTCã€ç´‹ç†å£“縮。請在專案è¨å®šä¸å•Ÿç”¨" +"「Import Etc 2ã€æˆ–「Import Pvrtcã€ã€‚" #: editor/editor_export.cpp -#, fuzzy 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 "" -"目標平å°ä¸Šçš„ GLES2 å›žé€€é©…å‹•å™¨åŠŸèƒ½å¿…é ˆä½¿ç”¨ã€ŒETCã€ç´‹ç†å£“縮。\n" -"請在專案è¨å®šä¸å•Ÿç”¨ã€ŒImport Etcã€æˆ–是ç¦ç”¨ã€ŒDriver Fallback Enabledã€ã€‚" +"目標平å°ä¸Šçš„ GLES2 å›žé€€é©…å‹•å™¨åŠŸèƒ½å¿…é ˆä½¿ç”¨ã€ŒPVRTCã€ç´‹ç†å£“縮。\n" +"請在專案è¨å®šä¸å•Ÿç”¨ã€ŒImport Pvrtcã€æˆ–是ç¦ç”¨ã€ŒDriver Fallback Enabledã€ã€‚" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1662,15 +1664,15 @@ msgstr "æ£åœ¨ç·¨è¼¯å ´æ™¯æ¨¹" #: editor/editor_feature_profile.cpp msgid "Node Dock" -msgstr "節點 Dock" +msgstr "節點åœé§åˆ—" #: editor/editor_feature_profile.cpp msgid "FileSystem Dock" -msgstr "檔案系統 Dock" +msgstr "檔案系統åœé§åˆ—" #: editor/editor_feature_profile.cpp msgid "Import Dock" -msgstr "匯入 Dock" +msgstr "匯入åœé§åˆ—" #: editor/editor_feature_profile.cpp msgid "Erase profile '%s'? (no undo)" @@ -1682,7 +1684,7 @@ msgstr "è¨å®šæª”å¿…é ˆç‚ºæœ‰æ•ˆæª”å,且ä¸å¯åŒ…å«ã€Œ.ã€" #: editor/editor_feature_profile.cpp msgid "Profile with this name already exists." -msgstr "已有相åŒå稱的è¨å®šæª”å˜åœ¨ã€‚" +msgstr "å·²å˜åœ¨ç›¸åŒå稱的è¨å®šæª”。" #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" @@ -1872,7 +1874,7 @@ msgstr "上一層" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "顯示ï¼éš±è—éš±è—檔案" +msgstr "顯示ï¼å–消顯示隱è—檔案" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" @@ -1904,7 +1906,7 @@ msgstr "å‰å¾€ä¸‹ä¸€å€‹è³‡æ–™å¤¾ã€‚" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Go to parent folder." -msgstr "å‰å¾€ä¸Šå±¤è³‡æ–™å¤¾ã€‚" +msgstr "å‰å¾€ä¸Šä¸€å±¤è³‡æ–™å¤¾ã€‚" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Refresh files." @@ -1952,7 +1954,7 @@ msgstr "掃æ原始檔" msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" -msgstr "由於多個匯入器以ä¸åŒçš„型別指å‘檔案 %s,已ä¸æ¢åŒ¯å…¥" +msgstr "由於有多個匯入器å°æª”案 %s æ供了ä¸åŒçš„型別,已ä¸æ¢åŒ¯å…¥" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" @@ -2197,7 +2199,7 @@ msgstr "好" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" -msgstr "ä¿å˜è³‡æºéŒ¯èª¤ï¼" +msgstr "ä¿å˜è³‡æºæ™‚發生錯誤ï¼" #: editor/editor_node.cpp msgid "" @@ -2255,7 +2257,7 @@ msgstr "æ£åœ¨å»ºç«‹ç¸®åœ–" #: editor/editor_node.cpp msgid "This operation can't be done without a tree root." -msgstr "ç„¡æ¨¹ç‹€æ ¹ç›®éŒ„ç„¡æ³•é€²è¡Œæ¤æ“作。" +msgstr "ç„¡æ¨¹ç‹€æ ¹ç›®éŒ„æ™‚ç„¡æ³•é€²è¡Œæ¤æ“作。" #: editor/editor_node.cpp msgid "" @@ -2273,7 +2275,7 @@ msgstr "無法ä¿å˜å ´æ™¯ã€‚å¯èƒ½æ˜¯ç”±æ–¼ç›¸ä¾æ€§ï¼ˆå¯¦é«”或繼承)無法 #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "無法複寫開啟ä¸çš„å ´æ™¯ï¼" +msgstr "ç„¡æ³•è¤‡å¯«æœªé—œé–‰çš„å ´æ™¯ï¼" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2289,22 +2291,28 @@ msgstr "ç„¡æ³•åŠ è¼‰è¦åˆä½µçš„圖塊集ï¼" #: editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "ä¿å˜ä¿å˜åœ–塊集時發生錯誤ï¼" +msgstr "ä¿å˜åœ–塊集時發生錯誤ï¼" #: editor/editor_node.cpp -msgid "Error trying to save layout!" -msgstr "嘗試ä¿å˜é…置時出錯ï¼" +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." -msgstr "已覆蓋é è¨çš„編輯器é…置。" +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 default layout to base settings." +#, fuzzy +msgid "Restored the Default layout to its base settings." msgstr "已將é è¨é…置還原至基本è¨å®šã€‚" #: editor/editor_node.cpp @@ -2314,7 +2322,7 @@ msgid "" "understand this workflow." msgstr "" "該資æºå±¬æ–¼å·²åŒ¯å…¥çš„å ´æ™¯ï¼Œå› æ¤ä¸å¯ç·¨è¼¯ã€‚ \n" -"è«‹é–±è®€æœ‰é—œåŒ¯å…¥å ´æ™¯çš„èªªæ˜Žæ–‡ä»¶ä»¥æ›´çžè§£è©²æµç¨‹ã€‚" +"è«‹é–±è®€æœ‰é—œåŒ¯å…¥å ´æ™¯çš„èªªæ˜Žæ–‡ä»¶ä»¥æ›´çžè§£è©²å·¥ä½œæµç¨‹ã€‚" #: editor/editor_node.cpp msgid "" @@ -2338,7 +2346,7 @@ msgid "" "understand this workflow." msgstr "" "è©²å ´æ™¯è‡ªå¤–éƒ¨åŒ¯å…¥ï¼Œå› æ¤åšå‡ºçš„改動將ä¸æœƒä¿å˜ã€‚\n" -"實例化或繼承後將å¯å°å…¶åšå‡ºä¿®æ”¹ã€‚\n" +"å¯¦ä¾‹åŒ–æˆ–ç¹¼æ‰¿è©²å ´æ™¯å³å¯å°å…¶åšå‡ºä¿®æ”¹ã€‚\n" "è«‹é–±è®€èˆ‡åŒ¯å…¥ç›¸é—œçš„èªªæ˜Žæ–‡ä»¶ä»¥æ›´åŠ çžè§£è©²å·¥ä½œæµç¨‹ã€‚" #: editor/editor_node.cpp @@ -2348,7 +2356,7 @@ msgid "" "this workflow." msgstr "" "該資æºè‡ªå¤–éƒ¨åŒ¯å…¥ï¼Œå› æ¤åšå‡ºçš„改動將ä¸æœƒä¿å˜ã€‚\n" -"請閱讀有關åµéŒ¯çš„說明文件以更çžè§£è©²æµç¨‹ã€‚" +"請閱讀有關åµéŒ¯çš„說明文件以更çžè§£è©²å·¥ä½œæµç¨‹ã€‚" #: editor/editor_node.cpp msgid "There is no defined scene to run." @@ -2392,7 +2400,7 @@ msgstr "å·²ä¿å˜ %s 個已修改的資æºã€‚" #: editor/editor_node.cpp msgid "A root node is required to save the scene." -msgstr "ä¿å˜å ´æ™¯éœ€è¦æ ¹ç¯€é»žã€‚" +msgstr "å¿…é ˆæœ‰æ ¹ç¯€é»žæ‰å¯ä¿å˜å ´æ™¯ã€‚" #: editor/editor_node.cpp msgid "Save Scene As..." @@ -2412,7 +2420,7 @@ msgstr "æ¤å ´æ™¯å¾žæœªè¢«ä¿å˜ã€‚是å¦æ–¼åŸ·è¡Œå‰å…ˆä¿å˜ï¼Ÿ" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "該æ“ä½œå¿…é ˆè¦æœ‰å ´æ™¯æ‰å¯å®Œæˆã€‚" +msgstr "å¿…é ˆè¦æœ‰å ´æ™¯æ‰å¯å®Œæˆè©²æ“作。" #: editor/editor_node.cpp msgid "Export Mesh Library" @@ -2482,7 +2490,7 @@ msgstr "開啟專案管ç†å“¡å‰è¦å…ˆä¿å˜ä»¥ä¸‹å ´æ™¯å—Žï¼Ÿ" msgid "" "This option is deprecated. Situations where refresh must be forced are now " "considered a bug. Please report." -msgstr "該é¸é …å·²åœæ¢ç¶è·ã€‚ç›®å‰å·²å°‡éœ€å¼·åˆ¶é‡æ–°æ•´ç†ä¹‹ç‹€æ³è¦–為 Bugï¼Œè«‹å›žå ±è©²å•é¡Œã€‚" +msgstr "該é¸é …å·²åœæ¢ç¶è·ã€‚ç›®å‰å·²å°‡éœ€å¼·åˆ¶é‡æ–°æ•´ç†çš„情æ³è¦–為 Bugï¼Œè«‹å›žå ±è©²å•é¡Œã€‚" #: editor/editor_node.cpp msgid "Pick a Main Scene" @@ -2634,7 +2642,7 @@ msgstr "其他 %d 個檔案" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "Dock ä½ç½®" +msgstr "åœé§åˆ—ä½ç½®" #: editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2674,7 +2682,7 @@ msgstr "篩é¸æª”案..." #: editor/editor_node.cpp msgid "Operations with scene files." -msgstr "æ“ä½œå ´æ™¯æ–‡ä»¶ã€‚" +msgstr "æ“ä½œå ´æ™¯æª”æ¡ˆã€‚" #: editor/editor_node.cpp msgid "New Scene" @@ -2792,7 +2800,7 @@ msgstr "" "當開啓該é¸é …後,一éµéƒ¨ç½²æ‰€ç”¢ç”Ÿçš„執行檔會嘗試連線至本電腦之 IP ä½ç½®ä»¥å°åŸ·è¡Œä¸" "的專案進行除錯。\n" "該é¸é …旨在進行é 端除錯(通常é…åˆè¡Œå‹•è£ç½®ä½¿ç”¨ï¼‰ã€‚\n" -"è‹¥è¦ä½¿ç”¨æœ¬æ©Ÿ GDScript 除錯工具,則ä¸è¨±å•Ÿç”¨è©²é¸é …。" +"è‹¥è¦ä½¿ç”¨æœ¬æ©Ÿ GDScript 除錯工具,則ä¸éœ€å•Ÿç”¨è©²é¸é …。" #: editor/editor_node.cpp msgid "Small Deploy with Network Filesystem" @@ -2809,8 +2817,8 @@ msgid "" msgstr "" "啟用該é¸é …後,一éµéƒ¨ç½²è‡³ Android 時的å¯åŸ·è¡Œæª”å°‡ä¸æœƒåŒ…å«å°ˆæ¡ˆè³‡æ–™ã€‚\n" "專案之檔案系統將由本編輯器é€éŽç¶²è·¯æ供。\n" -"部署至 Android å¹³å°éœ€ä½¿ç”¨ USB 線以ç²å¾—更快速的效能。該é¸é …é©ç”¨æ–¼æœ‰å¤§åž‹ç´ æçš„" -"專案,å¯åŠ 速測試。" +"部署至 Android å¹³å°éœ€ä½¿ç”¨ USB 線以ç²å¾—更快速的效能。該é¸é …ç”¨æ–¼æœ‰å¤§åž‹ç´ æçš„å°ˆ" +"案時å¯åŠ 速測試。" #: editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -2890,7 +2898,7 @@ msgstr "é–‹å•Ÿï¼é—œé–‰ç³»çµ±ä¸»æŽ§å°" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "é–‹å•Ÿ 編輯器資料ï¼ç·¨è¼¯å™¨è¨å®š 資料夾" +msgstr "開啟編輯器資料ï¼ç·¨è¼¯å™¨è¨å®šè³‡æ–™å¤¾" #: editor/editor_node.cpp msgid "Open Editor Data Folder" @@ -3192,7 +3200,7 @@ msgstr "全部" #: editor/editor_profiler.cpp msgid "Self" -msgstr "自身" +msgstr "僅自己" #: editor/editor_profiler.cpp msgid "Frame #:" @@ -3220,7 +3228,7 @@ msgstr "圖層" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "ä½ %d,值 %d" +msgstr "ä½å…ƒ %d,值 %d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -3238,14 +3246,14 @@ msgstr "無效的 RID" msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." -msgstr "所é¸çš„資æºï¼ˆ%s)並ä¸ç¬¦åˆä»»è©²å±¬æ€§ï¼ˆ%s)的任何型別。" +msgstr "所é¸è³‡æºï¼ˆ%s)ä¸ç¬¦åˆä»»è©²å±¬æ€§ï¼ˆ%s)的任何型別。" #: 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 "" -"無法為欲ä¿å˜ç‚ºæª”案之資æºå»ºç«‹ ViewportTexture。\n" +"無法為欲ä¿å˜æˆæª”案之資æºå»ºç«‹ ViewportTexture。\n" "資æºå¿…é ˆå±¬æ–¼ä¸€å€‹å ´æ™¯ã€‚" #: editor/editor_properties.cpp @@ -3255,7 +3263,7 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" -"無法為該資æºå»ºç«‹æª¢è¦–å€ç´‹ç† (ViewportTexture)ï¼Œå› å…¶æœªè¨å®šå°æ‡‰çš„æœ¬åœ°å ´æ™¯ã€‚\n" +"無法為該資æºå»ºç«‹ ViewportTextureï¼Œå› å…¶æœªè¨å®šç‚ºå°æ‡‰æœ¬æ©Ÿä¹‹å ´æ™¯ã€‚\n" "請開啟其(與其至節點的所有資æºï¼‰ã€ŒLocal to Sceneã€å±¬æ€§ã€‚" #: editor/editor_properties.cpp editor/property_editor.cpp @@ -3332,7 +3340,7 @@ msgid "" "as runnable." msgstr "" "為找到å¯åŸ·è¡Œæ–¼è©²å¹³å°çš„匯出é è¨è¨å®šã€‚\n" -"請在 [匯出] é¸å–®ä¸æ–°å¢žä¸€å€‹å¯åŸ·è¡Œçš„é è¨è¨å®šï¼Œæœƒå°‡ç¾æœ‰çš„é è¨è¨å®šè¨ç‚ºå¯åŸ·è¡Œã€‚" +"請在 [匯出] é¸å–®ä¸æ–°å¢žä¸€å€‹å¯åŸ·è¡Œçš„é è¨è¨å®šï¼Œæˆ–å°‡ç¾æœ‰çš„é è¨è¨å®šè¨ç‚ºå¯åŸ·è¡Œã€‚" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3360,7 +3368,7 @@ msgstr "是å¦æœªæ–°å¢žã€Œ_runã€æ–¹æ³•ï¼Ÿ" #: editor/editor_spin_slider.cpp msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." -msgstr "æŒ‰ä½ Ctrl 以å–æ•´æ•¸ã€‚æŒ‰ä½ Shift 以使用更精確的改動。" +msgstr "æŒ‰ä½ Ctrl 以å–æ•´æ•¸ã€‚æŒ‰ä½ Shift 以進行更精確的改動。" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -3533,7 +3541,7 @@ msgstr "已連線" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Requesting..." -msgstr "æ£åœ¨è«‹æ±‚…" +msgstr "æ£åœ¨è¦æ±‚…" #: editor/export_template_manager.cpp msgid "Downloading" @@ -3597,7 +3605,7 @@ msgstr "狀態:檔案匯入失敗。請修æ£æª”案並手動é‡æ–°åŒ¯å…¥ã€‚" #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." -msgstr "無法移動ï¼é‡æ–°å‘½åæ ¹è³‡æºã€‚" +msgstr "無法移動或é‡æ–°å‘½åæ ¹è³‡æºã€‚" #: editor/filesystem_dock.cpp msgid "Cannot move a folder into itself." @@ -3692,6 +3700,11 @@ msgid "Move To..." msgstr "移動至..." #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Move to Trash" +msgstr "移動 Autoload" + +#: editor/filesystem_dock.cpp msgid "New Scene..." msgstr "æ–°å¢žå ´æ™¯..." @@ -3866,7 +3879,7 @@ msgstr "群組ä¸çš„節點" #: editor/groups_editor.cpp msgid "Empty groups will be automatically removed." -msgstr "空群組將被自動移除。" +msgstr "空群組將自動移除。" #: editor/groups_editor.cpp msgid "Group Editor" @@ -3943,11 +3956,11 @@ msgstr "無法載入 Post-Import 腳本:" #: editor/import/resource_importer_scene.cpp msgid "Invalid/broken script for post-import (check console):" -msgstr "匯入後腳本無效或æ毀(請檢查主控å°ï¼‰ï¼š" +msgstr "Post-Import 腳本無效或æ毀(請檢查主控å°ï¼‰ï¼š" #: editor/import/resource_importer_scene.cpp msgid "Error running post-import script:" -msgstr "執行匯入後腳本時發生錯誤:" +msgstr "執行 Post-Import 腳本時發生錯誤:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" @@ -4171,11 +4184,11 @@ msgstr "ç§»å‹•ç¯€é»žé ‚é»ž" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Limits" -msgstr "修改混åˆç©ºé–“ 1D é™åˆ¶" +msgstr "修改 BlendSpace1D é™åˆ¶" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Labels" -msgstr "修改混åˆç©ºé–“ 1D 標籤" +msgstr "修改 BlendSpace1D 標籤" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4195,11 +4208,11 @@ msgstr "æ–°å¢žå‹•ç•«é ‚é»ž" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Remove BlendSpace1D Point" -msgstr "移除混åˆç©ºé–“ 1D é ‚é»ž" +msgstr "移除 BlendSpace1D é ‚é»ž" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" -msgstr "移動混åˆç©ºé–“ 1D ç¯€é»žé ‚é»ž" +msgstr "移動 BlendSpace1D ç¯€é»žé ‚é»ž" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4209,7 +4222,7 @@ msgid "" "AnimationTree is inactive.\n" "Activate to enable playback, check node warnings if activation fails." msgstr "" -"動畫樹未啟用。\n" +"AnimationTree 未啟用。\n" "請先啟用以æ’放,若啟用失敗請檢查節點è¦å‘Šè¨Šæ¯ã€‚" #: editor/plugins/animation_blend_space_1d_editor.cpp @@ -4220,7 +4233,7 @@ 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 "é¸æ“‡èˆ‡ç§»å‹•é ‚é»žï¼Œä½¿ç”¨æ»‘é¼ å³éµå»ºç«‹é ‚點。" +msgstr "é¸æ“‡ä¸¦ç§»å‹•é ‚é»žï¼Œä½¿ç”¨æ»‘é¼ å³éµå»ºç«‹é ‚點。" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp @@ -4313,7 +4326,7 @@ msgstr "輸出節點無法被新增至混åˆæ¨¹ã€‚" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Add Node to BlendTree" -msgstr "新增節點至混åˆæ¨¹" +msgstr "新增節點至 BlendTree" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Node Moved" @@ -4442,7 +4455,7 @@ msgstr "é‡æ–°å‘½åå‹•ç•«" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "æ··åˆä¸‹ä¸€å€‹æ”¹å‹•" +msgstr "æ··åˆä¸‹ä¸€å€‹æ›´æ”¹" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" @@ -4570,7 +4583,7 @@ msgstr "僅顯示差異" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "強制使用白色調整" +msgstr "強制使用白色調變" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" @@ -4688,11 +4701,11 @@ msgstr "移除所é¸çš„ç¯€é»žæˆ–è½‰å ´ã€‚" #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." -msgstr "é–‹å•Ÿï¼é—œé–‰è‡ªå‹•æ’放動畫於開始ã€é‡æ–°å•Ÿå‹•æˆ–æœå°‹è‡³ 0 時。" +msgstr "é–‹å•Ÿï¼å–消動畫在開始ã€é‡æ–°å•Ÿå‹•æˆ–æœå°‹è‡³ 0 時的自動æ’放。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." -msgstr "è¨å®šçµå°¾å‹•ç•«ã€‚å°æ–¼åè½‰å ´å¾ˆæœ‰ç”¨ã€‚" +msgstr "è¨å®šçµå°¾å‹•ç•«ã€‚é©ç”¨æ–¼åè½‰å ´ã€‚" #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition: " @@ -4869,11 +4882,11 @@ msgstr "無法解æžä¸»æ©Ÿå稱:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "請求失敗,回傳代碼:" +msgstr "è¦æ±‚失敗,回傳代碼:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed." -msgstr "請求失敗。" +msgstr "è¦æ±‚失敗。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Cannot save response to:" @@ -4885,7 +4898,7 @@ msgstr "寫入錯誤。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" -msgstr "請求失敗,éŽå¤šé‡æ–°å°Žå‘" +msgstr "è¦æ±‚失敗,éŽå¤šé‡æ–°å°Žå‘" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Redirect loop." @@ -4893,7 +4906,7 @@ msgstr "é‡æ–°å°Žå‘循環。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, timeout" -msgstr "請求失敗,逾時" +msgstr "è¦æ±‚失敗,逾時" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Timeout." @@ -4933,7 +4946,7 @@ msgstr "æ£åœ¨è§£æž..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Error making request" -msgstr "建立請求時發生錯誤" +msgstr "建立è¦æ±‚時發生錯誤" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" @@ -5001,7 +5014,7 @@ msgstr "全部" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "無「%sã€ç›¸é—œçš„çµæžœã€‚" +msgstr "找ä¸åˆ°èˆ‡ã€Œ%sã€ç›¸é—œçš„çµæžœã€‚" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5051,15 +5064,15 @@ msgid "" "path from the BakedLightmap properties." msgstr "" "無法判斷光照圖的ä¿å˜è·¯å¾‘。\n" -"è«‹å°‡å ´æ™¯ä¿å˜ï¼ˆåœ–片將ä¿å˜æ–¼ç›¸åŒè³‡æ–™å¤¾ï¼‰ï¼Œæˆ–是在 BackedLightmap 屬性內é¸æ“‡ä¸€å€‹" -"ä¿å˜è·¯å¾‘。" +"è«‹ä¿å˜å ´æ™¯ï¼ˆåœ–片將ä¿å˜æ–¼ç›¸åŒè³‡æ–™å¤¾ï¼‰ï¼Œæˆ–是在 BackedLightmap 屬性內é¸æ“‡ä¸€å€‹ä¿" +"å˜è·¯å¾‘。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." msgstr "" -"ç„¡å¯è£½ä½œä¹‹ç¶²æ ¼ã€‚請確ä¿é€™äº›ç¶²æ ¼åŒ…å« UV2 通é“並已開啟「Bake Lightã€æ——標。" +"ç„¡å¯çƒ˜ç„™ä¹‹ç¶²æ ¼ã€‚請確ä¿é€™äº›ç¶²æ ¼åŒ…å« UV2 通é“並已開啟「Bake Lightã€æ——標。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." @@ -5067,7 +5080,7 @@ msgstr "建立光照圖失敗,請確ä¿è©²è·¯å¾‘å¯å¯«å…¥ã€‚" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "建立光照圖" +msgstr "烘焙光照圖" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5136,50 +5149,43 @@ msgstr "建立水平與垂直åƒè€ƒç·š" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "å°‡ CanvasItem「%sã€çš„ Pivot Offset è¨ç‚º (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "旋轉 CanvasItem" +msgstr "旋轉 %d 個 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "旋轉 CanvasItem" +msgstr "旋轉 CanvasItem「%dã€ç‚º %d 度" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "移動 CanvasItem" +msgstr "移動 CanvasItem「%sã€çš„錨點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "縮放 Node2D「%sã€ç‚º (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "縮放 Control「%sã€ç‚º (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "縮放 CanvasItem" +msgstr "縮放 %d 個 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "縮放 CanvasItem" +msgstr "縮放 CanvasItem「%sã€ç‚º (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "移動 CanvasItem" +msgstr "移動 %d 個 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "移動 CanvasItem" +msgstr "移動 CanvasItem「%sã€è‡³ (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5809,7 +5815,7 @@ msgstr "å³éµé»žæ“Šä»¥æ–°å¢žæŽ§åˆ¶é»ž" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "製作 GI 探查" +msgstr "烘焙 GI 探查" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -6151,7 +6157,7 @@ msgstr "產生矩形å¯è¦‹æ€§" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" -msgstr "僅å¯å°‡ç‚º ParticlesMaterial 處ç†ææ–™è¨å®šé»ž" +msgstr "僅å¯è¨ç‚ºæŒ‡å‘ ProticlesMaterial 處ç†ææ–™" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6442,18 +6448,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" @@ -6498,14 +6502,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 "轉æ›ç‚º Polygon2D" +msgstr "å°‡ UV 複製至多邊形" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -6911,7 +6913,7 @@ msgstr "跳至函å¼" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." -msgstr "åªå¯æ‹–移來自檔案系統的資æºã€‚" +msgstr "åªå¯æ‹–放來自檔案系統的資æºã€‚" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -7828,7 +7830,7 @@ msgstr "分隔線:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" -msgstr "TextureRegion" +msgstr "ç´‹ç†è²¼åœ–å€åŸŸ" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" @@ -8045,13 +8047,12 @@ msgid "Paint Tile" msgstr "繪製圖塊" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+å·¦éµï¼šç›´ç·šç¹ªè£½\n" -"Shift+Ctrl+å·¦éµï¼šçŸ©å½¢ç¹ªåœ–" +"Shift+Command+å·¦éµï¼šçŸ©å½¢ç¹ªåœ–" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8573,7 +8574,6 @@ msgid "Add Node to Visual Shader" msgstr "將節點新增至視覺著色器" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" msgstr "已移動節點" @@ -8595,9 +8595,8 @@ msgid "Visual Shader Input Type Changed" msgstr "已修改視覺著色器輸入類型" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "è¨å®šå‡å‹»å稱" +msgstr "已更改 UniformRef å稱" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9288,7 +9287,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "ç¾æœ‰å‡å‹»çš„åƒç…§ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9732,7 +9731,7 @@ msgstr "" msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." -msgstr "該專案è¨å®šæ˜¯ç”±æ–°ç‰ˆæœ¬çš„引擎所建立,其è¨å®šç„¡æ³•ç›¸å®¹æ–¼é€™å€‹ç‰ˆæœ¬ã€‚" +msgstr "該專案è¨å®šæ˜¯ç”±æ–°ç‰ˆæœ¬çš„ Godot 所建立,其è¨å®šç„¡æ³•ç›¸å®¹æ–¼é€™å€‹ç‰ˆæœ¬ã€‚" #: editor/project_manager.cpp msgid "" @@ -9741,7 +9740,7 @@ msgid "" "the \"Application\" category." msgstr "" "ç„¡æ³•åŸ·è¡Œå°ˆæ¡ˆï¼šæœªå®šç¾©ä¸»å ´æ™¯ã€‚\n" -"請編輯專案並在「應用程å¼ã€åˆ†é¡žä¸çš„專案è¨å®šå…§è¨å®šä¸»å ´æ™¯ã€‚" +"請編輯專案並在 [專案è¨å®š] 的「Applicationã€åˆ†é¡žä¸è¨å®šä¸»å ´æ™¯ã€‚" #: editor/project_manager.cpp msgid "" @@ -10494,7 +10493,8 @@ msgid "" "Enabling \"Load As Placeholder\" will disable \"Editable Children\" and " "cause all properties of the node to be reverted to their default." msgstr "" -"啟用「載入為佔ä½ã€å°‡ç¦ç”¨ã€Œå¯ç·¨è¼¯å節點ã€ä¸¦å°Žè‡´å…¶æ‰€æœ‰ç¯€é»žéƒ½è¢«é‚„原為其é è¨å€¼ã€‚" +"啟用「Load As Placeholderã€å°‡ç¦ç”¨ã€ŒEditable Childrenã€ä¸¦å°Žè‡´å…¶æ‰€æœ‰ç¯€é»žéƒ½è¢«é‚„" +"原為其é è¨å€¼ã€‚" #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -11349,7 +11349,7 @@ msgstr "製作 NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "æ¸…é™¤å°Žèˆªç¶²æ ¼ (Navigation Mesh)。" +msgstr "æ¸…é™¤å°Žèˆªç¶²æ ¼ã€‚" #: modules/recast/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -11385,15 +11385,15 @@ msgstr "æ£åœ¨å»ºç«‹è¼ªå»“..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "æ£åœ¨å»ºç«‹å¤šé‚Šå½¢ç¶²æ ¼ (Polymesh)..." +msgstr "æ£åœ¨å»ºç«‹å¤šé‚Šå½¢ç¶²æ ¼..." #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "æ£åœ¨è½‰æ›ç‚ºåŽŸç”Ÿå°Žèˆªç¶²æ ¼ (Native Navigation Mesh)..." +msgstr "æ£åœ¨è½‰æ›ç‚ºåŽŸç”Ÿå°Žèˆªç¶²æ ¼..." #: modules/recast/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "å°Žèˆªç¶²æ ¼ (Navigation Mesh) 產生器è¨å®šï¼š" +msgstr "å°Žèˆªç¶²æ ¼ç”¢ç”Ÿå™¨è¨å®šï¼š" #: modules/recast/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -11768,11 +11768,11 @@ msgstr "無效的索引屬性å稱「%sã€ï¼Œæ–¼ç¯€é»žã€Œ%sã€ã€‚" #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr ": 無效的引數型別: " +msgstr ": 無效的引數型別: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr ": 無效的引數: " +msgstr ": 無效的引數: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -11857,6 +11857,14 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "編輯器è¨å®šä¸ç”¨æ–¼è‡ªå®šç¾©è¨å®šä¹‹ Android SDK 路徑無效。" #: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11906,21 +11914,37 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "「Export AABã€åƒ…於「Use Custom Buildã€å•Ÿç”¨æ™‚å¯ç”¨ã€‚" + +#: platform/android/export/export.cpp +msgid "Unable to find the zipalign tool." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgid "Aligning APK..." msgstr "" #: platform/android/export/export.cpp -msgid "APK Expansion not compatible with Android App Bundle." +msgid "Unable to complete APK alignment." msgstr "" #: platform/android/export/export.cpp -msgid "Invalid filename! Android APK requires the *.apk extension." +msgid "Unable to delete unaligned APK." msgstr "" #: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "無效的檔案å稱ï¼Android App Bundle å¿…é ˆè¦æœ‰ *.aab 副檔å。" + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "APK Expansion 與 Android App Bundle ä¸ç›¸å®¹ã€‚" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "無效的檔案å稱ï¼Android APK å¿…é ˆè¦æœ‰ *.apk 副檔å。" + +#: platform/android/export/export.cpp msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." @@ -11953,13 +11977,13 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "移動輸出" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." -msgstr "" +msgstr "無法複製並更å匯出的檔案,請於 Gradle 專案資料夾內確èªè¼¸å‡ºã€‚" #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12101,7 +12125,7 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionPolygon2D 僅å¯ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅" -"æ–¼ Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D…ç‰ç¯€é»žä¸‹ä½œç‚ºå節點使" +"æ–¼ Area2D, StaticBody2D, RigidBody2D, KinematicBody2D…ç‰ç¯€é»žä¸‹ä½œç‚ºå節點使" "用。" #: scene/2d/collision_polygon_2d.cpp @@ -12115,7 +12139,7 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionShape2D 僅å¯ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 " -"Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D…ç‰ç¯€é»žä¸‹ä½œç‚ºå節點使用以æ" +"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D…ç‰ç¯€é»žä¸‹ä½œç‚ºå節點使用以æ" "供形狀。" #: scene/2d/collision_shape_2d.cpp @@ -12144,7 +12168,7 @@ msgstr "" msgid "" "A texture with the shape of the light must be supplied to the \"Texture\" " "property." -msgstr "有光照形狀的紋ç†å¿…é ˆæ供「紋ç†ã€å±¬æ€§ã€‚" +msgstr "有光照形狀的紋ç†å¿…é ˆæ供「Textureã€ï¼ˆç´‹ç†ï¼‰å±¬æ€§ã€‚" #: scene/2d/light_occluder_2d.cpp msgid "" @@ -12236,9 +12260,8 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D 僅å¯ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請將其" -"è¨ç‚º Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D… çš„å節點以賦予其形" -"狀。" +"打開「Use Parentã€çš„ TileMap 僅å¯ç‚ºæ¯ç´š CollisionObject2D æ供形狀。請將其è¨" +"為 Area2D, StaticBody2D, RigidBody2D, KinematicBody2D… çš„å節點以賦予其形狀。" #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -12367,7 +12390,7 @@ msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" -"GLES2 視訊驅動程å¼ä¸æ”¯æ´ GIProbs。\n" +"GLES2 視訊驅動程å¼ä¸æ”¯æ´ GIProbes。\n" "請改為使用 BakedLightmap。" #: scene/3d/interpolated_camera.cpp @@ -12619,7 +12642,9 @@ msgstr "(其它)" msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." -msgstr "無法載入專案è¨å®šä¸æŒ‡å®šçš„é è¨ç’°å¢ƒï¼ˆç®—繪 -> 環境 -> é è¨ç’°å¢ƒï¼‰ã€‚" +msgstr "" +"無法載入專案è¨å®šä¸æŒ‡å®šçš„é è¨ç’°å¢ƒ (Rendering -> Environment -> Default " +"Environment)。" #: scene/main/viewport.cpp msgid "" @@ -12664,6 +12689,12 @@ msgstr "Varying 變數åªå¯åœ¨é ‚點函å¼ä¸æŒ‡æ´¾ã€‚" msgid "Constants cannot be modified." msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚" +#~ msgid "Error trying to save layout!" +#~ msgstr "嘗試ä¿å˜é…置時出錯ï¼" + +#~ msgid "Default editor layout overridden." +#~ msgstr "已覆蓋é è¨çš„編輯器é…置。" + #~ msgid "Move pivot" #~ msgstr "移動軸心" diff --git a/main/main.cpp b/main/main.cpp index 3905366598..82be327cbb 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -334,8 +334,8 @@ void Main::print_help(const char *p_binary) { OS::get_singleton()->print(" -d, --debug Debug (local stdout debugger).\n"); OS::get_singleton()->print(" -b, --breakpoints Breakpoint list as source::line comma-separated pairs, no spaces (use %%20 instead).\n"); OS::get_singleton()->print(" --profiling Enable profiling in the script debugger.\n"); -#if DEBUG_ENABLED OS::get_singleton()->print(" --vk-layers Enable Vulkan Validation layers for debugging.\n"); +#if DEBUG_ENABLED OS::get_singleton()->print(" --gpu-abort Abort on GPU errors (usually validation layer errors), may help see the problem if your system freezes.\n"); #endif OS::get_singleton()->print(" --remote-debug <uri> Remote debug (<protocol>://<host/IP>[:<port>], e.g. tcp://127.0.0.1:6007).\n"); @@ -698,9 +698,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph } else if (I->get() == "-w" || I->get() == "--windowed") { // force windowed window init_windowed = true; -#ifdef DEBUG_ENABLED } else if (I->get() == "--vk-layers") { Engine::singleton->use_validation_layers = true; +#ifdef DEBUG_ENABLED } else if (I->get() == "--gpu-abort") { Engine::singleton->abort_on_gpu_errors = true; #endif @@ -1143,7 +1143,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph use_custom_res = false; input_map->load_default(); //keys for editor } else { - input_map->load_from_globals(); //keys for game + input_map->load_from_project_settings(); //keys for game } if (bool(ProjectSettings::get_singleton()->get("application/run/disable_stdout"))) { @@ -1890,14 +1890,6 @@ bool Main::start() { return false; } - if (_export_preset != "") { - if (positional_arg == "") { - String err = "Command line includes export parameter option, but no destination path was given.\n"; - err += "Please specify the binary's file path to export to. Aborting export."; - ERR_PRINT(err); - return false; - } - } #endif if (script == "" && game_path == "" && String(GLOBAL_DEF("application/run/main_scene", "")) != "") { @@ -2396,7 +2388,6 @@ bool Main::iteration() { for (int iters = 0; iters < advance.physics_steps; ++iters) { uint64_t physics_begin = OS::get_singleton()->get_ticks_usec(); - PhysicsServer3D::get_singleton()->sync(); PhysicsServer3D::get_singleton()->flush_queries(); PhysicsServer2D::get_singleton()->sync(); diff --git a/main/performance.cpp b/main/performance.cpp index 3d7971ced3..9de269ba5f 100644 --- a/main/performance.cpp +++ b/main/performance.cpp @@ -93,7 +93,6 @@ float Performance::_get_node_count() const { String Performance::get_monitor_name(Monitor p_monitor) const { ERR_FAIL_INDEX_V(p_monitor, MONITOR_MAX, String()); static const char *names[MONITOR_MAX] = { - "time/fps", "time/process", "time/physics_process", @@ -195,7 +194,6 @@ Performance::MonitorType Performance::get_monitor_type(Monitor p_monitor) const ERR_FAIL_INDEX_V(p_monitor, MONITOR_MAX, MONITOR_TYPE_QUANTITY); // ugly static const MonitorType types[MONITOR_MAX] = { - MONITOR_TYPE_QUANTITY, MONITOR_TYPE_TIME, MONITOR_TYPE_TIME, diff --git a/main/performance.h b/main/performance.h index 415b49b58c..40f1d5cb05 100644 --- a/main/performance.h +++ b/main/performance.h @@ -63,7 +63,6 @@ class Performance : public Object { public: enum Monitor { - TIME_FPS, TIME_PROCESS, TIME_PHYSICS_PROCESS, diff --git a/misc/dist/html/editor.html b/misc/dist/html/editor.html index 5b6ad2df65..d4234d08ac 100644 --- a/misc/dist/html/editor.html +++ b/misc/dist/html/editor.html @@ -258,7 +258,6 @@ } function startEditor(zip) { - const INDETERMINATE_STATUS_STEP_MS = 100; const persistentPaths = ['/home/web_user/.config', '/home/web_user/projects']; @@ -296,7 +295,6 @@ adjustCanvasDimensions(); setStatusMode = function setStatusMode(mode) { - if (statusMode === mode || !initializing) return; [statusProgress, statusIndeterminate, statusNotice].forEach(elem => { @@ -322,10 +320,9 @@ throw new Error('Invalid status mode'); } statusMode = mode; - } + }; function animateStatusIndeterminate(ms) { - var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8); if (statusIndeterminate.children[i].style.borderTopColor == '') { Array.prototype.slice.call(statusIndeterminate.children).forEach(child => { @@ -336,7 +333,6 @@ } setStatusNotice = function setStatusNotice(text) { - while (statusNotice.lastChild) { statusNotice.removeChild(statusNotice.lastChild); } @@ -348,7 +344,6 @@ }; engine.setProgressFunc((current, total) => { - if (total > 0) { statusProgressInner.style.width = current/total * 100 + '%'; setStatusMode('progress'); diff --git a/misc/dist/html/fixed-size.html b/misc/dist/html/fixed-size.html index 85064b34fd..9d0a946497 100644 --- a/misc/dist/html/fixed-size.html +++ b/misc/dist/html/fixed-size.html @@ -229,7 +229,6 @@ $GODOT_HEAD_INCLUDE var engine = new Engine; (function() { - const EXECUTABLE_NAME = '$GODOT_BASENAME'; const MAIN_PACK = '$GODOT_BASENAME.pck'; const EXTRA_ARGS = JSON.parse('$GODOT_ARGS'); @@ -247,7 +246,6 @@ $GODOT_HEAD_INCLUDE var indeterminiateStatusAnimationId = 0; function setStatusMode(mode) { - if (statusMode === mode || !initializing) return; [statusProgress, statusIndeterminate, statusNotice].forEach(elem => { @@ -288,7 +286,6 @@ $GODOT_HEAD_INCLUDE } function setStatusNotice(text) { - while (statusNotice.lastChild) { statusNotice.removeChild(statusNotice.lastChild); } @@ -300,7 +297,6 @@ $GODOT_HEAD_INCLUDE }; engine.setProgressFunc((current, total) => { - if (total > 0) { statusProgressInner.style.width = current/total * 100 + '%'; setStatusMode('progress'); diff --git a/misc/dist/html/full-size.html b/misc/dist/html/full-size.html index 58cf8ba4d8..7d29b35f61 100644 --- a/misc/dist/html/full-size.html +++ b/misc/dist/html/full-size.html @@ -142,7 +142,6 @@ $GODOT_HEAD_INCLUDE var setStatusNotice; (function() { - const EXECUTABLE_NAME = '$GODOT_BASENAME'; const MAIN_PACK = '$GODOT_BASENAME.pck'; const EXTRA_ARGS = JSON.parse('$GODOT_ARGS'); @@ -188,7 +187,6 @@ $GODOT_HEAD_INCLUDE } setStatusMode = function setStatusMode(mode) { - if (statusMode === mode || !initializing) return; [statusProgress, statusIndeterminate, statusNotice].forEach(elem => { @@ -217,7 +215,6 @@ $GODOT_HEAD_INCLUDE }; function animateStatusIndeterminate(ms) { - var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8); if (statusIndeterminate.children[i].style.borderTopColor == '') { Array.prototype.slice.call(statusIndeterminate.children).forEach(child => { @@ -228,7 +225,6 @@ $GODOT_HEAD_INCLUDE } setStatusNotice = function setStatusNotice(text) { - while (statusNotice.lastChild) { statusNotice.removeChild(statusNotice.lastChild); } @@ -240,7 +236,6 @@ $GODOT_HEAD_INCLUDE }; engine.setProgressFunc((current, total) => { - if (total > 0) { statusProgressInner.style.width = current/total * 100 + '%'; setStatusMode('progress'); diff --git a/misc/dist/windows/.gitignore b/misc/dist/windows/.gitignore new file mode 100644 index 0000000000..b615268279 --- /dev/null +++ b/misc/dist/windows/.gitignore @@ -0,0 +1,2 @@ +# Ignore both the Godot executable and generated installers. +*.exe diff --git a/misc/dist/windows/README.md b/misc/dist/windows/README.md new file mode 100644 index 0000000000..6df66437a7 --- /dev/null +++ b/misc/dist/windows/README.md @@ -0,0 +1,17 @@ +# Windows installer + +`godot.iss` is an [Inno Setup](https://jrsoftware.org/isinfo.php) installer file +that can be used to build a Windows installer. The generated installer is able +to run without Administrator privileges and can optionally add Godot to the +user's `PATH` environment variable. + +To use Inno Setup on Linux, use [innoextract](https://constexpr.org/innoextract/) +to extract the Inno Setup installer then run `ISCC.exe` using +[WINE](https://www.winehq.org/). + +## Building + +- Place a Godot editor executable in this folder and rename it to `godot.exe`. +- Run the Inno Setup Compiler (part of the Inno Setup suite) on the `godot.iss` file. + +If everything succeeds, an installer will be generated in this folder. diff --git a/misc/dist/windows/godot.iss b/misc/dist/windows/godot.iss new file mode 100644 index 0000000000..f7aa8249bc --- /dev/null +++ b/misc/dist/windows/godot.iss @@ -0,0 +1,63 @@ +#define MyAppName "Godot Engine" +#define MyAppVersion "4.0.dev" +#define MyAppPublisher "Godot Engine contributors" +#define MyAppURL "https://godotengine.org/" +#define MyAppExeName "godot.exe" + +[Setup] +AppId={{60D07AAA-400E-40F5-B073-A796C34D9D78} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +; Don't add "version {version}" to the installed app name in the Add/Remove Programs +; dialog as it's redundant with the Version field in that same dialog. +AppVerName={#MyAppName} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +AppComments=Godot Engine editor +ChangesEnvironment=yes +DefaultDirName={localappdata}\Godot +DefaultGroupName=Godot Engine +AllowNoIcons=yes +UninstallDisplayIcon={app}\{#MyAppExeName} +#ifdef App32Bit + OutputBaseFilename=godot-setup-x86 +#else + OutputBaseFilename=godot-setup-x86_64 + ArchitecturesAllowed=x64 + ArchitecturesInstallIn64BitMode=x64 +#endif +Compression=lzma +SolidCompression=yes +PrivilegesRequired=lowest + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked +Name: "modifypath"; Description: "Add Godot to PATH environment variable" + +[Files] +Source: "{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion + +[Icons] +Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + +[Code] +const + ModPathName = 'modifypath'; + ModPathType = 'user'; + +function ModPathDir(): TArrayOfString; +begin + setArrayLength(Result, 1) + Result[0] := ExpandConstant('{app}'); +end; + +#include "modpath.pas" diff --git a/misc/dist/windows/modpath.pas b/misc/dist/windows/modpath.pas new file mode 100644 index 0000000000..c55ec60163 --- /dev/null +++ b/misc/dist/windows/modpath.pas @@ -0,0 +1,219 @@ +// ---------------------------------------------------------------------------- +// +// Inno Setup Ver: 5.4.2 +// Script Version: 1.4.2 +// Author: Jared Breland <jbreland@legroom.net> +// Homepage: http://www.legroom.net/software +// License: GNU Lesser General Public License (LGPL), version 3 +// http://www.gnu.org/licenses/lgpl.html +// +// Script Function: +// Allow modification of environmental path directly from Inno Setup installers +// +// Instructions: +// Copy modpath.iss to the same directory as your setup script +// +// Add this statement to your [Setup] section +// ChangesEnvironment=true +// +// Add this statement to your [Tasks] section +// You can change the Description or Flags +// You can change the Name, but it must match the ModPathName setting below +// Name: modifypath; Description: &Add application directory to your environmental path; Flags: unchecked +// +// Add the following to the end of your [Code] section +// ModPathName defines the name of the task defined above +// ModPathType defines whether the 'user' or 'system' path will be modified; +// this will default to user if anything other than system is set +// setArrayLength must specify the total number of dirs to be added +// Result[0] contains first directory, Result[1] contains second, etc. +// const +// ModPathName = 'modifypath'; +// ModPathType = 'user'; +// +// function ModPathDir(): TArrayOfString; +// begin +// setArrayLength(Result, 1); +// Result[0] := ExpandConstant('{app}'); +// end; +// #include "modpath.iss" +// ---------------------------------------------------------------------------- + +procedure ModPath(); +var + oldpath: String; + newpath: String; + updatepath: Boolean; + pathArr: TArrayOfString; + aExecFile: String; + aExecArr: TArrayOfString; + i, d: Integer; + pathdir: TArrayOfString; + regroot: Integer; + regpath: String; + +begin + // Get constants from main script and adjust behavior accordingly + // ModPathType MUST be 'system' or 'user'; force 'user' if invalid + if ModPathType = 'system' then begin + regroot := HKEY_LOCAL_MACHINE; + regpath := 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'; + end else begin + regroot := HKEY_CURRENT_USER; + regpath := 'Environment'; + end; + + // Get array of new directories and act on each individually + pathdir := ModPathDir(); + for d := 0 to GetArrayLength(pathdir)-1 do begin + updatepath := true; + + // Modify WinNT path + if UsingWinNT() = true then begin + + // Get current path, split into an array + RegQueryStringValue(regroot, regpath, 'Path', oldpath); + oldpath := oldpath + ';'; + i := 0; + + while (Pos(';', oldpath) > 0) do begin + SetArrayLength(pathArr, i+1); + pathArr[i] := Copy(oldpath, 0, Pos(';', oldpath)-1); + oldpath := Copy(oldpath, Pos(';', oldpath)+1, Length(oldpath)); + i := i + 1; + + // Check if current directory matches app dir + if pathdir[d] = pathArr[i-1] then begin + // if uninstalling, remove dir from path + if IsUninstaller() = true then begin + continue; + // if installing, flag that dir already exists in path + end else begin + updatepath := false; + end; + end; + + // Add current directory to new path + if i = 1 then begin + newpath := pathArr[i-1]; + end else begin + newpath := newpath + ';' + pathArr[i-1]; + end; + end; + + // Append app dir to path if not already included + if (IsUninstaller() = false) AND (updatepath = true) then + newpath := newpath + ';' + pathdir[d]; + + // Write new path + RegWriteStringValue(regroot, regpath, 'Path', newpath); + + // Modify Win9x path + end else begin + + // Convert to shortened dirname + pathdir[d] := GetShortName(pathdir[d]); + + // If autoexec.bat exists, check if app dir already exists in path + aExecFile := 'C:\AUTOEXEC.BAT'; + if FileExists(aExecFile) then begin + LoadStringsFromFile(aExecFile, aExecArr); + for i := 0 to GetArrayLength(aExecArr)-1 do begin + if IsUninstaller() = false then begin + // If app dir already exists while installing, skip add + if (Pos(pathdir[d], aExecArr[i]) > 0) then + updatepath := false; + break; + end else begin + // If app dir exists and = what we originally set, then delete at uninstall + if aExecArr[i] = 'SET PATH=%PATH%;' + pathdir[d] then + aExecArr[i] := ''; + end; + end; + end; + + // If app dir not found, or autoexec.bat didn't exist, then (create and) append to current path + if (IsUninstaller() = false) AND (updatepath = true) then begin + SaveStringToFile(aExecFile, #13#10 + 'SET PATH=%PATH%;' + pathdir[d], True); + + // If uninstalling, write the full autoexec out + end else begin + SaveStringsToFile(aExecFile, aExecArr, False); + end; + end; + end; +end; + +// Split a string into an array using passed delimeter +procedure MPExplode(var Dest: TArrayOfString; Text: String; Separator: String); +var + i: Integer; +begin + i := 0; + repeat + SetArrayLength(Dest, i+1); + if Pos(Separator,Text) > 0 then begin + Dest[i] := Copy(Text, 1, Pos(Separator, Text)-1); + Text := Copy(Text, Pos(Separator,Text) + Length(Separator), Length(Text)); + i := i + 1; + end else begin + Dest[i] := Text; + Text := ''; + end; + until Length(Text)=0; +end; + + +procedure CurStepChanged(CurStep: TSetupStep); +var + taskname: String; +begin + taskname := ModPathName; + if CurStep = ssPostInstall then + if IsTaskSelected(taskname) then + ModPath(); +end; + +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +var + aSelectedTasks: TArrayOfString; + i: Integer; + taskname: String; + regpath: String; + regstring: String; + appid: String; +begin + // only run during actual uninstall + if CurUninstallStep = usUninstall then begin + // get list of selected tasks saved in registry at install time + appid := '{#emit SetupSetting("AppId")}'; + if appid = '' then appid := '{#emit SetupSetting("AppName")}'; + regpath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\'+appid+'_is1'); + RegQueryStringValue(HKLM, regpath, 'Inno Setup: Selected Tasks', regstring); + if regstring = '' then RegQueryStringValue(HKCU, regpath, 'Inno Setup: Selected Tasks', regstring); + + // check each task; if matches modpath taskname, trigger patch removal + if regstring <> '' then begin + taskname := ModPathName; + MPExplode(aSelectedTasks, regstring, ','); + if GetArrayLength(aSelectedTasks) > 0 then begin + for i := 0 to GetArrayLength(aSelectedTasks)-1 do begin + if comparetext(aSelectedTasks[i], taskname) = 0 then + ModPath(); + end; + end; + end; + end; +end; + +function NeedRestart(): Boolean; +var + taskname: String; +begin + taskname := ModPathName; + if IsTaskSelected(taskname) and not UsingWinNT() then begin + Result := True; + end else begin + Result := False; + end; +end; diff --git a/misc/scripts/file_format.sh b/misc/scripts/file_format.sh index c570ec23a7..0e9db68a90 100755 --- a/misc/scripts/file_format.sh +++ b/misc/scripts/file_format.sh @@ -40,6 +40,13 @@ while IFS= read -rd '' f; do perl -i -ple 's/\s*$//g' "$f" # Remove the character sequence "== true" if it has a leading space. perl -i -pe 's/\x20== true//g' "$f" + + if [[ $(uname) == "Linux" ]] && [[ "$f" != *"xml" ]]; then + # Remove empty lines after the opening brace of indented blocks. + sed -z -i 's/\x7B\x0A\x0A\x09/\x7B\x0A\x09/g' "$f" + # Remove empty lines before the closing brace (in some cases). + sed -z -i 's/\x0A\x0A\x7D/\x0A\x7D/g' "$f" + fi done git diff > patch.patch diff --git a/modules/basis_universal/texture_basisu.cpp b/modules/basis_universal/texture_basisu.cpp index 2ed0340927..5831d3de2a 100644 --- a/modules/basis_universal/texture_basisu.cpp +++ b/modules/basis_universal/texture_basisu.cpp @@ -39,44 +39,36 @@ #include <transcoder/basisu_transcoder.h> void TextureBasisU::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_basisu_data", "data"), &TextureBasisU::set_basisu_data); ClassDB::bind_method(D_METHOD("get_basisu_data"), &TextureBasisU::get_data); ClassDB::bind_method(D_METHOD("import"), &TextureBasisU::import); ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "basisu_data"), "set_basisu_data", "get_basisu_data"); - }; int TextureBasisU::get_width() const { - return tex_size.x; }; int TextureBasisU::get_height() const { - return tex_size.y; }; RID TextureBasisU::get_rid() const { - return texture; }; bool TextureBasisU::has_alpha() const { - return false; }; void TextureBasisU::set_flags(uint32_t p_flags) { - flags = p_flags; RenderingServer::get_singleton()->texture_set_flags(texture, p_flags); }; uint32_t TextureBasisU::get_flags() const { - return flags; }; @@ -95,12 +87,10 @@ void TextureBasisU::set_basisu_data(const Vector<uint8_t>& p_data) { Image::Format imgfmt; if (OS::get_singleton()->has_feature("s3tc")) { - format = basist::cTFBC3; // get this from renderer imgfmt = Image::FORMAT_DXT5; } else if (OS::get_singleton()->has_feature("etc2")) { - format = basist::cTFETC2; imgfmt = Image::FORMAT_ETC2_RGBA8; }; @@ -126,7 +116,6 @@ void TextureBasisU::set_basisu_data(const Vector<uint8_t>& p_data) { int ofs = 0; tr.start_transcoding(ptr, size); for (int i=0; i<info.m_total_levels; i++) { - basist::basisu_image_level_info level; tr.get_image_level_info(ptr, size, level, 0, i); @@ -214,19 +203,16 @@ Error TextureBasisU::import(const Ref<Image>& p_img) { Vector<uint8_t> TextureBasisU::get_basisu_data() const { - return data; }; TextureBasisU::TextureBasisU() { - flags = FLAGS_DEFAULT; texture = RenderingServer::get_singleton()->texture_create(); }; TextureBasisU::~TextureBasisU() { - RenderingServer::get_singleton()->free(texture); }; diff --git a/modules/basis_universal/texture_basisu.h b/modules/basis_universal/texture_basisu.h index 20ecf15a59..99248f9162 100644 --- a/modules/basis_universal/texture_basisu.h +++ b/modules/basis_universal/texture_basisu.h @@ -41,7 +41,6 @@ #if 0 class TextureBasisU : public Texture { - GDCLASS(TextureBasisU, Texture); RES_BASE_EXTENSION("butex"); @@ -74,7 +73,6 @@ public: TextureBasisU(); ~TextureBasisU(); - }; #endif diff --git a/modules/bullet/bullet_physics_server.cpp b/modules/bullet/bullet_physics_server.cpp index f7290666ad..663ad6e3e1 100644 --- a/modules/bullet/bullet_physics_server.cpp +++ b/modules/bullet/bullet_physics_server.cpp @@ -1553,9 +1553,6 @@ void BulletPhysicsServer3D::step(float p_deltaTime) { } } -void BulletPhysicsServer3D::sync() { -} - void BulletPhysicsServer3D::flush_queries() { if (!active) { return; diff --git a/modules/bullet/bullet_physics_server.h b/modules/bullet/bullet_physics_server.h index 02ba5458d8..dca9339c44 100644 --- a/modules/bullet/bullet_physics_server.h +++ b/modules/bullet/bullet_physics_server.h @@ -397,7 +397,6 @@ public: virtual void init() override; virtual void step(float p_deltaTime) override; - virtual void sync() override; virtual void flush_queries() override; virtual void finish() override; diff --git a/modules/dds/texture_loader_dds.cpp b/modules/dds/texture_loader_dds.cpp index 2f4f7d7a4c..627153fbc8 100644 --- a/modules/dds/texture_loader_dds.cpp +++ b/modules/dds/texture_loader_dds.cpp @@ -373,7 +373,6 @@ RES ResourceFormatDDS::load(const String &p_path, const String &p_original_path, int colcount = size/4; for(int i=0;i<colcount;i++) { - uint8_t r = wb[i*4+1]; uint8_t g = wb[i*4+2]; uint8_t b = wb[i*4+3]; @@ -392,7 +391,6 @@ RES ResourceFormatDDS::load(const String &p_path, const String &p_original_path, int colcount = size/3; for(int i=0;i<colcount;i++) { - SWAP( wb[i*3+0],wb[i*3+2] ); }*/ } break; diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp index 6cac2458f9..4e9e64c6a7 100644 --- a/modules/etc/image_etc.cpp +++ b/modules/etc/image_etc.cpp @@ -106,7 +106,6 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f // If VRAM compression is using ETC, but image has alpha, convert to RGBA4444 or LA8 // This saves space while maintaining the alpha channel if (detected_channels == Image::USED_CHANNELS_RGBA) { - if (p_img->has_mipmaps()) { // Image doesn't support mipmaps with RGBA4444 textures p_img->clear_mipmaps(); @@ -114,7 +113,6 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f p_img->convert(Image::FORMAT_RGBA4444); return; } else if (detected_channels == Image::USE_CHANNELS_LA) { - p_img->convert(Image::FORMAT_LA8); return; } diff --git a/modules/gdnative/include/nativescript/godot_nativescript.h b/modules/gdnative/include/nativescript/godot_nativescript.h index 825033c99c..cc12d58037 100644 --- a/modules/gdnative/include/nativescript/godot_nativescript.h +++ b/modules/gdnative/include/nativescript/godot_nativescript.h @@ -85,7 +85,6 @@ typedef enum { } godot_nativescript_property_hint; typedef enum { - GODOT_PROPERTY_USAGE_STORAGE = 1, GODOT_PROPERTY_USAGE_EDITOR = 2, GODOT_PROPERTY_USAGE_NETWORK = 4, diff --git a/modules/gdnative/tests/test_string.h b/modules/gdnative/tests/test_string.h index aeb855a1c4..2b1aa5bf28 100644 --- a/modules/gdnative/tests/test_string.h +++ b/modules/gdnative/tests/test_string.h @@ -1974,7 +1974,6 @@ TEST_CASE("[GDNative String] humanize_size") { CHECK(u32scmp(godot_string_get_data(&s), U"4.97 GiB") == 0); godot_string_destroy(&s); } - } // namespace TestGDNativeString #endif // TEST_GDNATIVE_STRING_H diff --git a/modules/gdscript/language_server/lsp.hpp b/modules/gdscript/language_server/lsp.hpp index bf32c1c978..288fd41c87 100644 --- a/modules/gdscript/language_server/lsp.hpp +++ b/modules/gdscript/language_server/lsp.hpp @@ -1781,7 +1781,6 @@ static String marked_documentation(const String &p_bbcode) { } return markdown; } - } // namespace lsp #endif diff --git a/modules/gdscript/tests/test_gdscript.cpp b/modules/gdscript/tests/test_gdscript.cpp index 50b3783388..643c2f10a2 100644 --- a/modules/gdscript/tests/test_gdscript.cpp +++ b/modules/gdscript/tests/test_gdscript.cpp @@ -303,5 +303,4 @@ void test(TestType p_type) { ScriptServer::finish_languages(); memdelete(packed_data); } - } // namespace TestGDScript diff --git a/modules/gdscript/tests/test_gdscript.h b/modules/gdscript/tests/test_gdscript.h index 5aa962dcf8..6182629802 100644 --- a/modules/gdscript/tests/test_gdscript.h +++ b/modules/gdscript/tests/test_gdscript.h @@ -41,7 +41,6 @@ enum TestType { }; void test(TestType p_type); - } // namespace TestGDScript #endif // TEST_GDSCRIPT_H diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/grid_map_editor_plugin.h index ee17a52d31..69c8d999fd 100644 --- a/modules/gridmap/grid_map_editor_plugin.h +++ b/modules/gridmap/grid_map_editor_plugin.h @@ -41,12 +41,10 @@ class GridMapEditor : public VBoxContainer { GDCLASS(GridMapEditor, VBoxContainer); enum { - GRID_CURSOR_SIZE = 50 }; enum InputAction { - INPUT_NONE, INPUT_PAINT, INPUT_ERASE, @@ -56,7 +54,6 @@ class GridMapEditor : public VBoxContainer { }; enum ClipMode { - CLIP_DISABLED, CLIP_ABOVE, CLIP_BELOW @@ -158,7 +155,6 @@ class GridMapEditor : public VBoxContainer { int cursor_rot; enum Menu { - MENU_OPTION_NEXT_LEVEL, MENU_OPTION_PREV_LEVEL, MENU_OPTION_LOCK_VIEW, diff --git a/modules/mono/build_scripts/make_android_mono_config.py b/modules/mono/build_scripts/make_android_mono_config.py index d276d7d886..04f8c80243 100644 --- a/modules/mono/build_scripts/make_android_mono_config.py +++ b/modules/mono/build_scripts/make_android_mono_config.py @@ -32,7 +32,6 @@ namespace { static const int config_compressed_size = %d; static const int config_uncompressed_size = %d; static const unsigned char config_compressed_data[] = { %s }; - } // namespace String get_godot_android_mono_config() { diff --git a/modules/mono/editor/code_completion.cpp b/modules/mono/editor/code_completion.cpp index 9defd65190..f1919c2501 100644 --- a/modules/mono/editor/code_completion.cpp +++ b/modules/mono/editor/code_completion.cpp @@ -246,5 +246,4 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr return suggestions; } - } // namespace gdmono diff --git a/modules/mono/editor/code_completion.h b/modules/mono/editor/code_completion.h index b9d22de0b3..c2a33a9133 100644 --- a/modules/mono/editor/code_completion.h +++ b/modules/mono/editor/code_completion.h @@ -50,7 +50,6 @@ enum class CompletionKind { }; PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_script_file); - } // namespace gdmono #endif // CODE_COMPLETION_H diff --git a/modules/mono/editor/godotsharp_export.cpp b/modules/mono/editor/godotsharp_export.cpp index 4fa753ab8b..1a0d5743ae 100644 --- a/modules/mono/editor/godotsharp_export.cpp +++ b/modules/mono/editor/godotsharp_export.cpp @@ -141,5 +141,4 @@ Error get_exported_assembly_dependencies(const Dictionary &p_initial_assemblies, return OK; } - } // namespace GodotSharpExport diff --git a/modules/mono/editor/godotsharp_export.h b/modules/mono/editor/godotsharp_export.h index bd0f86a74b..586d4e5a0c 100644 --- a/modules/mono/editor/godotsharp_export.h +++ b/modules/mono/editor/godotsharp_export.h @@ -43,7 +43,6 @@ Error get_assembly_dependencies(GDMonoAssembly *p_assembly, const Vector<String> Error get_exported_assembly_dependencies(const Dictionary &p_initial_assemblies, const String &p_build_config, const String &p_custom_lib_dir, Dictionary &r_assembly_dependencies); - } // namespace GodotSharpExport #endif // GODOTSHARP_EXPORT_H diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs index e42d067a7a..90141928ca 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs @@ -777,31 +777,10 @@ namespace Godot return ParseCol4(str, ofs) * 16 + ParseCol4(str, ofs + 1); } - private String ToHex32(float val) + private string ToHex32(float val) { - int v = Mathf.RoundToInt(Mathf.Clamp(val * 255, 0, 255)); - - var ret = string.Empty; - - for (int i = 0; i < 2; i++) - { - char c; - int lv = v & 0xF; - - if (lv < 10) - { - c = (char)('0' + lv); - } - else - { - c = (char)('a' + lv - 10); - } - - v >>= 4; - ret = c + ret; - } - - return ret; + byte b = (byte)Mathf.RoundToInt(Mathf.Clamp(val * 255, 0, 255)); + return b.HexEncode(); } internal static bool HtmlIsValid(string color) diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs index d63db0f905..0700f197ff 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs @@ -322,6 +322,15 @@ namespace Godot return instance.IndexOf(what, from, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase); } + /// <summary>Find the first occurrence of a char. Optionally, the search starting position can be passed.</summary> + /// <returns>The first instance of the char, or -1 if not found.</returns> + public static int Find(this string instance, char what, int from = 0, bool caseSensitive = true) + { + // TODO: Could be more efficient if we get a char version of `IndexOf`. + // See https://github.com/dotnet/runtime/issues/44116 + return instance.IndexOf(what.ToString(), from, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase); + } + /// <summary>Find the last occurrence of a substring.</summary> /// <returns>The starting position of the substring, or -1 if not found.</returns> public static int FindLast(this string instance, string what, bool caseSensitive = true) @@ -437,6 +446,53 @@ namespace Godot return hashv; } + /// <summary> + /// Returns a hexadecimal representation of this byte as a string. + /// </summary> + /// <param name="bytes">The byte to encode.</param> + /// <returns>The hexadecimal representation of this byte.</returns> + internal static string HexEncode(this byte b) + { + var ret = string.Empty; + + for (int i = 0; i < 2; i++) + { + char c; + int lv = b & 0xF; + + if (lv < 10) + { + c = (char)('0' + lv); + } + else + { + c = (char)('a' + lv - 10); + } + + b >>= 4; + ret = c + ret; + } + + return ret; + } + + /// <summary> + /// Returns a hexadecimal representation of this byte array as a string. + /// </summary> + /// <param name="bytes">The byte array to encode.</param> + /// <returns>The hexadecimal representation of this byte array.</returns> + public static string HexEncode(this byte[] bytes) + { + var ret = string.Empty; + + foreach (byte b in bytes) + { + ret += b.HexEncode(); + } + + return ret; + } + // <summary> // Convert a string containing an hexadecimal number into an int. // </summary> @@ -659,6 +715,33 @@ namespace Godot } /// <summary> + /// Returns a copy of the string with characters removed from the left. + /// </summary> + /// <param name="instance">The string to remove characters from.</param> + /// <param name="chars">The characters to be removed.</param> + /// <returns>A copy of the string with characters removed from the left.</returns> + public static string LStrip(this string instance, string chars) + { + int len = instance.Length; + int beg; + + for (beg = 0; beg < len; beg++) + { + if (chars.Find(instance[beg]) == -1) + { + break; + } + } + + if (beg == 0) + { + return instance; + } + + return instance.Substr(beg, len - beg); + } + + /// <summary> /// Do a simple expression match, where '*' matches zero or more arbitrary characters and '?' matches any single character except '.'. /// </summary> private static bool ExprMatch(this string instance, string expr, bool caseSensitive) @@ -886,6 +969,33 @@ namespace Godot return instance.Substring(pos, instance.Length - pos); } + /// <summary> + /// Returns a copy of the string with characters removed from the right. + /// </summary> + /// <param name="instance">The string to remove characters from.</param> + /// <param name="chars">The characters to be removed.</param> + /// <returns>A copy of the string with characters removed from the right.</returns> + public static string RStrip(this string instance, string chars) + { + int len = instance.Length; + int end; + + for (end = len - 1; end >= 0; end--) + { + if (chars.Find(instance[end]) == -1) + { + break; + } + } + + if (end == len - 1) + { + return instance; + } + + return instance.Substr(0, end + 1); + } + public static byte[] SHA256Buffer(this string instance) { return godot_icall_String_sha256_buffer(instance); diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp index 4233732bff..093a935288 100644 --- a/modules/mono/godotsharp_dirs.cpp +++ b/modules/mono/godotsharp_dirs.cpp @@ -322,5 +322,4 @@ String get_data_mono_bin_dir() { return _GodotSharpDirs::get_singleton().data_mono_bin_dir; } #endif - } // namespace GodotSharpDirs diff --git a/modules/mono/godotsharp_dirs.h b/modules/mono/godotsharp_dirs.h index 6391616419..85be506c28 100644 --- a/modules/mono/godotsharp_dirs.h +++ b/modules/mono/godotsharp_dirs.h @@ -66,7 +66,6 @@ String get_data_mono_lib_dir(); #ifdef WINDOWS_ENABLED String get_data_mono_bin_dir(); #endif - } // namespace GodotSharpDirs #endif // GODOTSHARP_DIRS_H diff --git a/modules/mono/mono_gc_handle.h b/modules/mono/mono_gc_handle.h index 5c3a210e97..b85dc70af3 100644 --- a/modules/mono/mono_gc_handle.h +++ b/modules/mono/mono_gc_handle.h @@ -42,7 +42,6 @@ enum class GCHandleType : char { STRONG_HANDLE, WEAK_HANDLE }; - } // Manual release of the GC handle must be done when using this struct diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index 0e335b3349..772961291c 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -201,7 +201,6 @@ MonoDomain *gd_initialize_mono_runtime() { return mono_jit_init_version("GodotEngine.RootDomain", runtime_version); } #endif - } // namespace void GDMono::add_mono_shared_libs_dir_to_path() { diff --git a/modules/mono/mono_gd/gd_mono.h b/modules/mono/mono_gd/gd_mono.h index 18f7418049..969296c44d 100644 --- a/modules/mono/mono_gd/gd_mono.h +++ b/modules/mono/mono_gd/gd_mono.h @@ -283,7 +283,6 @@ public: } } }; - } // namespace gdmono #define _GDMONO_SCOPE_DOMAIN_(m_mono_domain) \ diff --git a/modules/mono/mono_gd/gd_mono_cache.cpp b/modules/mono/mono_gd/gd_mono_cache.cpp index 29aef6e609..3f51c6523b 100644 --- a/modules/mono/mono_gd/gd_mono_cache.cpp +++ b/modules/mono/mono_gd/gd_mono_cache.cpp @@ -316,5 +316,4 @@ void update_godot_api_cache() { cached_data.godot_api_cache_updated = true; } - } // namespace GDMonoCache diff --git a/modules/mono/mono_gd/gd_mono_cache.h b/modules/mono/mono_gd/gd_mono_cache.h index a7bbc763a7..9dfa5769be 100644 --- a/modules/mono/mono_gd/gd_mono_cache.h +++ b/modules/mono/mono_gd/gd_mono_cache.h @@ -181,7 +181,6 @@ inline void clear_corlib_cache() { inline void clear_godot_api_cache() { cached_data.clear_godot_api_cache(); } - } // namespace GDMonoCache #define CACHED_CLASS(m_class) (GDMonoCache::cached_data.class_##m_class) diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp index 0ed9e441ef..82f916e8c5 100644 --- a/modules/mono/mono_gd/gd_mono_internals.cpp +++ b/modules/mono/mono_gd/gd_mono_internals.cpp @@ -127,5 +127,4 @@ void unhandled_exception(MonoException *p_exc) { #endif } } - } // namespace GDMonoInternals diff --git a/modules/mono/mono_gd/gd_mono_internals.h b/modules/mono/mono_gd/gd_mono_internals.h index d1d5eca263..0fd6250785 100644 --- a/modules/mono/mono_gd/gd_mono_internals.h +++ b/modules/mono/mono_gd/gd_mono_internals.h @@ -46,7 +46,6 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged); * Use GDMonoUtils::debug_unhandled_exception(MonoException *) instead. */ void unhandled_exception(MonoException *p_exc); - } // namespace GDMonoInternals #endif // GD_MONO_INTERNALS_H diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp index 9d193ab8ab..eee880ba60 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.cpp +++ b/modules/mono/mono_gd/gd_mono_marshal.cpp @@ -1536,5 +1536,4 @@ M_SignalInfo signal_info_to_managed(const Signal &p_signal) { MonoObject *name_string_name_managed = GDMonoUtils::create_managed_from(p_signal.get_name()); return { owner_managed, name_string_name_managed }; } - } // namespace GDMonoMarshal diff --git a/modules/mono/mono_gd/gd_mono_marshal.h b/modules/mono/mono_gd/gd_mono_marshal.h index d2c564d67d..d1d5f1f202 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.h +++ b/modules/mono/mono_gd/gd_mono_marshal.h @@ -271,7 +271,6 @@ static_assert(MATCHES_Vector2 && MATCHES_Rect2 && MATCHES_Transform2D && MATCHES MATCHES_Plane && MATCHES_Vector2i && MATCHES_Rect2i && MATCHES_Vector3i); /* clang-format on */ #endif - } // namespace InteropLayout #pragma pack(push, 1) @@ -517,7 +516,6 @@ DECL_TYPE_MARSHAL_TEMPLATES(Plane) #define MARSHALLED_IN(m_type, m_from_ptr) (GDMonoMarshal::marshalled_in_##m_type(m_from_ptr)) #define MARSHALLED_OUT(m_type, m_from) (GDMonoMarshal::marshalled_out_##m_type(m_from)) - } // namespace GDMonoMarshal #endif // GDMONOMARSHAL_H diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp index 2676165cbc..97fc4c57f9 100644 --- a/modules/mono/mono_gd/gd_mono_utils.cpp +++ b/modules/mono/mono_gd/gd_mono_utils.cpp @@ -659,7 +659,6 @@ GDMonoClass *make_generic_dictionary_type(MonoReflectionType *p_key_reftype, Mon UNHANDLED_EXCEPTION(exc); return GDMono::get_singleton()->get_class(mono_class_from_mono_type(mono_reflection_type_get_type(reftype))); } - } // namespace Marshal ScopeThreadAttach::ScopeThreadAttach() { @@ -679,5 +678,4 @@ StringName get_native_godot_class_name(GDMonoClass *p_class) { StringName *ptr = GDMonoMarshal::unbox<StringName *>(CACHED_FIELD(StringName, ptr)->get_value(native_name_obj)); return ptr ? *ptr : StringName(); } - } // namespace GDMonoUtils diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h index 7088385c4f..71c131f77c 100644 --- a/modules/mono/mono_gd/gd_mono_utils.h +++ b/modules/mono/mono_gd/gd_mono_utils.h @@ -64,7 +64,6 @@ void dictionary_get_key_value_types(MonoReflectionType *p_dict_reftype, MonoRefl GDMonoClass *make_generic_array_type(MonoReflectionType *p_elem_reftype); GDMonoClass *make_generic_dictionary_type(MonoReflectionType *p_key_reftype, MonoReflectionType *p_value_reftype); - } // namespace Marshal _FORCE_INLINE_ void hash_combine(uint32_t &p_hash, const uint32_t &p_with_hash) { @@ -156,7 +155,6 @@ private: }; StringName get_native_godot_class_name(GDMonoClass *p_class); - } // namespace GDMonoUtils #define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoUtils::get_native_godot_class_name(m_class)) diff --git a/modules/mono/mono_gd/support/android_support.cpp b/modules/mono/mono_gd/support/android_support.cpp index 386e0576b3..18daf859b5 100644 --- a/modules/mono/mono_gd/support/android_support.cpp +++ b/modules/mono/mono_gd/support/android_support.cpp @@ -387,7 +387,6 @@ void cleanup() { certStore = nullptr; } } - } // namespace support } // namespace android } // namespace gdmono diff --git a/modules/mono/mono_gd/support/android_support.h b/modules/mono/mono_gd/support/android_support.h index 5947395a99..df51100bef 100755 --- a/modules/mono/mono_gd/support/android_support.h +++ b/modules/mono/mono_gd/support/android_support.h @@ -45,7 +45,6 @@ void initialize(); void cleanup(); void register_internal_calls(); - } // namespace support } // namespace android } // namespace gdmono diff --git a/modules/mono/mono_gd/support/ios_support.h b/modules/mono/mono_gd/support/ios_support.h index ed251cb23a..48cef890d6 100755 --- a/modules/mono/mono_gd/support/ios_support.h +++ b/modules/mono/mono_gd/support/ios_support.h @@ -41,7 +41,6 @@ namespace support { void initialize(); void cleanup(); - } // namespace support } // namespace ios } // namespace gdmono diff --git a/modules/mono/mono_gd/support/ios_support.mm b/modules/mono/mono_gd/support/ios_support.mm index dc23c06eba..e6e09c4146 100644 --- a/modules/mono/mono_gd/support/ios_support.mm +++ b/modules/mono/mono_gd/support/ios_support.mm @@ -72,7 +72,6 @@ void initialize() { void cleanup() { } - } // namespace support } // namespace ios } // namespace gdmono diff --git a/modules/mono/utils/macros.h b/modules/mono/utils/macros.h index c76619cca4..60c9b9718a 100644 --- a/modules/mono/utils/macros.h +++ b/modules/mono/utils/macros.h @@ -64,7 +64,6 @@ public: template <typename F> ScopeExit<F> operator+(F p_exit_func) { return ScopeExit<F>(p_exit_func); } }; - } // namespace gdmono #define SCOPE_EXIT \ diff --git a/modules/mono/utils/mono_reg_utils.cpp b/modules/mono/utils/mono_reg_utils.cpp index a619f0b975..9902744743 100644 --- a/modules/mono/utils/mono_reg_utils.cpp +++ b/modules/mono/utils/mono_reg_utils.cpp @@ -225,7 +225,6 @@ cleanup: return msbuild_tools_path; } - } // namespace MonoRegUtils #endif // WINDOWS_ENABLED diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp index eb0ba8c700..a24097924e 100644 --- a/modules/mono/utils/path_utils.cpp +++ b/modules/mono/utils/path_utils.cpp @@ -194,5 +194,4 @@ String relative_to(const String &p_path, const String &p_relative_to) { return relative_to_impl(path_abs_norm, relative_to_abs_norm); } - } // namespace path diff --git a/modules/mono/utils/path_utils.h b/modules/mono/utils/path_utils.h index 458d1bb849..c19cb3bc8b 100644 --- a/modules/mono/utils/path_utils.h +++ b/modules/mono/utils/path_utils.h @@ -56,7 +56,6 @@ String abspath(const String &p_path); String realpath(const String &p_path); String relative_to(const String &p_path, const String &p_relative_to); - } // namespace path #endif // PATH_UTILS_H diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp index 65da4328f6..d70004657c 100644 --- a/modules/mono/utils/string_utils.cpp +++ b/modules/mono/utils/string_utils.cpp @@ -84,7 +84,6 @@ int sfind(const String &p_text, int p_from) { return -1; } - } // namespace String sformat(const String &p_text, const Variant &p1, const Variant &p2, const Variant &p3, const Variant &p4, const Variant &p5) { diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp index 050dce1aab..0923714387 100644 --- a/modules/pvr/texture_loader_pvr.cpp +++ b/modules/pvr/texture_loader_pvr.cpp @@ -38,7 +38,6 @@ static void _pvrtc_decompress(Image *p_img); enum PVRFLags { - PVR_HAS_MIPMAPS = 0x00000100, PVR_TWIDDLED = 0x00000200, PVR_NORMAL_MAP = 0x00000400, @@ -48,7 +47,6 @@ enum PVRFLags { PVR_VOLUME_TEXTURES = 0x00004000, PVR_HAS_ALPHA = 0x00008000, PVR_VFLIP = 0x00010000 - }; RES ResourceFormatPVR::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, bool p_no_cache) { diff --git a/modules/upnp/upnp.h b/modules/upnp/upnp.h index e87f93e697..81d770ec4c 100644 --- a/modules/upnp/upnp.h +++ b/modules/upnp/upnp.h @@ -57,7 +57,6 @@ protected: public: enum UPNPResult { - UPNP_RESULT_SUCCESS, UPNP_RESULT_NOT_AUTHORIZED, UPNP_RESULT_PORT_MAPPING_NOT_FOUND, diff --git a/modules/upnp/upnp_device.h b/modules/upnp/upnp_device.h index a287c99b0d..53d621c90a 100644 --- a/modules/upnp/upnp_device.h +++ b/modules/upnp/upnp_device.h @@ -38,7 +38,6 @@ class UPNPDevice : public Reference { public: enum IGDStatus { - IGD_STATUS_OK, IGD_STATUS_HTTP_ERROR, IGD_STATUS_HTTP_EMPTY, diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp index 1c7d5472cb..b10d4523f2 100644 --- a/modules/visual_script/visual_script.cpp +++ b/modules/visual_script/visual_script.cpp @@ -2635,7 +2635,6 @@ void VisualScriptLanguage::debug_get_stack_level_locals(int p_level, List<String f->debug_get_stack_member_state(*_call_stack[l].line,&locals); for( List<Pair<StringName,int> >::Element *E = locals.front();E;E=E->next() ) { - p_locals->push_back(E->get().first); p_values->push_back(_call_stack[l].stack[E->get().second]); } diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index a27307aec2..fe0c399f8d 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -647,7 +647,6 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons /* String VisualScriptBuiltinFunc::get_caption() const { - return "BuiltinFunc"; } diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h index 66e435741f..5610e6b1b4 100644 --- a/modules/visual_script/visual_script_editor.h +++ b/modules/visual_script/visual_script_editor.h @@ -64,7 +64,6 @@ class VisualScriptEditor : public ScriptEditorBase { }; enum PortAction { - CREATE_CALL_SET_GET, CREATE_ACTION, }; diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index 34a1cfc4fc..b2aa42ef97 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -234,7 +234,6 @@ PropertyInfo VisualScriptFunctionCall::get_output_value_port_info(int p_idx) con /*MethodBind *mb = ClassDB::get_method(_get_base_type(),function); if (mb) { - ret = mb->get_argument_info(-1); } else {*/ diff --git a/modules/webrtc/library_godot_webrtc.js b/modules/webrtc/library_godot_webrtc.js index b75996b1f3..d4c38f15a2 100644 --- a/modules/webrtc/library_godot_webrtc.js +++ b/modules/webrtc/library_godot_webrtc.js @@ -32,7 +32,6 @@ var GodotRTCDataChannel = { // Our socket implementation that forwards events to C++. $GodotRTCDataChannel__deps: ['$IDHandler', '$GodotOS'], $GodotRTCDataChannel: { - connect: function(p_id, p_on_open, p_on_message, p_on_error, p_on_close) { const ref = IDHandler.get(p_id); if (!ref) { @@ -201,7 +200,6 @@ autoAddDeps(GodotRTCDataChannel, '$GodotRTCDataChannel'); mergeInto(LibraryManager.library, GodotRTCDataChannel); var GodotRTCPeerConnection = { - $GodotRTCPeerConnection__deps: ['$IDHandler', '$GodotOS', '$GodotRTCDataChannel'], $GodotRTCPeerConnection: { onstatechange: function(p_id, p_conn, callback, event) { diff --git a/modules/websocket/library_godot_websocket.js b/modules/websocket/library_godot_websocket.js index f7d3195807..7076a6f43d 100644 --- a/modules/websocket/library_godot_websocket.js +++ b/modules/websocket/library_godot_websocket.js @@ -29,7 +29,6 @@ /*************************************************************************/ var GodotWebSocket = { - // Our socket implementation that forwards events to C++. $GodotWebSocket__deps: ['$IDHandler'], $GodotWebSocket: { @@ -163,10 +162,8 @@ var GodotWebSocket = { for(i = 0; i < p_buf_len; i++) { bytes_array[i] = getValue(p_buf + i, 'i8'); } - var out = bytes_array; - if (p_raw) { - out = bytes_array.buffer; - } else { + var out = bytes_array.buffer; + if (!p_raw) { out = new TextDecoder("utf-8").decode(bytes_array); } return GodotWebSocket.send(p_id, out); diff --git a/platform/android/api/java_class_wrapper.h b/platform/android/api/java_class_wrapper.h index 4718de29ad..64da049407 100644 --- a/platform/android/api/java_class_wrapper.h +++ b/platform/android/api/java_class_wrapper.h @@ -47,7 +47,6 @@ class JavaClass : public Reference { #ifdef ANDROID_ENABLED enum ArgumentType{ - ARG_TYPE_VOID, ARG_TYPE_BOOLEAN, ARG_TYPE_BYTE, diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h index 9858a40822..b30711705b 100644 --- a/platform/android/audio_driver_opensl.h +++ b/platform/android/audio_driver_opensl.h @@ -42,7 +42,6 @@ class AudioDriverOpenSL : public AudioDriver { Mutex mutex; enum { - BUFFER_COUNT = 2 }; diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 53b43ae0e8..35a7c54a8f 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -2269,6 +2269,13 @@ public: Error _zip_align_project(const String &sdk_path, const String &unaligned_file_path, const String &aligned_file_path) { // Look for the zipalign tool. + String zipalign_command_name; +#ifdef WINDOWS_ENABLED + zipalign_command_name = "zipalign.exe"; +#else + zipalign_command_name = "zipalign"; +#endif + String zipalign_command; Error errn; String build_tools_dir = sdk_path.plus_file("build-tools"); @@ -2283,7 +2290,7 @@ public: while (!sub_dir.empty()) { if (!sub_dir.begins_with(".") && da->current_is_dir()) { // Check if the tool is here. - String tool_path = build_tools_dir.plus_file(sub_dir).plus_file("zipalign"); + String tool_path = build_tools_dir.plus_file(sub_dir).plus_file(zipalign_command_name); if (FileAccess::exists(tool_path)) { zipalign_command = tool_path; break; diff --git a/platform/android/file_access_android.cpp b/platform/android/file_access_android.cpp index 11faeff3e8..2446ca2829 100644 --- a/platform/android/file_access_android.cpp +++ b/platform/android/file_access_android.cpp @@ -34,7 +34,6 @@ AAssetManager *FileAccessAndroid::asset_manager = nullptr; /*void FileAccessAndroid::make_default() { - create_func=create_android; }*/ diff --git a/platform/android/java/lib/src/org/godotengine/godot/Godot.java b/platform/android/java/lib/src/org/godotengine/godot/Godot.java index 6cf340c418..3bbe35091c 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.java @@ -760,9 +760,7 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC /* @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) { - System.out.printf("** BACK REQUEST!\n"); GodotLib.quit(); diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java b/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java index 874fd88848..894009e30f 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java @@ -515,13 +515,13 @@ public class GodotIO { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); } break; case SCREEN_SENSOR_LANDSCAPE: { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE); } break; case SCREEN_SENSOR_PORTRAIT: { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); } break; case SCREEN_SENSOR: { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_USER); } break; } } diff --git a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt index 7fa8e3b4e5..f93cf0fa38 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt @@ -52,7 +52,6 @@ import org.godotengine.godot.plugin.GodotPluginRegistry * @see [VkSurfaceView.startRenderer] */ internal class VkRenderer { - private val pluginRegistry: GodotPluginRegistry = GodotPluginRegistry.getPluginRegistry() /** diff --git a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkSurfaceView.kt b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkSurfaceView.kt index 6b0e12b21a..e5c7a39bfb 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkSurfaceView.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkSurfaceView.kt @@ -50,7 +50,6 @@ import android.view.SurfaceView * </ul> */ open internal class VkSurfaceView(context: Context) : SurfaceView(context), SurfaceHolder.Callback { - companion object { fun checkState(expression: Boolean, errorMessage: Any) { check(expression) { errorMessage.toString() } diff --git a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkThread.kt b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkThread.kt index 7557c8aa22..fb02e3a69f 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkThread.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkThread.kt @@ -41,7 +41,6 @@ import kotlin.concurrent.withLock * The implementation is modeled after [android.opengl.GLSurfaceView]'s GLThread. */ internal class VkThread(private val vkSurfaceView: VkSurfaceView, private val vkRenderer: VkRenderer) : Thread(TAG) { - companion object { private val TAG = VkThread::class.java.simpleName } @@ -226,5 +225,4 @@ internal class VkThread(private val vkSurfaceView: VkSurfaceView, private val vk threadExiting() } } - } diff --git a/platform/iphone/SCsub b/platform/iphone/SCsub index d289e3a16f..ee7b2f4ab5 100644 --- a/platform/iphone/SCsub +++ b/platform/iphone/SCsub @@ -14,6 +14,7 @@ iphone_lib = [ "joypad_iphone.mm", "godot_view.mm", "display_layer.mm", + "godot_app_delegate.m", "godot_view_renderer.mm", "godot_view_gesture_recognizer.mm", "device_metrics.m", diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp index cbef136247..62fcfffbb7 100644 --- a/platform/iphone/export/export.cpp +++ b/platform/iphone/export/export.cpp @@ -690,7 +690,6 @@ static const IconInfo icon_infos[] = { { "optional_icons/spotlight_80x80", "iphone", "Icon-80.png", "80", "2x", "40x40", false }, { "optional_icons/spotlight_80x80", "ipad", "Icon-80.png", "80", "2x", "40x40", false } - }; Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_preset, const String &p_iconset_dir) { diff --git a/platform/iphone/godot_app_delegate.h b/platform/iphone/godot_app_delegate.h new file mode 100644 index 0000000000..ebb21c499b --- /dev/null +++ b/platform/iphone/godot_app_delegate.h @@ -0,0 +1,41 @@ +/*************************************************************************/ +/* godot_app_delegate.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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. */ +/*************************************************************************/ + +#import <UIKit/UIKit.h> + +typedef NSObject<UIApplicationDelegate> ApplicationDelegateService; + +@interface GodotApplicalitionDelegate : NSObject <UIApplicationDelegate> + +@property(class, readonly, strong) NSArray<ApplicationDelegateService *> *services; + ++ (void)addService:(ApplicationDelegateService *)service; + +@end diff --git a/platform/iphone/godot_app_delegate.m b/platform/iphone/godot_app_delegate.m new file mode 100644 index 0000000000..a5aad26bd5 --- /dev/null +++ b/platform/iphone/godot_app_delegate.m @@ -0,0 +1,497 @@ +/*************************************************************************/ +/* godot_app_delegate.m */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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. */ +/*************************************************************************/ + +#import "godot_app_delegate.h" + +#import "app_delegate.h" + +@interface GodotApplicalitionDelegate () + +@end + +@implementation GodotApplicalitionDelegate + +static NSMutableArray<ApplicationDelegateService *> *services = nil; + ++ (NSArray<ApplicationDelegateService *> *)services { + return services; +} + ++ (void)load { + services = [NSMutableArray new]; + [services addObject:[AppDelegate new]]; +} + ++ (void)addService:(ApplicationDelegateService *)service { + if (!services || !service) { + return; + } + [services addObject:service]; +} + +// UIApplicationDelegate documantation can be found here: https://developer.apple.com/documentation/uikit/uiapplicationdelegate + +// MARK: Window + +- (UIWindow *)window { + UIWindow *result = nil; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + UIWindow *value = [service window]; + + if (value) { + result = value; + } + } + + return result; +} + +// MARK: Initializing + +- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application willFinishLaunchingWithOptions:launchOptions]) { + result = YES; + } + } + + return result; +} + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application didFinishLaunchingWithOptions:launchOptions]) { + result = YES; + } + } + + return result; +} + +/* Can be handled by Info.plist. Not yet supported by Godot. + +// MARK: Scene + +- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {} + +- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {} + +*/ + +// MARK: Life-Cycle + +- (void)applicationDidBecomeActive:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationDidBecomeActive:application]; + } +} + +- (void)applicationWillResignActive:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationWillResignActive:application]; + } +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationDidEnterBackground:application]; + } +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationWillEnterForeground:application]; + } +} + +- (void)applicationWillTerminate:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationWillTerminate:application]; + } +} + +// MARK: Environment Changes + +- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationProtectedDataDidBecomeAvailable:application]; + } +} + +- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationProtectedDataWillBecomeUnavailable:application]; + } +} + +- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationDidReceiveMemoryWarning:application]; + } +} + +- (void)applicationSignificantTimeChange:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationSignificantTimeChange:application]; + } +} + +// MARK: App State Restoration + +- (BOOL)application:(UIApplication *)application shouldSaveSecureApplicationState:(NSCoder *)coder API_AVAILABLE(ios(13.2)) { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application shouldSaveSecureApplicationState:coder]) { + result = YES; + } + } + + return result; +} + +- (BOOL)application:(UIApplication *)application shouldRestoreSecureApplicationState:(NSCoder *)coder API_AVAILABLE(ios(13.2)) { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application shouldRestoreSecureApplicationState:coder]) { + result = YES; + } + } + + return result; +} + +- (UIViewController *)application:(UIApplication *)application viewControllerWithRestorationIdentifierPath:(NSArray<NSString *> *)identifierComponents coder:(NSCoder *)coder { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + UIViewController *controller = [service application:application viewControllerWithRestorationIdentifierPath:identifierComponents coder:coder]; + + if (controller) { + return controller; + } + } + + return nil; +} + +- (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application willEncodeRestorableStateWithCoder:coder]; + } +} + +- (void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application didDecodeRestorableStateWithCoder:coder]; + } +} + +// MARK: Download Data in Background + +- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application handleEventsForBackgroundURLSession:identifier completionHandler:completionHandler]; + } + + completionHandler(); +} + +// MARK: Remote Notification + +- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; + } +} + +- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application didFailToRegisterForRemoteNotificationsWithError:error]; + } +} + +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; + } + + completionHandler(UIBackgroundFetchResultNoData); +} + +// MARK: User Activity and Handling Quick Actions + +- (BOOL)application:(UIApplication *)application willContinueUserActivityWithType:(NSString *)userActivityType { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application willContinueUserActivityWithType:userActivityType]) { + result = YES; + } + } + + return result; +} + +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application continueUserActivity:userActivity restorationHandler:restorationHandler]) { + result = YES; + } + } + + return result; +} + +- (void)application:(UIApplication *)application didUpdateUserActivity:(NSUserActivity *)userActivity { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application didUpdateUserActivity:userActivity]; + } +} + +- (void)application:(UIApplication *)application didFailToContinueUserActivityWithType:(NSString *)userActivityType error:(NSError *)error { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application didFailToContinueUserActivityWithType:userActivityType error:error]; + } +} + +- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded))completionHandler { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application performActionForShortcutItem:shortcutItem completionHandler:completionHandler]; + } +} + +// MARK: WatchKit + +- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *replyInfo))reply { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application handleWatchKitExtensionRequest:userInfo reply:reply]; + } +} + +// MARK: HealthKit + +- (void)applicationShouldRequestHealthAuthorization:(UIApplication *)application { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service applicationShouldRequestHealthAuthorization:application]; + } +} + +// MARK: Opening an URL + +- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:app openURL:url options:options]) { + return YES; + } + } + + return NO; +} + +// MARK: Disallowing Specified App Extension Types + +- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(UIApplicationExtensionPointIdentifier)extensionPointIdentifier { + BOOL result = NO; + + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + if ([service application:application shouldAllowExtensionPointIdentifier:extensionPointIdentifier]) { + result = YES; + } + } + + return result; +} + +// MARK: SiriKit + +- (id)application:(UIApplication *)application handlerForIntent:(INIntent *)intent API_AVAILABLE(ios(14.0)) { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + id result = [service application:application handlerForIntent:intent]; + + if (result) { + return result; + } + } + + return nil; +} + +// MARK: CloudKit + +- (void)application:(UIApplication *)application userDidAcceptCloudKitShareWithMetadata:(CKShareMetadata *)cloudKitShareMetadata { + for (ApplicationDelegateService *service in services) { + if (![service respondsToSelector:_cmd]) { + continue; + } + + [service application:application userDidAcceptCloudKitShareWithMetadata:cloudKitShareMetadata]; + } +} + +/* Handled By Info.plist file for now + +// MARK: Interface Geometry + +- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {} + +*/ + +@end diff --git a/platform/iphone/main.m b/platform/iphone/main.m index c292f02822..351b40a881 100644 --- a/platform/iphone/main.m +++ b/platform/iphone/main.m @@ -28,7 +28,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#import "app_delegate.h" +#import "godot_app_delegate.h" #import <UIKit/UIKit.h> #include <stdio.h> @@ -49,7 +49,8 @@ int main(int argc, char *argv[]) { printf("running app main\n"); @autoreleasepool { - UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + NSString *className = NSStringFromClass([GodotApplicalitionDelegate class]); + UIApplicationMain(argc, argv, nil, className); } printf("main done\n"); return 0; diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index e6e35f6aa9..71189cf697 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -107,7 +107,6 @@ def configure(env): env["CC"] = "emcc" env["CXX"] = "em++" - env["LINK"] = "emcc" env["AR"] = "emar" env["RANLIB"] = "emranlib" diff --git a/platform/javascript/display_server_javascript.cpp b/platform/javascript/display_server_javascript.cpp index 768e326e80..af8800d565 100644 --- a/platform/javascript/display_server_javascript.cpp +++ b/platform/javascript/display_server_javascript.cpp @@ -600,13 +600,11 @@ void DisplayServerJavaScript::process_joypads() { #if 0 bool DisplayServerJavaScript::is_joy_known(int p_device) { - return Input::get_singleton()->is_joy_mapped(p_device); } String DisplayServerJavaScript::get_joy_guid(int p_device) const { - return Input::get_singleton()->get_joy_guid_remapped(p_device); } #endif diff --git a/platform/javascript/engine/preloader.js b/platform/javascript/engine/preloader.js index 17918eae38..b3467d009f 100644 --- a/platform/javascript/engine/preloader.js +++ b/platform/javascript/engine/preloader.js @@ -1,5 +1,4 @@ var Preloader = /** @constructor */ function() { - var DOWNLOAD_ATTEMPTS_MAX = 4; var progressFunc = null; var lastProgress = { loaded: 0, total: 0 }; @@ -20,9 +19,7 @@ var Preloader = /** @constructor */ function() { } function onXHREvent(resolve, reject, file, tracker, ev) { - if (this.status >= 400) { - if (this.status < 500 || ++tracker[file].attempts >= DOWNLOAD_ATTEMPTS_MAX) { reject(new Error("Failed loading file '" + file + "': " + this.statusText)); this.abort(); @@ -103,7 +100,6 @@ var Preloader = /** @constructor */ function() { }; var animateProgress = function() { - var loaded = 0; var total = 0; var totalIsValid = true; diff --git a/platform/javascript/engine/utils.js b/platform/javascript/engine/utils.js index 10e3abe91e..8455739a25 100644 --- a/platform/javascript/engine/utils.js +++ b/platform/javascript/engine/utils.js @@ -1,5 +1,4 @@ var Utils = { - createLocateRewrite: function(execName) { function rw(path) { if (path.endsWith('.worker.js')) { @@ -38,7 +37,6 @@ var Utils = { }, isWebGLAvailable: function(majorVersion = 1) { - var testContext = false; try { var testCanvas = document.createElement('canvas'); diff --git a/platform/javascript/native/audio.worklet.js b/platform/javascript/native/audio.worklet.js index ad7957e45c..f91787b993 100644 --- a/platform/javascript/native/audio.worklet.js +++ b/platform/javascript/native/audio.worklet.js @@ -28,7 +28,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ class RingBuffer { - constructor(p_buffer, p_state) { this.buffer = p_buffer; this.avail = p_state; @@ -46,7 +45,7 @@ class RingBuffer { read(output) { const size = this.buffer.length; - let from = 0 + let from = 0; let to_write = output.length; if (this.rpos + to_write > size) { const high = size - this.rpos; @@ -151,7 +150,7 @@ class GodotProcessor extends AudioWorkletProcessor { const output = outputs[0]; const chunk = output[0].length * output.length; if (this.output_buffer.length != chunk) { - this.output_buffer = new Float32Array(chunk) + this.output_buffer = new Float32Array(chunk); } if (this.output.data_left() >= chunk) { this.output.read(this.output_buffer); diff --git a/platform/javascript/native/http_request.js b/platform/javascript/native/http_request.js index f621689f9d..272154aee3 100644 --- a/platform/javascript/native/http_request.js +++ b/platform/javascript/native/http_request.js @@ -28,9 +28,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ var GodotHTTPRequest = { - $GodotHTTPRequest: { - requests: [], getUnusedRequestId: function() { diff --git a/platform/javascript/native/library_godot_audio.js b/platform/javascript/native/library_godot_audio.js index 846359b8b2..3a0c8f297a 100644 --- a/platform/javascript/native/library_godot_audio.js +++ b/platform/javascript/native/library_godot_audio.js @@ -29,7 +29,6 @@ /*************************************************************************/ const GodotAudio = { - $GodotAudio__deps: ['$GodotOS'], $GodotAudio: { ctx: null, @@ -182,7 +181,6 @@ mergeInto(LibraryManager.library, GodotAudio); * The AudioWorklet API driver, used when threads are available. */ const GodotAudioWorklet = { - $GodotAudioWorklet__deps: ['$GodotAudio'], $GodotAudioWorklet: { promise: null, @@ -269,7 +267,6 @@ mergeInto(LibraryManager.library, GodotAudioWorklet); * The deprecated ScriptProcessorNode API, used when threads are disabled. */ const GodotAudioScript = { - $GodotAudioScript__deps: ['$GodotAudio'], $GodotAudioScript: { script: null, diff --git a/platform/javascript/native/library_godot_display.js b/platform/javascript/native/library_godot_display.js index 490b9181d0..11bbfbc60d 100644 --- a/platform/javascript/native/library_godot_display.js +++ b/platform/javascript/native/library_godot_display.js @@ -78,7 +78,6 @@ mergeInto(LibraryManager.library, GodotDisplayListeners); * deferred callbacks won't be able to access the files. */ const GodotDisplayDragDrop = { - $GodotDisplayDragDrop__deps: ['$FS', '$GodotFS'], $GodotDisplayDragDrop: { promises: [], diff --git a/platform/javascript/native/library_godot_editor_tools.js b/platform/javascript/native/library_godot_editor_tools.js index bd62bbf4e1..202a198adb 100644 --- a/platform/javascript/native/library_godot_editor_tools.js +++ b/platform/javascript/native/library_godot_editor_tools.js @@ -29,7 +29,6 @@ /*************************************************************************/ const GodotEditorTools = { - godot_js_editor_download_file__deps: ['$FS'], godot_js_editor_download_file: function(p_path, p_name, p_mime) { const path = UTF8ToString(p_path); diff --git a/platform/javascript/native/library_godot_eval.js b/platform/javascript/native/library_godot_eval.js index e83c61dd9d..44d356a4fb 100644 --- a/platform/javascript/native/library_godot_eval.js +++ b/platform/javascript/native/library_godot_eval.js @@ -29,7 +29,6 @@ /*************************************************************************/ const GodotEval = { - godot_js_eval__deps: ['$GodotOS'], godot_js_eval: function(p_js, p_use_global_ctx, p_union_ptr, p_byte_arr, p_byte_arr_write, p_callback) { const js_code = UTF8ToString(p_js); @@ -47,7 +46,6 @@ const GodotEval = { } switch (typeof eval_ret) { - case 'boolean': setValue(p_union_ptr, eval_ret, 'i32'); return 1; // BOOL diff --git a/platform/javascript/native/library_godot_os.js b/platform/javascript/native/library_godot_os.js index ed48280674..a1424a691a 100644 --- a/platform/javascript/native/library_godot_os.js +++ b/platform/javascript/native/library_godot_os.js @@ -53,7 +53,6 @@ autoAddDeps(IDHandler, "$IDHandler"); mergeInto(LibraryManager.library, IDHandler); const GodotConfig = { - $GodotConfig__postset: 'Module["initConfig"] = GodotConfig.init_config;', $GodotConfig: { canvas: null, @@ -209,7 +208,6 @@ const GodotOS = { 'GodotOS._fs_sync_promise = Promise.resolve();', ].join(''), $GodotOS: { - request_quit: function() {}, _async_cbs: [], _fs_sync_promise: null, diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py index ea101e24dd..a1bc5867c5 100644 --- a/platform/linuxbsd/detect.py +++ b/platform/linuxbsd/detect.py @@ -129,7 +129,6 @@ def configure(env): if "clang++" not in os.path.basename(env["CXX"]): env["CC"] = "clang" env["CXX"] = "clang++" - env["LINK"] = "clang++" env.Append(CPPDEFINES=["TYPED_METHOD_BIND"]) env.extra_suffix = ".llvm" + env.extra_suffix diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp index bb8086d3a3..5fa737af8e 100644 --- a/platform/linuxbsd/display_server_x11.cpp +++ b/platform/linuxbsd/display_server_x11.cpp @@ -794,7 +794,9 @@ void DisplayServerX11::window_set_title(const String &p_title, WindowID p_window Atom _net_wm_name = XInternAtom(x11_display, "_NET_WM_NAME", false); Atom utf8_string = XInternAtom(x11_display, "UTF8_STRING", false); - XChangeProperty(x11_display, wd.x11_window, _net_wm_name, utf8_string, 8, PropModeReplace, (unsigned char *)p_title.utf8().get_data(), p_title.utf8().length()); + if (_net_wm_name != None && utf8_string != None) { + XChangeProperty(x11_display, wd.x11_window, _net_wm_name, utf8_string, 8, PropModeReplace, (unsigned char *)p_title.utf8().get_data(), p_title.utf8().length()); + } } void DisplayServerX11::window_set_mouse_passthrough(const Vector<Vector2> &p_region, WindowID p_window) { @@ -1276,7 +1278,9 @@ void DisplayServerX11::_set_wm_fullscreen(WindowID p_window, bool p_enabled) { hints.flags = 2; hints.decorations = 0; property = XInternAtom(x11_display, "_MOTIF_WM_HINTS", True); - XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + if (property != None) { + XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + } } if (p_enabled) { @@ -1303,7 +1307,9 @@ void DisplayServerX11::_set_wm_fullscreen(WindowID p_window, bool p_enabled) { // set bypass compositor hint Atom bypass_compositor = XInternAtom(x11_display, "_NET_WM_BYPASS_COMPOSITOR", False); unsigned long compositing_disable_on = p_enabled ? 1 : 0; - XChangeProperty(x11_display, wd.x11_window, bypass_compositor, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&compositing_disable_on, 1); + if (bypass_compositor != None) { + XChangeProperty(x11_display, wd.x11_window, bypass_compositor, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&compositing_disable_on, 1); + } XFlush(x11_display); @@ -1317,7 +1323,9 @@ void DisplayServerX11::_set_wm_fullscreen(WindowID p_window, bool p_enabled) { hints.flags = 2; hints.decorations = window_get_flag(WINDOW_FLAG_BORDERLESS, p_window) ? 0 : 1; property = XInternAtom(x11_display, "_MOTIF_WM_HINTS", True); - XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + if (property != None) { + XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + } } } @@ -1511,7 +1519,9 @@ void DisplayServerX11::window_set_flag(WindowFlags p_flag, bool p_enabled, Windo hints.flags = 2; hints.decorations = p_enabled ? 0 : 1; property = XInternAtom(x11_display, "_MOTIF_WM_HINTS", True); - XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + if (property != None) { + XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + } // Preserve window size window_set_size(window_get_size(p_window), p_window); @@ -3385,7 +3395,9 @@ void DisplayServerX11::set_icon(const Ref<Image> &p_icon) { pr += 4; } - XChangeProperty(x11_display, wd.x11_window, net_wm_icon, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)pd.ptr(), pd.size()); + if (net_wm_icon != None) { + XChangeProperty(x11_display, wd.x11_window, net_wm_icon, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)pd.ptr(), pd.size()); + } if (!g_set_icon_error) { break; @@ -3478,7 +3490,9 @@ DisplayServerX11::WindowID DisplayServerX11::_create_window(WindowMode p_mode, u { const long pid = OS::get_singleton()->get_process_id(); Atom net_wm_pid = XInternAtom(x11_display, "_NET_WM_PID", False); - XChangeProperty(x11_display, wd.x11_window, net_wm_pid, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1); + if (net_wm_pid != None) { + XChangeProperty(x11_display, wd.x11_window, net_wm_pid, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1); + } } long im_event_mask = 0; @@ -3526,7 +3540,9 @@ DisplayServerX11::WindowID DisplayServerX11::_create_window(WindowMode p_mode, u /* set the titlebar name */ XStoreName(x11_display, wd.x11_window, "Godot"); XSetWMProtocols(x11_display, wd.x11_window, &wm_delete, 1); - XChangeProperty(x11_display, wd.x11_window, xdnd_aware, XA_ATOM, 32, PropModeReplace, (unsigned char *)&xdnd_version, 1); + if (xdnd_aware != None) { + XChangeProperty(x11_display, wd.x11_window, xdnd_aware, XA_ATOM, 32, PropModeReplace, (unsigned char *)&xdnd_version, 1); + } if (xim && xim_style) { // Block events polling while changing input focus @@ -3557,20 +3573,25 @@ DisplayServerX11::WindowID DisplayServerX11::_create_window(WindowMode p_mode, u hints.flags = 2; hints.decorations = 0; property = XInternAtom(x11_display, "_MOTIF_WM_HINTS", True); - XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + if (property != None) { + XChangeProperty(x11_display, wd.x11_window, property, property, 32, PropModeReplace, (unsigned char *)&hints, 5); + } } if (wd.menu_type) { // Set Utility type to disable fade animations. Atom type_atom = XInternAtom(x11_display, "_NET_WM_WINDOW_TYPE_UTILITY", False); Atom wt_atom = XInternAtom(x11_display, "_NET_WM_WINDOW_TYPE", False); - - XChangeProperty(x11_display, wd.x11_window, wt_atom, XA_ATOM, 32, PropModeReplace, (unsigned char *)&type_atom, 1); + if (wt_atom != None && type_atom != None) { + XChangeProperty(x11_display, wd.x11_window, wt_atom, XA_ATOM, 32, PropModeReplace, (unsigned char *)&type_atom, 1); + } } else { Atom type_atom = XInternAtom(x11_display, "_NET_WM_WINDOW_TYPE_NORMAL", False); Atom wt_atom = XInternAtom(x11_display, "_NET_WM_WINDOW_TYPE", False); - XChangeProperty(x11_display, wd.x11_window, wt_atom, XA_ATOM, 32, PropModeReplace, (unsigned char *)&type_atom, 1); + if (wt_atom != None && type_atom != None) { + XChangeProperty(x11_display, wd.x11_window, wt_atom, XA_ATOM, 32, PropModeReplace, (unsigned char *)&type_atom, 1); + } } _update_size_hints(id); diff --git a/platform/linuxbsd/joypad_linux.cpp b/platform/linuxbsd/joypad_linux.cpp index fda1358dfd..4a9d0a8181 100644 --- a/platform/linuxbsd/joypad_linux.cpp +++ b/platform/linuxbsd/joypad_linux.cpp @@ -459,9 +459,9 @@ void JoypadLinux::process_joypads() { case ABS_HAT0X: if (ev.value != 0) { if (ev.value < 0) { - joy->dpad |= Input::HAT_MASK_LEFT; + joy->dpad = (joy->dpad | Input::HAT_MASK_LEFT) & ~Input::HAT_MASK_RIGHT; } else { - joy->dpad |= Input::HAT_MASK_RIGHT; + joy->dpad = (joy->dpad | Input::HAT_MASK_RIGHT) & ~Input::HAT_MASK_LEFT; } } else { joy->dpad &= ~(Input::HAT_MASK_LEFT | Input::HAT_MASK_RIGHT); @@ -473,9 +473,9 @@ void JoypadLinux::process_joypads() { case ABS_HAT0Y: if (ev.value != 0) { if (ev.value < 0) { - joy->dpad |= Input::HAT_MASK_UP; + joy->dpad = (joy->dpad | Input::HAT_MASK_UP) & ~Input::HAT_MASK_DOWN; } else { - joy->dpad |= Input::HAT_MASK_DOWN; + joy->dpad = (joy->dpad | Input::HAT_MASK_DOWN) & ~Input::HAT_MASK_UP; } } else { joy->dpad &= ~(Input::HAT_MASK_UP | Input::HAT_MASK_DOWN); diff --git a/platform/linuxbsd/key_mapping_x11.cpp b/platform/linuxbsd/key_mapping_x11.cpp index 77512b1a9e..78049f2dfc 100644 --- a/platform/linuxbsd/key_mapping_x11.cpp +++ b/platform/linuxbsd/key_mapping_x11.cpp @@ -185,7 +185,6 @@ struct _TranslatePair { }; static _TranslatePair _scancode_to_keycode[] = { - { KEY_ESCAPE, 0x09 }, { KEY_1, 0x0A }, { KEY_2, 0x0B }, @@ -354,7 +353,6 @@ struct _XTranslateUnicodePair { }; enum { - _KEYSYM_MAX = 759 }; @@ -1160,7 +1158,6 @@ struct _XTranslateUnicodePairReverse { }; enum { - _UNICODE_MAX = 750 }; diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 64e1d94f39..ea41479bb0 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -87,8 +87,8 @@ def configure(env): if env["arch"] == "arm64": print("Building for macOS 10.15+, platform arm64.") - env.Append(CCFLAGS=["-arch", "arm64", "-mmacosx-version-min=10.15", "-target", "arm64-apple-macos10.15"]) - env.Append(LINKFLAGS=["-arch", "arm64", "-mmacosx-version-min=10.15", "-target", "arm64-apple-macos10.15"]) + env.Append(CCFLAGS=["-arch", "arm64", "-mmacosx-version-min=10.15"]) + env.Append(LINKFLAGS=["-arch", "arm64", "-mmacosx-version-min=10.15"]) else: print("Building for macOS 10.12+, platform x86-64.") env.Append(CCFLAGS=["-arch", "x86_64", "-mmacosx-version-min=10.12"]) @@ -99,7 +99,6 @@ def configure(env): mpprefix = os.environ.get("MACPORTS_PREFIX", "/opt/local") mpclangver = env["macports_clang"] env["CC"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang" - env["LINK"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++" env["CXX"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++" env["AR"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ar" env["RANLIB"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ranlib" @@ -134,12 +133,6 @@ def configure(env): env["AS"] = basecmd + "as" env.Append(CPPDEFINES=["__MACPORTS__"]) # hack to fix libvpx MM256_BROADCASTSI128_SI256 define - if env["CXX"] == "clang++": - # This should now work with clang++, re-enable if there are issues - # env.Append(CPPDEFINES=["TYPED_METHOD_BIND"]) - env["CC"] = "clang" - env["LINK"] = "clang++" - if env["use_ubsan"] or env["use_asan"] or env["use_tsan"]: env.extra_suffix += "s" diff --git a/platform/server/detect.py b/platform/server/detect.py index f9e151f956..a3f60b0710 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -94,7 +94,6 @@ def configure(env): if "clang++" not in os.path.basename(env["CXX"]): env["CC"] = "clang" env["CXX"] = "clang++" - env["LINK"] = "clang++" env.Append(CPPDEFINES=["TYPED_METHOD_BIND"]) env.extra_suffix = ".llvm" + env.extra_suffix diff --git a/platform/windows/detect.py b/platform/windows/detect.py index 934314b2f2..e0b2a52014 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -383,18 +383,17 @@ def configure_mingw(env): if env["use_llvm"]: env["CC"] = mingw_prefix + "clang" - env["AS"] = mingw_prefix + "as" env["CXX"] = mingw_prefix + "clang++" + env["AS"] = mingw_prefix + "as" env["AR"] = mingw_prefix + "ar" env["RANLIB"] = mingw_prefix + "ranlib" - env["LINK"] = mingw_prefix + "clang++" else: env["CC"] = mingw_prefix + "gcc" - env["AS"] = mingw_prefix + "as" env["CXX"] = mingw_prefix + "g++" + env["AS"] = mingw_prefix + "as" env["AR"] = mingw_prefix + "gcc-ar" env["RANLIB"] = mingw_prefix + "gcc-ranlib" - env["LINK"] = mingw_prefix + "g++" + env["x86_libtheora_opt_gcc"] = True if env["use_lto"]: diff --git a/platform/windows/key_mapping_windows.cpp b/platform/windows/key_mapping_windows.cpp index d8d0b13068..25eff7df57 100644 --- a/platform/windows/key_mapping_windows.cpp +++ b/platform/windows/key_mapping_windows.cpp @@ -38,7 +38,6 @@ struct _WinTranslatePair { }; static _WinTranslatePair _vk_to_keycode[] = { - { KEY_BACKSPACE, VK_BACK }, // (0x08) // backspace { KEY_TAB, VK_TAB }, //(0x09) @@ -238,7 +237,6 @@ VK_OEM_CLEAR (0xFE) */ static _WinTranslatePair _scancode_to_keycode[] = { - { KEY_ESCAPE, 0x01 }, { KEY_1, 0x02 }, { KEY_2, 0x03 }, diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index b108d74b2e..646bc3aa4c 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -466,8 +466,10 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments, ERR_FAIL_COND_V(ret == 0, ERR_CANT_FORK); if (p_blocking) { - DWORD ret2 = WaitForSingleObject(pi.pi.hProcess, INFINITE); + WaitForSingleObject(pi.pi.hProcess, INFINITE); if (r_exitcode) { + DWORD ret2; + GetExitCodeProcess(pi.pi.hProcess, &ret2); *r_exitcode = ret2; } diff --git a/scene/2d/cpu_particles_2d.h b/scene/2d/cpu_particles_2d.h index 2296e0434e..0f2a3e4920 100644 --- a/scene/2d/cpu_particles_2d.h +++ b/scene/2d/cpu_particles_2d.h @@ -46,7 +46,6 @@ public: }; enum Parameter { - PARAM_INITIAL_LINEAR_VELOCITY, PARAM_ANGULAR_VELOCITY, PARAM_ORBIT_VELOCITY, diff --git a/scene/3d/camera_3d.cpp b/scene/3d/camera_3d.cpp index a6433f8f58..191159448a 100644 --- a/scene/3d/camera_3d.cpp +++ b/scene/3d/camera_3d.cpp @@ -519,8 +519,8 @@ void Camera3D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fov", PROPERTY_HINT_RANGE, "1,179,0.1"), "set_fov", "get_fov"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "size", PROPERTY_HINT_RANGE, "0.1,16384,0.01"), "set_size", "get_size"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "frustum_offset"), "set_frustum_offset", "get_frustum_offset"); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "near", PROPERTY_HINT_EXP_RANGE, "0.01,8192,0.01,or_greater"), "set_znear", "get_znear"); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "far", PROPERTY_HINT_EXP_RANGE, "0.1,8192,0.1,or_greater"), "set_zfar", "get_zfar"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "near", PROPERTY_HINT_EXP_RANGE, "0.001,8192,0.001,or_greater"), "set_znear", "get_znear"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "far", PROPERTY_HINT_EXP_RANGE, "0.01,8192,0.01,or_greater"), "set_zfar", "get_zfar"); BIND_ENUM_CONSTANT(PROJECTION_PERSPECTIVE); BIND_ENUM_CONSTANT(PROJECTION_ORTHOGONAL); diff --git a/scene/3d/camera_3d.h b/scene/3d/camera_3d.h index 6a778d45a2..04cec92b14 100644 --- a/scene/3d/camera_3d.h +++ b/scene/3d/camera_3d.h @@ -42,7 +42,6 @@ class Camera3D : public Node3D { public: enum Projection { - PROJECTION_PERSPECTIVE, PROJECTION_ORTHOGONAL, PROJECTION_FRUSTUM @@ -103,7 +102,6 @@ protected: public: enum { - NOTIFICATION_BECAME_CURRENT = 50, NOTIFICATION_LOST_CURRENT = 51 }; diff --git a/scene/3d/cpu_particles_3d.h b/scene/3d/cpu_particles_3d.h index 078861011b..da4811b60e 100644 --- a/scene/3d/cpu_particles_3d.h +++ b/scene/3d/cpu_particles_3d.h @@ -46,7 +46,6 @@ public: }; enum Parameter { - PARAM_INITIAL_LINEAR_VELOCITY, PARAM_ANGULAR_VELOCITY, PARAM_ORBIT_VELOCITY, diff --git a/scene/3d/node_3d.h b/scene/3d/node_3d.h index 229e0f2c8c..5fb421c930 100644 --- a/scene/3d/node_3d.h +++ b/scene/3d/node_3d.h @@ -111,7 +111,6 @@ protected: public: enum { - NOTIFICATION_TRANSFORM_CHANGED = SceneTree::NOTIFICATION_TRANSFORM_CHANGED, NOTIFICATION_ENTER_WORLD = 41, NOTIFICATION_EXIT_WORLD = 42, diff --git a/scene/3d/path_3d.h b/scene/3d/path_3d.h index 1aa9f7ffd2..1b0f5fa4e0 100644 --- a/scene/3d/path_3d.h +++ b/scene/3d/path_3d.h @@ -57,7 +57,6 @@ class PathFollow3D : public Node3D { public: enum RotationMode { - ROTATION_NONE, ROTATION_Y, ROTATION_XY, diff --git a/scene/3d/physics_joint_3d.h b/scene/3d/physics_joint_3d.h index 8e2de82527..d1a375ca5d 100644 --- a/scene/3d/physics_joint_3d.h +++ b/scene/3d/physics_joint_3d.h @@ -203,7 +203,6 @@ class ConeTwistJoint3D : public Joint3D { public: enum Param { - PARAM_SWING_SPAN, PARAM_TWIST_SPAN, PARAM_BIAS, @@ -237,7 +236,6 @@ class Generic6DOFJoint3D : public Joint3D { public: enum Param { - PARAM_LINEAR_LOWER_LIMIT = PhysicsServer3D::G6DOF_JOINT_LINEAR_LOWER_LIMIT, PARAM_LINEAR_UPPER_LIMIT = PhysicsServer3D::G6DOF_JOINT_LINEAR_UPPER_LIMIT, PARAM_LINEAR_LIMIT_SOFTNESS = PhysicsServer3D::G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS, diff --git a/scene/3d/skeleton_3d.h b/scene/3d/skeleton_3d.h index 95c49750fa..c54f89d3ce 100644 --- a/scene/3d/skeleton_3d.h +++ b/scene/3d/skeleton_3d.h @@ -149,7 +149,6 @@ protected: public: enum { - NOTIFICATION_UPDATE_SKELETON = 50 }; diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index 9f4d64cb32..b6999beff4 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -204,7 +204,6 @@ Ref<TriangleMesh> SpriteBase3D::generate_triangle_mesh() const { float pixel_size = get_pixel_size(); Vector2 vertices[4] = { - (final_rect.position + Vector2(0, final_rect.size.y)) * pixel_size, (final_rect.position + final_rect.size) * pixel_size, (final_rect.position + Vector2(final_rect.size.x, 0)) * pixel_size, @@ -414,7 +413,6 @@ void Sprite3D::_draw() { float pixel_size = get_pixel_size(); Vector2 vertices[4] = { - (final_rect.position + Vector2(0, final_rect.size.y)) * pixel_size, (final_rect.position + final_rect.size) * pixel_size, (final_rect.position + Vector2(final_rect.size.x, 0)) * pixel_size, @@ -740,7 +738,6 @@ void AnimatedSprite3D::_draw() { float pixel_size = get_pixel_size(); Vector2 vertices[4] = { - (final_rect.position + Vector2(0, final_rect.size.y)) * pixel_size, (final_rect.position + final_rect.size) * pixel_size, (final_rect.position + Vector2(final_rect.size.x, 0)) * pixel_size, diff --git a/scene/3d/vehicle_body_3d.cpp b/scene/3d/vehicle_body_3d.cpp index b58f313c16..e27307e75f 100644 --- a/scene/3d/vehicle_body_3d.cpp +++ b/scene/3d/vehicle_body_3d.cpp @@ -634,7 +634,6 @@ VehicleBody3D::btVehicleWheelContactPoint::btVehicleWheelContactPoint(PhysicsDir /* TODO: Why is this code unused? if (body1) { - Vector3 r0 = frictionPosWorld - body1->get_global_transform().origin; Vector3 c0 = (r0).cross(frictionDirectionWorld); Vector3 vec = s->get_inverse_inertia_tensor().xform_inv(c0).cross(r0); diff --git a/scene/3d/voxelizer.cpp b/scene/3d/voxelizer.cpp index de5496ee35..c570fc7b7c 100644 --- a/scene/3d/voxelizer.cpp +++ b/scene/3d/voxelizer.cpp @@ -580,7 +580,6 @@ void Voxelizer::_fixup_plot(int p_idx, int p_level) { /*if (bake_light.size()) { for(int i=0;i<6;i++) { - } }*/ diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h index e1b9dffb1f..dbce5643c7 100644 --- a/scene/animation/animation_player.h +++ b/scene/animation/animation_player.h @@ -72,7 +72,6 @@ public: private: enum { - NODE_CACHE_UPDATE_MAX = 1024, BLEND_FROM_MAX = 3 }; diff --git a/scene/animation/tween.h b/scene/animation/tween.h index 668870c526..822fcf0b6f 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -69,7 +69,6 @@ public: private: enum InterpolateType { - INTER_PROPERTY, INTER_METHOD, FOLLOW_PROPERTY, diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 3414b04978..0381f69bcb 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -339,7 +339,6 @@ void Control::_get_property_list(List<PropertyInfo> *p_list) const { Ref<Theme> theme = Theme::get_default(); /* Using the default theme since the properties below are meant for editor only if (data.theme.is_valid()) { - theme = data.theme; } else { theme = Theme::get_default(); @@ -728,13 +727,13 @@ Size2 Control::get_minimum_size() const { } template <class T> -bool Control::_find_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, T &r_ret, T (Theme::*get_func)(const StringName &, const StringName &) const, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_type) { +bool Control::_find_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, T &r_ret, T (Theme::*get_func)(const StringName &, const StringName &) const, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_node_type) { // try with custom themes Control *theme_owner = p_theme_owner; Window *theme_owner_window = p_theme_owner_window; while (theme_owner || theme_owner_window) { - StringName class_name = p_type; + StringName class_name = p_node_type; while (class_name != StringName()) { if (theme_owner && (theme_owner->data.theme.operator->()->*has_func)(p_name, class_name)) { @@ -771,13 +770,13 @@ bool Control::_find_theme_item(Control *p_theme_owner, Window *p_theme_owner_win return false; } -bool Control::_has_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_type) { +bool Control::_has_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_node_type) { // try with custom themes Control *theme_owner = p_theme_owner; Window *theme_owner_window = p_theme_owner_window; while (theme_owner || theme_owner_window) { - StringName class_name = p_type; + StringName class_name = p_node_type; while (class_name != StringName()) { if (theme_owner && (theme_owner->data.theme.operator->()->*has_func)(p_name, class_name)) { @@ -812,176 +811,176 @@ bool Control::_has_theme_item(Control *p_theme_owner, Window *p_theme_owner_wind return false; } -Ref<Texture2D> Control::get_theme_icon(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +Ref<Texture2D> Control::get_theme_icon(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { const Ref<Texture2D> *tex = data.icon_override.getptr(p_name); if (tex) { return *tex; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return get_icons(data.theme_owner, data.theme_owner_window, p_name, type); } -Ref<Texture2D> Control::get_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { +Ref<Texture2D> Control::get_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { Ref<Texture2D> icon; - if (_find_theme_item(p_theme_owner, p_theme_owner_window, icon, &Theme::get_icon, &Theme::has_icon, p_name, p_type)) { + if (_find_theme_item(p_theme_owner, p_theme_owner_window, icon, &Theme::get_icon, &Theme::has_icon, p_name, p_node_type)) { return icon; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_icon(p_name, p_type)) { - return Theme::get_project_default()->get_icon(p_name, p_type); + if (Theme::get_project_default()->has_icon(p_name, p_node_type)) { + return Theme::get_project_default()->get_icon(p_name, p_node_type); } } - return Theme::get_default()->get_icon(p_name, p_type); + return Theme::get_default()->get_icon(p_name, p_node_type); } -Ref<Shader> Control::get_theme_shader(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +Ref<Shader> Control::get_theme_shader(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { const Ref<Shader> *sdr = data.shader_override.getptr(p_name); if (sdr) { return *sdr; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return get_shaders(data.theme_owner, data.theme_owner_window, p_name, type); } -Ref<Shader> Control::get_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { +Ref<Shader> Control::get_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { Ref<Shader> shader; - if (_find_theme_item(p_theme_owner, p_theme_owner_window, shader, &Theme::get_shader, &Theme::has_shader, p_name, p_type)) { + if (_find_theme_item(p_theme_owner, p_theme_owner_window, shader, &Theme::get_shader, &Theme::has_shader, p_name, p_node_type)) { return shader; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_shader(p_name, p_type)) { - return Theme::get_project_default()->get_shader(p_name, p_type); + if (Theme::get_project_default()->has_shader(p_name, p_node_type)) { + return Theme::get_project_default()->get_shader(p_name, p_node_type); } } - return Theme::get_default()->get_shader(p_name, p_type); + return Theme::get_default()->get_shader(p_name, p_node_type); } -Ref<StyleBox> Control::get_theme_stylebox(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +Ref<StyleBox> Control::get_theme_stylebox(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { const Ref<StyleBox> *style = data.style_override.getptr(p_name); if (style) { return *style; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return get_styleboxs(data.theme_owner, data.theme_owner_window, p_name, type); } -Ref<StyleBox> Control::get_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { +Ref<StyleBox> Control::get_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { Ref<StyleBox> stylebox; - if (_find_theme_item(p_theme_owner, p_theme_owner_window, stylebox, &Theme::get_stylebox, &Theme::has_stylebox, p_name, p_type)) { + if (_find_theme_item(p_theme_owner, p_theme_owner_window, stylebox, &Theme::get_stylebox, &Theme::has_stylebox, p_name, p_node_type)) { return stylebox; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_stylebox(p_name, p_type)) { - return Theme::get_project_default()->get_stylebox(p_name, p_type); + if (Theme::get_project_default()->has_stylebox(p_name, p_node_type)) { + return Theme::get_project_default()->get_stylebox(p_name, p_node_type); } } - return Theme::get_default()->get_stylebox(p_name, p_type); + return Theme::get_default()->get_stylebox(p_name, p_node_type); } -Ref<Font> Control::get_theme_font(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +Ref<Font> Control::get_theme_font(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { const Ref<Font> *font = data.font_override.getptr(p_name); if (font) { return *font; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return get_fonts(data.theme_owner, data.theme_owner_window, p_name, type); } -Ref<Font> Control::get_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { +Ref<Font> Control::get_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { Ref<Font> font; - if (_find_theme_item(p_theme_owner, p_theme_owner_window, font, &Theme::get_font, &Theme::has_font, p_name, p_type)) { + if (_find_theme_item(p_theme_owner, p_theme_owner_window, font, &Theme::get_font, &Theme::has_font, p_name, p_node_type)) { return font; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_font(p_name, p_type)) { - return Theme::get_project_default()->get_font(p_name, p_type); + if (Theme::get_project_default()->has_font(p_name, p_node_type)) { + return Theme::get_project_default()->get_font(p_name, p_node_type); } } - return Theme::get_default()->get_font(p_name, p_type); + return Theme::get_default()->get_font(p_name, p_node_type); } -Color Control::get_theme_color(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +Color Control::get_theme_color(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { const Color *color = data.color_override.getptr(p_name); if (color) { return *color; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return get_colors(data.theme_owner, data.theme_owner_window, p_name, type); } -Color Control::get_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { +Color Control::get_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { Color color; - if (_find_theme_item(p_theme_owner, p_theme_owner_window, color, &Theme::get_color, &Theme::has_color, p_name, p_type)) { + if (_find_theme_item(p_theme_owner, p_theme_owner_window, color, &Theme::get_color, &Theme::has_color, p_name, p_node_type)) { return color; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_color(p_name, p_type)) { - return Theme::get_project_default()->get_color(p_name, p_type); + if (Theme::get_project_default()->has_color(p_name, p_node_type)) { + return Theme::get_project_default()->get_color(p_name, p_node_type); } } - return Theme::get_default()->get_color(p_name, p_type); + return Theme::get_default()->get_color(p_name, p_node_type); } -int Control::get_theme_constant(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +int Control::get_theme_constant(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { const int *constant = data.constant_override.getptr(p_name); if (constant) { return *constant; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return get_constants(data.theme_owner, data.theme_owner_window, p_name, type); } -int Control::get_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { +int Control::get_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { int constant; - if (_find_theme_item(p_theme_owner, p_theme_owner_window, constant, &Theme::get_constant, &Theme::has_constant, p_name, p_type)) { + if (_find_theme_item(p_theme_owner, p_theme_owner_window, constant, &Theme::get_constant, &Theme::has_constant, p_name, p_node_type)) { return constant; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_constant(p_name, p_type)) { - return Theme::get_project_default()->get_constant(p_name, p_type); + if (Theme::get_project_default()->has_constant(p_name, p_node_type)) { + return Theme::get_project_default()->get_constant(p_name, p_node_type); } } - return Theme::get_default()->get_constant(p_name, p_type); + return Theme::get_default()->get_constant(p_name, p_node_type); } bool Control::has_theme_icon_override(const StringName &p_name) const { @@ -1014,154 +1013,154 @@ bool Control::has_theme_constant_override(const StringName &p_name) const { return constant != nullptr; } -bool Control::has_theme_icon(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +bool Control::has_theme_icon(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { if (has_theme_icon_override(p_name)) { return true; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return has_icons(data.theme_owner, data.theme_owner_window, p_name, type); } -bool Control::has_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { - if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_icon, p_name, p_type)) { +bool Control::has_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { + if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_icon, p_name, p_node_type)) { return true; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_color(p_name, p_type)) { + if (Theme::get_project_default()->has_color(p_name, p_node_type)) { return true; } } - return Theme::get_default()->has_icon(p_name, p_type); + return Theme::get_default()->has_icon(p_name, p_node_type); } -bool Control::has_theme_shader(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +bool Control::has_theme_shader(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { if (has_theme_shader_override(p_name)) { return true; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return has_shaders(data.theme_owner, data.theme_owner_window, p_name, type); } -bool Control::has_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { - if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_shader, p_name, p_type)) { +bool Control::has_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { + if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_shader, p_name, p_node_type)) { return true; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_shader(p_name, p_type)) { + if (Theme::get_project_default()->has_shader(p_name, p_node_type)) { return true; } } - return Theme::get_default()->has_shader(p_name, p_type); + return Theme::get_default()->has_shader(p_name, p_node_type); } -bool Control::has_theme_stylebox(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +bool Control::has_theme_stylebox(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { if (has_theme_stylebox_override(p_name)) { return true; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return has_styleboxs(data.theme_owner, data.theme_owner_window, p_name, type); } -bool Control::has_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { - if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_stylebox, p_name, p_type)) { +bool Control::has_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { + if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_stylebox, p_name, p_node_type)) { return true; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_stylebox(p_name, p_type)) { + if (Theme::get_project_default()->has_stylebox(p_name, p_node_type)) { return true; } } - return Theme::get_default()->has_stylebox(p_name, p_type); + return Theme::get_default()->has_stylebox(p_name, p_node_type); } -bool Control::has_theme_font(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +bool Control::has_theme_font(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { if (has_theme_font_override(p_name)) { return true; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return has_fonts(data.theme_owner, data.theme_owner_window, p_name, type); } -bool Control::has_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { - if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_font, p_name, p_type)) { +bool Control::has_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { + if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_font, p_name, p_node_type)) { return true; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_font(p_name, p_type)) { + if (Theme::get_project_default()->has_font(p_name, p_node_type)) { return true; } } - return Theme::get_default()->has_font(p_name, p_type); + return Theme::get_default()->has_font(p_name, p_node_type); } -bool Control::has_theme_color(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +bool Control::has_theme_color(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { if (has_theme_color_override(p_name)) { return true; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); return has_colors(data.theme_owner, data.theme_owner_window, p_name, type); } -bool Control::has_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { - if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_color, p_name, p_type)) { +bool Control::has_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { + if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_color, p_name, p_node_type)) { return true; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_color(p_name, p_type)) { + if (Theme::get_project_default()->has_color(p_name, p_node_type)) { return true; } } - return Theme::get_default()->has_color(p_name, p_type); + return Theme::get_default()->has_color(p_name, p_node_type); } -bool Control::has_theme_constant(const StringName &p_name, const StringName &p_type) const { - if (p_type == StringName() || p_type == get_class_name()) { +bool Control::has_theme_constant(const StringName &p_name, const StringName &p_node_type) const { + if (p_node_type == StringName() || p_node_type == get_class_name()) { if (has_theme_constant_override(p_name)) { return true; } } - StringName type = p_type ? p_type : get_class_name(); + StringName type = p_node_type ? p_node_type : get_class_name(); - return has_constants(data.theme_owner, data.theme_owner_window, p_name, p_type); + return has_constants(data.theme_owner, data.theme_owner_window, p_name, p_node_type); } -bool Control::has_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type) { - if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_constant, p_name, p_type)) { +bool Control::has_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type) { + if (_has_theme_item(p_theme_owner, p_theme_owner_window, &Theme::has_constant, p_name, p_node_type)) { return true; } if (Theme::get_project_default().is_valid()) { - if (Theme::get_project_default()->has_constant(p_name, p_type)) { + if (Theme::get_project_default()->has_constant(p_name, p_node_type)) { return true; } } - return Theme::get_default()->has_constant(p_name, p_type); + return Theme::get_default()->has_constant(p_name, p_node_type); } Rect2 Control::get_parent_anchorable_rect() const { diff --git a/scene/gui/control.h b/scene/gui/control.h index f2f558cf4f..85b3227884 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -49,7 +49,6 @@ class Control : public CanvasItem { public: enum Anchor { - ANCHOR_BEGIN = 0, ANCHOR_END = 1 }; @@ -67,7 +66,6 @@ public: }; enum SizeFlags { - SIZE_FILL = 1, SIZE_EXPAND = 2, SIZE_EXPAND_FILL = SIZE_EXPAND | SIZE_FILL, @@ -236,23 +234,23 @@ private: static void _propagate_theme_changed(Node *p_at, Control *p_owner, Window *p_owner_window, bool p_assign = true); template <class T> - _FORCE_INLINE_ static bool _find_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, T &, T (Theme::*get_func)(const StringName &, const StringName &) const, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_type); + _FORCE_INLINE_ static bool _find_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, T &, T (Theme::*get_func)(const StringName &, const StringName &) const, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_node_type); - _FORCE_INLINE_ static bool _has_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_type); + _FORCE_INLINE_ static bool _has_theme_item(Control *p_theme_owner, Window *p_theme_owner_window, bool (Theme::*has_func)(const StringName &, const StringName &) const, const StringName &p_name, const StringName &p_node_type); - static Ref<Texture2D> get_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static Ref<Shader> get_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static Ref<StyleBox> get_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static Ref<Font> get_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static Color get_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static int get_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); + static Ref<Texture2D> get_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static Ref<Shader> get_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static Ref<StyleBox> get_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static Ref<Font> get_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static Color get_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static int get_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); - static bool has_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static bool has_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static bool has_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static bool has_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static bool has_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); - static bool has_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_type = StringName()); + static bool has_icons(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static bool has_shaders(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static bool has_styleboxs(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static bool has_fonts(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static bool has_colors(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); + static bool has_constants(Control *p_theme_owner, Window *p_theme_owner_window, const StringName &p_name, const StringName &p_node_type = StringName()); protected: virtual void add_child_notify(Node *p_child) override; @@ -272,7 +270,6 @@ protected: public: enum { - /* NOTIFICATION_DRAW=30, NOTIFICATION_VISIBILITY_CHANGED=38*/ NOTIFICATION_RESIZED = 40, @@ -429,12 +426,12 @@ public: void add_theme_color_override(const StringName &p_name, const Color &p_color); void add_theme_constant_override(const StringName &p_name, int p_constant); - Ref<Texture2D> get_theme_icon(const StringName &p_name, const StringName &p_type = StringName()) const; - Ref<Shader> get_theme_shader(const StringName &p_name, const StringName &p_type = StringName()) const; - Ref<StyleBox> get_theme_stylebox(const StringName &p_name, const StringName &p_type = StringName()) const; - Ref<Font> get_theme_font(const StringName &p_name, const StringName &p_type = StringName()) const; - Color get_theme_color(const StringName &p_name, const StringName &p_type = StringName()) const; - int get_theme_constant(const StringName &p_name, const StringName &p_type = StringName()) const; + Ref<Texture2D> get_theme_icon(const StringName &p_name, const StringName &p_node_type = StringName()) const; + Ref<Shader> get_theme_shader(const StringName &p_name, const StringName &p_node_type = StringName()) const; + Ref<StyleBox> get_theme_stylebox(const StringName &p_name, const StringName &p_node_type = StringName()) const; + Ref<Font> get_theme_font(const StringName &p_name, const StringName &p_node_type = StringName()) const; + Color get_theme_color(const StringName &p_name, const StringName &p_node_type = StringName()) const; + int get_theme_constant(const StringName &p_name, const StringName &p_node_type = StringName()) const; bool has_theme_icon_override(const StringName &p_name) const; bool has_theme_shader_override(const StringName &p_name) const; @@ -443,12 +440,12 @@ public: bool has_theme_color_override(const StringName &p_name) const; bool has_theme_constant_override(const StringName &p_name) const; - bool has_theme_icon(const StringName &p_name, const StringName &p_type = StringName()) const; - bool has_theme_shader(const StringName &p_name, const StringName &p_type = StringName()) const; - bool has_theme_stylebox(const StringName &p_name, const StringName &p_type = StringName()) const; - bool has_theme_font(const StringName &p_name, const StringName &p_type = StringName()) const; - bool has_theme_color(const StringName &p_name, const StringName &p_type = StringName()) const; - bool has_theme_constant(const StringName &p_name, const StringName &p_type = StringName()) const; + bool has_theme_icon(const StringName &p_name, const StringName &p_node_type = StringName()) const; + bool has_theme_shader(const StringName &p_name, const StringName &p_node_type = StringName()) const; + bool has_theme_stylebox(const StringName &p_name, const StringName &p_node_type = StringName()) const; + bool has_theme_font(const StringName &p_name, const StringName &p_node_type = StringName()) const; + bool has_theme_color(const StringName &p_name, const StringName &p_node_type = StringName()) const; + bool has_theme_constant(const StringName &p_name, const StringName &p_node_type = StringName()) const; /* TOOLTIP */ diff --git a/scene/gui/label.h b/scene/gui/label.h index 510a716f5d..df78a1b34c 100644 --- a/scene/gui/label.h +++ b/scene/gui/label.h @@ -38,7 +38,6 @@ class Label : public Control { public: enum Align { - ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, @@ -46,7 +45,6 @@ public: }; enum VAlign { - VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM, diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h index a5e5b6988f..5fceedbf26 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -39,7 +39,6 @@ class LineEdit : public Control { public: enum Align { - ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp index 49ddd5c3ee..791c78e2b4 100644 --- a/scene/gui/popup.cpp +++ b/scene/gui/popup.cpp @@ -93,7 +93,7 @@ void Popup::_notification(int p_what) { } void Popup::_parent_focused() { - if (popped_up) { + if (popped_up && close_on_parent_focus) { _close_pressed(); } } @@ -112,7 +112,19 @@ void Popup::set_as_minsize() { set_size(get_contents_minimum_size()); } +void Popup::set_close_on_parent_focus(bool p_close) { + close_on_parent_focus = p_close; +} + +bool Popup::get_close_on_parent_focus() { + return close_on_parent_focus; +} + void Popup::_bind_methods() { + ClassDB::bind_method(D_METHOD("set_close_on_parent_focus", "close"), &Popup::set_close_on_parent_focus); + ClassDB::bind_method(D_METHOD("get_close_on_parent_focus"), &Popup::get_close_on_parent_focus); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "close_on_parent_focus"), "set_close_on_parent_focus", "get_close_on_parent_focus"); + ADD_SIGNAL(MethodInfo("popup_hide")); } diff --git a/scene/gui/popup.h b/scene/gui/popup.h index 44577811ff..48e7ea9452 100644 --- a/scene/gui/popup.h +++ b/scene/gui/popup.h @@ -40,6 +40,7 @@ class Popup : public Window { LocalVector<Window *> visible_parents; bool popped_up = false; + bool close_on_parent_focus = true; void _input_from_window(const Ref<InputEvent> &p_event); @@ -57,6 +58,10 @@ protected: public: void set_as_minsize(); + + void set_close_on_parent_focus(bool p_close); + bool get_close_on_parent_focus(); + Popup(); ~Popup(); }; diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 0a469d8373..7baf32173f 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -173,11 +173,11 @@ int PopupMenu::_get_mouse_over(const Point2 &p_over) const { return -1; } -void PopupMenu::_activate_submenu(int over) { - Node *n = get_node(items[over].submenu); - ERR_FAIL_COND_MSG(!n, "Item subnode does not exist: " + items[over].submenu + "."); +void PopupMenu::_activate_submenu(int p_over) { + Node *n = get_node(items[p_over].submenu); + ERR_FAIL_COND_MSG(!n, "Item subnode does not exist: " + items[p_over].submenu + "."); Popup *submenu_popup = Object::cast_to<Popup>(n); - ERR_FAIL_COND_MSG(!submenu_popup, "Item subnode is not a Popup: " + items[over].submenu + "."); + ERR_FAIL_COND_MSG(!submenu_popup, "Item subnode is not a Popup: " + items[p_over].submenu + "."); if (submenu_popup->is_visible()) { return; //already visible! } @@ -190,7 +190,7 @@ void PopupMenu::_activate_submenu(int over) { float scroll_offset = control->get_position().y; - Point2 submenu_pos = this_pos + Point2(this_rect.size.width, items[over]._ofs_cache + scroll_offset); + Point2 submenu_pos = this_pos + Point2(this_rect.size.width, items[p_over]._ofs_cache + scroll_offset); Size2 submenu_size = submenu_popup->get_size(); // Fix pos if going outside parent rect @@ -198,6 +198,7 @@ void PopupMenu::_activate_submenu(int over) { submenu_pos.x = this_pos.x - submenu_size.width; } + submenu_popup->set_close_on_parent_focus(false); submenu_popup->set_position(submenu_pos); submenu_popup->set_as_minsize(); // Shrink the popup size to it's contents. submenu_popup->popup(); @@ -210,11 +211,11 @@ void PopupMenu::_activate_submenu(int over) { // Autohide area above the submenu item submenu_pum->clear_autohide_areas(); - submenu_pum->add_autohide_area(Rect2(this_rect.position.x, this_rect.position.y, this_rect.size.x, items[over]._ofs_cache + scroll_offset + style->get_offset().height - vsep / 2)); + submenu_pum->add_autohide_area(Rect2(this_rect.position.x, this_rect.position.y, this_rect.size.x, items[p_over]._ofs_cache + scroll_offset + style->get_offset().height - vsep / 2)); // If there is an area below the submenu item, add an autohide area there. - if (items[over]._ofs_cache + items[over]._height_cache + scroll_offset <= control->get_size().height) { - int from = items[over]._ofs_cache + items[over]._height_cache + scroll_offset + vsep / 2 + style->get_offset().height; + if (items[p_over]._ofs_cache + items[p_over]._height_cache + scroll_offset <= control->get_size().height) { + int from = items[p_over]._ofs_cache + items[p_over]._height_cache + scroll_offset + vsep / 2 + style->get_offset().height; submenu_pum->add_autohide_area(Rect2(this_rect.position.x, this_rect.position.y + from, this_rect.size.x, this_rect.size.y - from)); } } @@ -547,6 +548,31 @@ void PopupMenu::_draw_background() { style->draw(ci2, Rect2(Point2(), margin_container->get_size())); } +void PopupMenu::_minimum_lifetime_timeout() { + close_allowed = true; + // If the mouse still isn't in this popup after timer expires, close. + if (!get_visible_rect().has_point(get_mouse_position())) { + _close_pressed(); + } +} + +void PopupMenu::_close_pressed() { + // Only apply minimum lifetime to submenus. + PopupMenu *parent_pum = Object::cast_to<PopupMenu>(get_parent()); + if (!parent_pum) { + Popup::_close_pressed(); + return; + } + + // If the timer has expired, close. If timer is still running, do nothing. + if (close_allowed) { + close_allowed = false; + Popup::_close_pressed(); + } else if (minimum_lifetime_timer->is_stopped()) { + minimum_lifetime_timer->start(); + } +} + void PopupMenu::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: { @@ -566,7 +592,7 @@ void PopupMenu::_notification(int p_what) { control->update(); } break; case NOTIFICATION_WM_MOUSE_ENTER: { - //grab_focus(); + grab_focus(); } break; case NOTIFICATION_WM_MOUSE_EXIT: { if (mouse_over >= 0 && (items[mouse_over].submenu == "" || submenu_over != -1)) { @@ -1484,6 +1510,12 @@ PopupMenu::PopupMenu() { submenu_timer->set_one_shot(true); submenu_timer->connect("timeout", callable_mp(this, &PopupMenu::_submenu_timeout)); add_child(submenu_timer); + + minimum_lifetime_timer = memnew(Timer); + minimum_lifetime_timer->set_wait_time(0.3); + minimum_lifetime_timer->set_one_shot(true); + minimum_lifetime_timer->connect("timeout", callable_mp(this, &PopupMenu::_minimum_lifetime_timeout)); + add_child(minimum_lifetime_timer); } PopupMenu::~PopupMenu() { diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h index e8f82ba869..a2e7d7e6cd 100644 --- a/scene/gui/popup_menu.h +++ b/scene/gui/popup_menu.h @@ -86,6 +86,9 @@ class PopupMenu : public Popup { } }; + bool close_allowed = false; + + Timer *minimum_lifetime_timer = nullptr; Timer *submenu_timer; List<Rect2> autohide_areas; Vector<Item> items; @@ -102,7 +105,7 @@ class PopupMenu : public Popup { void _scroll_to_item(int p_item); void _gui_input(const Ref<InputEvent> &p_event); - void _activate_submenu(int over); + void _activate_submenu(int p_over); void _submenu_timeout(); uint64_t popup_time_msec = 0; @@ -130,6 +133,9 @@ class PopupMenu : public Popup { void _draw_items(); void _draw_background(); + void _minimum_lifetime_timeout(); + void _close_pressed(); + protected: friend class MenuButton; void _notification(int p_what); diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index c5ed1cb3ef..67a3f466a6 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -39,7 +39,6 @@ class RichTextLabel : public Control { public: enum Align { - ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, @@ -47,14 +46,12 @@ public: }; enum ListType { - LIST_NUMBERS, LIST_LETTERS, LIST_DOTS }; enum ItemType { - ITEM_FRAME, ITEM_TEXT, ITEM_IMAGE, @@ -344,7 +341,6 @@ private: }; enum ProcessMode { - PROCESS_CACHE, PROCESS_DRAW, PROCESS_POINTER diff --git a/scene/gui/tab_container.h b/scene/gui/tab_container.h index 6ac07b5845..f82f594875 100644 --- a/scene/gui/tab_container.h +++ b/scene/gui/tab_container.h @@ -38,7 +38,6 @@ class TabContainer : public Container { public: enum TabAlign { - ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT diff --git a/scene/gui/tabs.h b/scene/gui/tabs.h index b94c4a37a1..62142e1cde 100644 --- a/scene/gui/tabs.h +++ b/scene/gui/tabs.h @@ -38,7 +38,6 @@ class Tabs : public Control { public: enum TabAlign { - ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, @@ -46,7 +45,6 @@ public: }; enum CloseButtonDisplayPolicy { - CLOSE_BUTTON_SHOW_NEVER, CLOSE_BUTTON_SHOW_ACTIVE_ONLY, CLOSE_BUTTON_SHOW_ALWAYS, diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index bcb375d786..31030765e0 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -1813,7 +1813,6 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool case TreeItem::CELL_MODE_RANGE: { if (c.text != "") { //if (x >= (get_column_width(col)-item_h/2)) { - popup_menu->clear(); for (int i = 0; i < c.text.get_slice_count(","); i++) { String s = c.text.get_slicec(',', i); diff --git a/scene/gui/tree.h b/scene/gui/tree.h index c0910a8fe0..9554bb4665 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -44,7 +44,6 @@ class TreeItem : public Object { public: enum TreeCellMode { - CELL_MODE_STRING, ///< just a string CELL_MODE_CHECK, ///< string + check CELL_MODE_RANGE, ///< Contains a range diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 36c3f03f70..38baa6c97e 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2889,7 +2889,6 @@ void Node::_bind_methods() { ADD_SIGNAL(MethodInfo("tree_exiting")); ADD_SIGNAL(MethodInfo("tree_exited")); - ADD_GROUP("Pause", "pause_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "pause_mode", PROPERTY_HINT_ENUM, "Inherit,Stop,Process"), "set_pause_mode", "get_pause_mode"); ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "name", PROPERTY_HINT_NONE, "", 0), "set_name", "get_name"); diff --git a/scene/main/node.h b/scene/main/node.h index 2f8a0673e9..61740738b0 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -47,14 +47,12 @@ class Node : public Object { public: enum PauseMode { - PAUSE_MODE_INHERIT, PAUSE_MODE_STOP, PAUSE_MODE_PROCESS }; enum DuplicateFlags { - DUPLICATE_SIGNALS = 1, DUPLICATE_GROUPS = 2, DUPLICATE_SCRIPTS = 4, @@ -218,7 +216,6 @@ protected: public: enum { - // you can make your own, but don't use the same numbers as other notifications in other nodes NOTIFICATION_ENTER_TREE = 10, NOTIFICATION_EXIT_TREE = 11, diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index cffd1126ee..cc5f4e9598 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -827,12 +827,9 @@ void SceneTree::_notify_group_pause(const StringName &p_group, int p_notificatio /* void SceneMainLoop::_update_listener_2d() { - if (listener_2d.is_valid()) { - SpatialSound2DServer::get_singleton()->listener_set_space( listener_2d, world_2d->get_sound_space() ); } - } */ diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp index c9fce2f6c2..1c6037d26e 100644 --- a/scene/main/timer.cpp +++ b/scene/main/timer.cpp @@ -46,7 +46,7 @@ void Timer::_notification(int p_what) { } } break; case NOTIFICATION_INTERNAL_PROCESS: { - if (timer_process_mode == TIMER_PROCESS_PHYSICS || !is_processing_internal()) { + if (!processing || timer_process_mode == TIMER_PROCESS_PHYSICS || !is_processing_internal()) { return; } time_left -= get_process_delta_time(); @@ -63,7 +63,7 @@ void Timer::_notification(int p_what) { } break; case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { - if (timer_process_mode == TIMER_PROCESS_IDLE || !is_physics_processing_internal()) { + if (!processing || timer_process_mode == TIMER_PROCESS_IDLE || !is_physics_processing_internal()) { return; } time_left -= get_physics_process_delta_time(); diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 17411bb490..f4498507f1 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -2378,7 +2378,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { //keyboard focus //if (from && p_event->is_pressed() && !p_event->get_alt() && !p_event->get_metakey() && !p_event->key->get_command()) { - Ref<InputEventKey> k = p_event; //need to check for mods, otherwise any combination of alt/ctrl/shift+<up/down/left/righ/etc> is handled here when it shouldn't be. bool mods = k.is_valid() && (k->get_control() || k->get_alt() || k->get_shift() || k->get_metakey()); @@ -3135,7 +3134,6 @@ Variant Viewport::gui_get_drag_data() const { String Viewport::get_configuration_warning() const { /*if (get_parent() && !Object::cast_to<Control>(get_parent()) && !render_target) { - return TTR("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."); }*/ diff --git a/scene/main/viewport.h b/scene/main/viewport.h index 8e7f2cecdc..4be66ae79f 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -598,7 +598,6 @@ class SubViewport : public Viewport { public: enum ClearMode { - CLEAR_MODE_ALWAYS, CLEAR_MODE_NEVER, CLEAR_MODE_ONLY_NEXT_FRAME diff --git a/scene/main/window.h b/scene/main/window.h index 09c52b30a3..e11cbd8a72 100644 --- a/scene/main/window.h +++ b/scene/main/window.h @@ -147,7 +147,6 @@ protected: public: enum { - NOTIFICATION_VISIBILITY_CHANGED = 30, NOTIFICATION_POST_POPUP = 31, NOTIFICATION_THEME_CHANGED = 32, diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp index 92103f3b1d..b2aad97d3b 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -721,7 +721,6 @@ bool Animation::track_get_interpolation_loop_wrap(int p_track) const { /* template<class T> int Animation::_insert_pos(float p_time, T& p_keys) { - // simple, linear time inset that should be fast enough in reality. int idx=p_keys.size(); @@ -734,14 +733,12 @@ int Animation::_insert_pos(float p_time, T& p_keys) { p_keys.insert(idx,T()); return idx; } else if (p_keys[idx-1].time == p_time) { - // condition for replacing. return idx-1; } idx--; } - } */ diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp index f02e7987a9..600a859894 100644 --- a/scene/resources/audio_stream_sample.cpp +++ b/scene/resources/audio_stream_sample.cpp @@ -261,7 +261,8 @@ void AudioStreamPlaybackSample::mix(AudioFrame *p_buffer, float p_rate_scale, in sign = -1; } - float base_rate = AudioServer::get_singleton()->get_mix_rate(); + float global_rate_scale = AudioServer::get_singleton()->get_global_rate_scale(); + float base_rate = AudioServer::get_singleton()->get_mix_rate() * global_rate_scale; float srate = base->mix_rate; srate *= p_rate_scale; float fincrement = srate / base_rate; diff --git a/scene/resources/capsule_shape_3d.cpp b/scene/resources/capsule_shape_3d.cpp index 9d1355eec6..5da7f682e5 100644 --- a/scene/resources/capsule_shape_3d.cpp +++ b/scene/resources/capsule_shape_3d.cpp @@ -106,8 +106,8 @@ void CapsuleShape3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_height", "height"), &CapsuleShape3D::set_height); ClassDB::bind_method(D_METHOD("get_height"), &CapsuleShape3D::get_height); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.01,4096,0.01"), "set_radius", "get_radius"); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.01,4096,0.01"), "set_height", "get_height"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_radius", "get_radius"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_height", "get_height"); } CapsuleShape3D::CapsuleShape3D() : diff --git a/scene/resources/cylinder_shape_3d.cpp b/scene/resources/cylinder_shape_3d.cpp index ad64541247..bb8c27a60d 100644 --- a/scene/resources/cylinder_shape_3d.cpp +++ b/scene/resources/cylinder_shape_3d.cpp @@ -99,8 +99,8 @@ void CylinderShape3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_height", "height"), &CylinderShape3D::set_height); ClassDB::bind_method(D_METHOD("get_height"), &CylinderShape3D::get_height); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.01,4096,0.01"), "set_radius", "get_radius"); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.01,4096,0.01"), "set_height", "get_height"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_radius", "get_radius"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_height", "get_height"); } CylinderShape3D::CylinderShape3D() : diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index 060846d5b6..97c0c7a81d 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -168,7 +168,6 @@ Vector<Face3> Mesh::get_faces() const { return Vector<Face3>(); /* for (int i=0;i<surfaces.size();i++) { - if (RenderingServer::get_singleton()->mesh_surface_get_primitive_type( mesh, i ) != RenderingServer::PRIMITIVE_TRIANGLES ) continue; @@ -181,12 +180,10 @@ Vector<Face3> Mesh::get_faces() const { bool has_indices; if (len>0) { - indices=RenderingServer::get_singleton()->mesh_surface_get_array(mesh, i,RenderingServer::ARRAY_INDEX); has_indices=true; } else { - len=vertices.size(); has_indices=false; } @@ -210,11 +207,9 @@ Vector<Face3> Mesh::get_faces() const { for (int i=0;i<len/3;i++) { - Face3 face; for (int j=0;j<3;j++) { - int idx=i*3+j; face.vertex[j] = has_indices ? verticesptr[ indicesptr[ idx ] ] : verticesptr[idx]; } diff --git a/scene/resources/mesh.h b/scene/resources/mesh.h index 81c18eea2d..642ae7e1b0 100644 --- a/scene/resources/mesh.h +++ b/scene/resources/mesh.h @@ -50,13 +50,11 @@ protected: public: enum { - NO_INDEX_ARRAY = RenderingServer::NO_INDEX_ARRAY, ARRAY_WEIGHTS_SIZE = RenderingServer::ARRAY_WEIGHTS_SIZE }; enum ArrayType { - ARRAY_VERTEX = RenderingServer::ARRAY_VERTEX, ARRAY_NORMAL = RenderingServer::ARRAY_NORMAL, ARRAY_TANGENT = RenderingServer::ARRAY_TANGENT, @@ -107,7 +105,6 @@ public: }; enum BlendShapeMode { - BLEND_SHAPE_MODE_NORMALIZED = RS::BLEND_SHAPE_MODE_NORMALIZED, BLEND_SHAPE_MODE_RELATIVE = RS::BLEND_SHAPE_MODE_RELATIVE, }; diff --git a/scene/resources/ray_shape_3d.cpp b/scene/resources/ray_shape_3d.cpp index 39df4c22f9..1705fb0f55 100644 --- a/scene/resources/ray_shape_3d.cpp +++ b/scene/resources/ray_shape_3d.cpp @@ -81,7 +81,7 @@ void RayShape3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_slips_on_slope", "active"), &RayShape3D::set_slips_on_slope); ClassDB::bind_method(D_METHOD("get_slips_on_slope"), &RayShape3D::get_slips_on_slope); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_length", "get_length"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_length", "get_length"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slips_on_slope"), "set_slips_on_slope", "get_slips_on_slope"); } diff --git a/scene/resources/shader.h b/scene/resources/shader.h index f2ea582ff0..0feaa179b2 100644 --- a/scene/resources/shader.h +++ b/scene/resources/shader.h @@ -42,7 +42,6 @@ class Shader : public Resource { public: enum Mode { - MODE_SPATIAL, MODE_CANVAS_ITEM, MODE_PARTICLES, diff --git a/scene/resources/sphere_shape_3d.cpp b/scene/resources/sphere_shape_3d.cpp index fd33387df6..64e0a701b7 100644 --- a/scene/resources/sphere_shape_3d.cpp +++ b/scene/resources/sphere_shape_3d.cpp @@ -77,7 +77,7 @@ void SphereShape3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_radius", "radius"), &SphereShape3D::set_radius); ClassDB::bind_method(D_METHOD("get_radius"), &SphereShape3D::get_radius); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_radius", "get_radius"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_radius", "get_radius"); } SphereShape3D::SphereShape3D() : diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index 07de202cc8..1507537cd0 100644 --- a/scene/resources/texture.cpp +++ b/scene/resources/texture.cpp @@ -151,7 +151,7 @@ void ImageTexture::_reload_hook(const RID &p_hook) { } void ImageTexture::create_from_image(const Ref<Image> &p_image) { - ERR_FAIL_COND(p_image.is_null()); + ERR_FAIL_COND_MSG(p_image.is_null(), "Invalid image"); w = p_image->get_width(); h = p_image->get_height(); format = p_image->get_format(); @@ -174,11 +174,14 @@ Image::Format ImageTexture::get_format() const { } void ImageTexture::update(const Ref<Image> &p_image, bool p_immediate) { - ERR_FAIL_COND(p_image.is_null()); - ERR_FAIL_COND(texture.is_null()); - ERR_FAIL_COND(p_image->get_width() != w || p_image->get_height() != h); - ERR_FAIL_COND(p_image->get_format() != format); - ERR_FAIL_COND(mipmaps != p_image->has_mipmaps()); + ERR_FAIL_COND_MSG(p_image.is_null(), "Invalid image"); + ERR_FAIL_COND_MSG(texture.is_null(), "Texture is not initialized."); + ERR_FAIL_COND_MSG(p_image->get_width() != w || p_image->get_height() != h, + "The new image dimensions must match the texture size."); + ERR_FAIL_COND_MSG(p_image->get_format() != format, + "The new image format must match the texture's image format."); + ERR_FAIL_COND_MSG(mipmaps != p_image->has_mipmaps(), + "The new image mipmaps configuration must match the texture's image mipmaps configuration"); if (p_immediate) { RenderingServer::get_singleton()->texture_2d_update_immediate(texture, p_image); diff --git a/scene/resources/texture.h b/scene/resources/texture.h index 3bc1ca8463..a8d8b785fa 100644 --- a/scene/resources/texture.h +++ b/scene/resources/texture.h @@ -664,7 +664,6 @@ public: }; /* enum CubeMapSide { - CUBEMAP_LEFT, CUBEMAP_RIGHT, CUBEMAP_BOTTOM, diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index a05abbb4c0..ccff49829e 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -36,11 +36,11 @@ void Theme::_emit_theme_changed() { emit_changed(); } -Vector<String> Theme::_get_icon_list(const String &p_type) const { +Vector<String> Theme::_get_icon_list(const String &p_node_type) const { Vector<String> ilret; List<StringName> il; - get_icon_list(p_type, &il); + get_icon_list(p_node_type, &il); ilret.resize(il.size()); int i = 0; @@ -51,11 +51,11 @@ Vector<String> Theme::_get_icon_list(const String &p_type) const { return ilret; } -Vector<String> Theme::_get_stylebox_list(const String &p_type) const { +Vector<String> Theme::_get_stylebox_list(const String &p_node_type) const { Vector<String> ilret; List<StringName> il; - get_stylebox_list(p_type, &il); + get_stylebox_list(p_node_type, &il); ilret.resize(il.size()); int i = 0; @@ -81,11 +81,11 @@ Vector<String> Theme::_get_stylebox_types() const { return ilret; } -Vector<String> Theme::_get_font_list(const String &p_type) const { +Vector<String> Theme::_get_font_list(const String &p_node_type) const { Vector<String> ilret; List<StringName> il; - get_font_list(p_type, &il); + get_font_list(p_node_type, &il); ilret.resize(il.size()); int i = 0; @@ -96,11 +96,11 @@ Vector<String> Theme::_get_font_list(const String &p_type) const { return ilret; } -Vector<String> Theme::_get_color_list(const String &p_type) const { +Vector<String> Theme::_get_color_list(const String &p_node_type) const { Vector<String> ilret; List<StringName> il; - get_color_list(p_type, &il); + get_color_list(p_node_type, &il); ilret.resize(il.size()); int i = 0; @@ -111,11 +111,11 @@ Vector<String> Theme::_get_color_list(const String &p_type) const { return ilret; } -Vector<String> Theme::_get_constant_list(const String &p_type) const { +Vector<String> Theme::_get_constant_list(const String &p_node_type) const { Vector<String> ilret; List<StringName> il; - get_constant_list(p_type, &il); + get_constant_list(p_node_type, &il); ilret.resize(il.size()); int i = 0; @@ -126,7 +126,7 @@ Vector<String> Theme::_get_constant_list(const String &p_type) const { return ilret; } -Vector<String> Theme::_get_type_list(const String &p_type) const { +Vector<String> Theme::_get_type_list(const String &p_node_type) const { Vector<String> ilret; List<StringName> il; @@ -325,19 +325,19 @@ void Theme::set_default_font(const Ref<Font> &p_font) { default_font = p_font; } -void Theme::set_icon(const StringName &p_name, const StringName &p_type, const Ref<Texture2D> &p_icon) { +void Theme::set_icon(const StringName &p_name, const StringName &p_node_type, const Ref<Texture2D> &p_icon) { //ERR_FAIL_COND(p_icon.is_null()); - bool new_value = !icon_map.has(p_type) || !icon_map[p_type].has(p_name); + bool new_value = !icon_map.has(p_node_type) || !icon_map[p_node_type].has(p_name); - if (icon_map[p_type].has(p_name) && icon_map[p_type][p_name].is_valid()) { - icon_map[p_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); + if (icon_map[p_node_type].has(p_name) && icon_map[p_node_type][p_name].is_valid()) { + icon_map[p_node_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); } - icon_map[p_type][p_name] = p_icon; + icon_map[p_node_type][p_name] = p_icon; if (p_icon.is_valid()) { - icon_map[p_type][p_name]->connect("changed", callable_mp(this, &Theme::_emit_theme_changed), varray(), CONNECT_REFERENCE_COUNTED); + icon_map[p_node_type][p_name]->connect("changed", callable_mp(this, &Theme::_emit_theme_changed), varray(), CONNECT_REFERENCE_COUNTED); } if (new_value) { @@ -346,50 +346,50 @@ void Theme::set_icon(const StringName &p_name, const StringName &p_type, const R } } -Ref<Texture2D> Theme::get_icon(const StringName &p_name, const StringName &p_type) const { - if (icon_map.has(p_type) && icon_map[p_type].has(p_name) && icon_map[p_type][p_name].is_valid()) { - return icon_map[p_type][p_name]; +Ref<Texture2D> Theme::get_icon(const StringName &p_name, const StringName &p_node_type) const { + if (icon_map.has(p_node_type) && icon_map[p_node_type].has(p_name) && icon_map[p_node_type][p_name].is_valid()) { + return icon_map[p_node_type][p_name]; } else { return default_icon; } } -bool Theme::has_icon(const StringName &p_name, const StringName &p_type) const { - return (icon_map.has(p_type) && icon_map[p_type].has(p_name) && icon_map[p_type][p_name].is_valid()); +bool Theme::has_icon(const StringName &p_name, const StringName &p_node_type) const { + return (icon_map.has(p_node_type) && icon_map[p_node_type].has(p_name) && icon_map[p_node_type][p_name].is_valid()); } -void Theme::clear_icon(const StringName &p_name, const StringName &p_type) { - ERR_FAIL_COND(!icon_map.has(p_type)); - ERR_FAIL_COND(!icon_map[p_type].has(p_name)); +void Theme::clear_icon(const StringName &p_name, const StringName &p_node_type) { + ERR_FAIL_COND(!icon_map.has(p_node_type)); + ERR_FAIL_COND(!icon_map[p_node_type].has(p_name)); - if (icon_map[p_type][p_name].is_valid()) { - icon_map[p_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); + if (icon_map[p_node_type][p_name].is_valid()) { + icon_map[p_node_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); } - icon_map[p_type].erase(p_name); + icon_map[p_node_type].erase(p_name); _change_notify(); emit_changed(); } -void Theme::get_icon_list(StringName p_type, List<StringName> *p_list) const { +void Theme::get_icon_list(StringName p_node_type, List<StringName> *p_list) const { ERR_FAIL_NULL(p_list); - if (!icon_map.has(p_type)) { + if (!icon_map.has(p_node_type)) { return; } const StringName *key = nullptr; - while ((key = icon_map[p_type].next(key))) { + while ((key = icon_map[p_node_type].next(key))) { p_list->push_back(*key); } } -void Theme::set_shader(const StringName &p_name, const StringName &p_type, const Ref<Shader> &p_shader) { - bool new_value = !shader_map.has(p_type) || !shader_map[p_type].has(p_name); +void Theme::set_shader(const StringName &p_name, const StringName &p_node_type, const Ref<Shader> &p_shader) { + bool new_value = !shader_map.has(p_node_type) || !shader_map[p_node_type].has(p_name); - shader_map[p_type][p_name] = p_shader; + shader_map[p_node_type][p_name] = p_shader; if (new_value) { _change_notify(); @@ -397,54 +397,54 @@ void Theme::set_shader(const StringName &p_name, const StringName &p_type, const } } -Ref<Shader> Theme::get_shader(const StringName &p_name, const StringName &p_type) const { - if (shader_map.has(p_type) && shader_map[p_type].has(p_name) && shader_map[p_type][p_name].is_valid()) { - return shader_map[p_type][p_name]; +Ref<Shader> Theme::get_shader(const StringName &p_name, const StringName &p_node_type) const { + if (shader_map.has(p_node_type) && shader_map[p_node_type].has(p_name) && shader_map[p_node_type][p_name].is_valid()) { + return shader_map[p_node_type][p_name]; } else { return nullptr; } } -bool Theme::has_shader(const StringName &p_name, const StringName &p_type) const { - return (shader_map.has(p_type) && shader_map[p_type].has(p_name) && shader_map[p_type][p_name].is_valid()); +bool Theme::has_shader(const StringName &p_name, const StringName &p_node_type) const { + return (shader_map.has(p_node_type) && shader_map[p_node_type].has(p_name) && shader_map[p_node_type][p_name].is_valid()); } -void Theme::clear_shader(const StringName &p_name, const StringName &p_type) { - ERR_FAIL_COND(!shader_map.has(p_type)); - ERR_FAIL_COND(!shader_map[p_type].has(p_name)); +void Theme::clear_shader(const StringName &p_name, const StringName &p_node_type) { + ERR_FAIL_COND(!shader_map.has(p_node_type)); + ERR_FAIL_COND(!shader_map[p_node_type].has(p_name)); - shader_map[p_type].erase(p_name); + shader_map[p_node_type].erase(p_name); _change_notify(); emit_changed(); } -void Theme::get_shader_list(const StringName &p_type, List<StringName> *p_list) const { +void Theme::get_shader_list(const StringName &p_node_type, List<StringName> *p_list) const { ERR_FAIL_NULL(p_list); - if (!shader_map.has(p_type)) { + if (!shader_map.has(p_node_type)) { return; } const StringName *key = nullptr; - while ((key = shader_map[p_type].next(key))) { + while ((key = shader_map[p_node_type].next(key))) { p_list->push_back(*key); } } -void Theme::set_stylebox(const StringName &p_name, const StringName &p_type, const Ref<StyleBox> &p_style) { +void Theme::set_stylebox(const StringName &p_name, const StringName &p_node_type, const Ref<StyleBox> &p_style) { //ERR_FAIL_COND(p_style.is_null()); - bool new_value = !style_map.has(p_type) || !style_map[p_type].has(p_name); + bool new_value = !style_map.has(p_node_type) || !style_map[p_node_type].has(p_name); - if (style_map[p_type].has(p_name) && style_map[p_type][p_name].is_valid()) { - style_map[p_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); + if (style_map[p_node_type].has(p_name) && style_map[p_node_type][p_name].is_valid()) { + style_map[p_node_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); } - style_map[p_type][p_name] = p_style; + style_map[p_node_type][p_name] = p_style; if (p_style.is_valid()) { - style_map[p_type][p_name]->connect("changed", callable_mp(this, &Theme::_emit_theme_changed), varray(), CONNECT_REFERENCE_COUNTED); + style_map[p_node_type][p_name]->connect("changed", callable_mp(this, &Theme::_emit_theme_changed), varray(), CONNECT_REFERENCE_COUNTED); } if (new_value) { @@ -453,42 +453,42 @@ void Theme::set_stylebox(const StringName &p_name, const StringName &p_type, con emit_changed(); } -Ref<StyleBox> Theme::get_stylebox(const StringName &p_name, const StringName &p_type) const { - if (style_map.has(p_type) && style_map[p_type].has(p_name) && style_map[p_type][p_name].is_valid()) { - return style_map[p_type][p_name]; +Ref<StyleBox> Theme::get_stylebox(const StringName &p_name, const StringName &p_node_type) const { + if (style_map.has(p_node_type) && style_map[p_node_type].has(p_name) && style_map[p_node_type][p_name].is_valid()) { + return style_map[p_node_type][p_name]; } else { return default_style; } } -bool Theme::has_stylebox(const StringName &p_name, const StringName &p_type) const { - return (style_map.has(p_type) && style_map[p_type].has(p_name) && style_map[p_type][p_name].is_valid()); +bool Theme::has_stylebox(const StringName &p_name, const StringName &p_node_type) const { + return (style_map.has(p_node_type) && style_map[p_node_type].has(p_name) && style_map[p_node_type][p_name].is_valid()); } -void Theme::clear_stylebox(const StringName &p_name, const StringName &p_type) { - ERR_FAIL_COND(!style_map.has(p_type)); - ERR_FAIL_COND(!style_map[p_type].has(p_name)); +void Theme::clear_stylebox(const StringName &p_name, const StringName &p_node_type) { + ERR_FAIL_COND(!style_map.has(p_node_type)); + ERR_FAIL_COND(!style_map[p_node_type].has(p_name)); - if (style_map[p_type][p_name].is_valid()) { - style_map[p_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); + if (style_map[p_node_type][p_name].is_valid()) { + style_map[p_node_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); } - style_map[p_type].erase(p_name); + style_map[p_node_type].erase(p_name); _change_notify(); emit_changed(); } -void Theme::get_stylebox_list(StringName p_type, List<StringName> *p_list) const { +void Theme::get_stylebox_list(StringName p_node_type, List<StringName> *p_list) const { ERR_FAIL_NULL(p_list); - if (!style_map.has(p_type)) { + if (!style_map.has(p_node_type)) { return; } const StringName *key = nullptr; - while ((key = style_map[p_type].next(key))) { + while ((key = style_map[p_node_type].next(key))) { p_list->push_back(*key); } } @@ -502,19 +502,19 @@ void Theme::get_stylebox_types(List<StringName> *p_list) const { } } -void Theme::set_font(const StringName &p_name, const StringName &p_type, const Ref<Font> &p_font) { +void Theme::set_font(const StringName &p_name, const StringName &p_node_type, const Ref<Font> &p_font) { //ERR_FAIL_COND(p_font.is_null()); - bool new_value = !font_map.has(p_type) || !font_map[p_type].has(p_name); + bool new_value = !font_map.has(p_node_type) || !font_map[p_node_type].has(p_name); - if (font_map[p_type][p_name].is_valid()) { - font_map[p_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); + if (font_map[p_node_type][p_name].is_valid()) { + font_map[p_node_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); } - font_map[p_type][p_name] = p_font; + font_map[p_node_type][p_name] = p_font; if (p_font.is_valid()) { - font_map[p_type][p_name]->connect("changed", callable_mp(this, &Theme::_emit_theme_changed), varray(), CONNECT_REFERENCE_COUNTED); + font_map[p_node_type][p_name]->connect("changed", callable_mp(this, &Theme::_emit_theme_changed), varray(), CONNECT_REFERENCE_COUNTED); } if (new_value) { @@ -523,9 +523,9 @@ void Theme::set_font(const StringName &p_name, const StringName &p_type, const R } } -Ref<Font> Theme::get_font(const StringName &p_name, const StringName &p_type) const { - if (font_map.has(p_type) && font_map[p_type].has(p_name) && font_map[p_type][p_name].is_valid()) { - return font_map[p_type][p_name]; +Ref<Font> Theme::get_font(const StringName &p_name, const StringName &p_node_type) const { + if (font_map.has(p_node_type) && font_map[p_node_type].has(p_name) && font_map[p_node_type][p_name].is_valid()) { + return font_map[p_node_type][p_name]; } else if (default_theme_font.is_valid()) { return default_theme_font; } else { @@ -533,41 +533,41 @@ Ref<Font> Theme::get_font(const StringName &p_name, const StringName &p_type) co } } -bool Theme::has_font(const StringName &p_name, const StringName &p_type) const { - return (font_map.has(p_type) && font_map[p_type].has(p_name) && font_map[p_type][p_name].is_valid()); +bool Theme::has_font(const StringName &p_name, const StringName &p_node_type) const { + return (font_map.has(p_node_type) && font_map[p_node_type].has(p_name) && font_map[p_node_type][p_name].is_valid()); } -void Theme::clear_font(const StringName &p_name, const StringName &p_type) { - ERR_FAIL_COND(!font_map.has(p_type)); - ERR_FAIL_COND(!font_map[p_type].has(p_name)); +void Theme::clear_font(const StringName &p_name, const StringName &p_node_type) { + ERR_FAIL_COND(!font_map.has(p_node_type)); + ERR_FAIL_COND(!font_map[p_node_type].has(p_name)); - if (font_map[p_type][p_name].is_valid()) { - font_map[p_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); + if (font_map[p_node_type][p_name].is_valid()) { + font_map[p_node_type][p_name]->disconnect("changed", callable_mp(this, &Theme::_emit_theme_changed)); } - font_map[p_type].erase(p_name); + font_map[p_node_type].erase(p_name); _change_notify(); emit_changed(); } -void Theme::get_font_list(StringName p_type, List<StringName> *p_list) const { +void Theme::get_font_list(StringName p_node_type, List<StringName> *p_list) const { ERR_FAIL_NULL(p_list); - if (!font_map.has(p_type)) { + if (!font_map.has(p_node_type)) { return; } const StringName *key = nullptr; - while ((key = font_map[p_type].next(key))) { + while ((key = font_map[p_node_type].next(key))) { p_list->push_back(*key); } } -void Theme::set_color(const StringName &p_name, const StringName &p_type, const Color &p_color) { - bool new_value = !color_map.has(p_type) || !color_map[p_type].has(p_name); +void Theme::set_color(const StringName &p_name, const StringName &p_node_type, const Color &p_color) { + bool new_value = !color_map.has(p_node_type) || !color_map[p_node_type].has(p_name); - color_map[p_type][p_name] = p_color; + color_map[p_node_type][p_name] = p_color; if (new_value) { _change_notify(); @@ -575,44 +575,44 @@ void Theme::set_color(const StringName &p_name, const StringName &p_type, const } } -Color Theme::get_color(const StringName &p_name, const StringName &p_type) const { - if (color_map.has(p_type) && color_map[p_type].has(p_name)) { - return color_map[p_type][p_name]; +Color Theme::get_color(const StringName &p_name, const StringName &p_node_type) const { + if (color_map.has(p_node_type) && color_map[p_node_type].has(p_name)) { + return color_map[p_node_type][p_name]; } else { return Color(); } } -bool Theme::has_color(const StringName &p_name, const StringName &p_type) const { - return (color_map.has(p_type) && color_map[p_type].has(p_name)); +bool Theme::has_color(const StringName &p_name, const StringName &p_node_type) const { + return (color_map.has(p_node_type) && color_map[p_node_type].has(p_name)); } -void Theme::clear_color(const StringName &p_name, const StringName &p_type) { - ERR_FAIL_COND(!color_map.has(p_type)); - ERR_FAIL_COND(!color_map[p_type].has(p_name)); +void Theme::clear_color(const StringName &p_name, const StringName &p_node_type) { + ERR_FAIL_COND(!color_map.has(p_node_type)); + ERR_FAIL_COND(!color_map[p_node_type].has(p_name)); - color_map[p_type].erase(p_name); + color_map[p_node_type].erase(p_name); _change_notify(); emit_changed(); } -void Theme::get_color_list(StringName p_type, List<StringName> *p_list) const { +void Theme::get_color_list(StringName p_node_type, List<StringName> *p_list) const { ERR_FAIL_NULL(p_list); - if (!color_map.has(p_type)) { + if (!color_map.has(p_node_type)) { return; } const StringName *key = nullptr; - while ((key = color_map[p_type].next(key))) { + while ((key = color_map[p_node_type].next(key))) { p_list->push_back(*key); } } -void Theme::set_constant(const StringName &p_name, const StringName &p_type, int p_constant) { - bool new_value = !constant_map.has(p_type) || !constant_map[p_type].has(p_name); - constant_map[p_type][p_name] = p_constant; +void Theme::set_constant(const StringName &p_name, const StringName &p_node_type, int p_constant) { + bool new_value = !constant_map.has(p_node_type) || !constant_map[p_node_type].has(p_name); + constant_map[p_node_type][p_name] = p_constant; if (new_value) { _change_notify(); @@ -620,37 +620,37 @@ void Theme::set_constant(const StringName &p_name, const StringName &p_type, int } } -int Theme::get_constant(const StringName &p_name, const StringName &p_type) const { - if (constant_map.has(p_type) && constant_map[p_type].has(p_name)) { - return constant_map[p_type][p_name]; +int Theme::get_constant(const StringName &p_name, const StringName &p_node_type) const { + if (constant_map.has(p_node_type) && constant_map[p_node_type].has(p_name)) { + return constant_map[p_node_type][p_name]; } else { return 0; } } -bool Theme::has_constant(const StringName &p_name, const StringName &p_type) const { - return (constant_map.has(p_type) && constant_map[p_type].has(p_name)); +bool Theme::has_constant(const StringName &p_name, const StringName &p_node_type) const { + return (constant_map.has(p_node_type) && constant_map[p_node_type].has(p_name)); } -void Theme::clear_constant(const StringName &p_name, const StringName &p_type) { - ERR_FAIL_COND(!constant_map.has(p_type)); - ERR_FAIL_COND(!constant_map[p_type].has(p_name)); +void Theme::clear_constant(const StringName &p_name, const StringName &p_node_type) { + ERR_FAIL_COND(!constant_map.has(p_node_type)); + ERR_FAIL_COND(!constant_map[p_node_type].has(p_name)); - constant_map[p_type].erase(p_name); + constant_map[p_node_type].erase(p_name); _change_notify(); emit_changed(); } -void Theme::get_constant_list(StringName p_type, List<StringName> *p_list) const { +void Theme::get_constant_list(StringName p_node_type, List<StringName> *p_list) const { ERR_FAIL_NULL(p_list); - if (!constant_map.has(p_type)) { + if (!constant_map.has(p_node_type)) { return; } const StringName *key = nullptr; - while ((key = constant_map[p_type].next(key))) { + while ((key = constant_map[p_node_type].next(key))) { p_list->push_back(*key); } } @@ -800,43 +800,43 @@ void Theme::get_type_list(List<StringName> *p_list) const { } void Theme::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_icon", "name", "type", "texture"), &Theme::set_icon); - ClassDB::bind_method(D_METHOD("get_icon", "name", "type"), &Theme::get_icon); - ClassDB::bind_method(D_METHOD("has_icon", "name", "type"), &Theme::has_icon); - ClassDB::bind_method(D_METHOD("clear_icon", "name", "type"), &Theme::clear_icon); - ClassDB::bind_method(D_METHOD("get_icon_list", "type"), &Theme::_get_icon_list); - - ClassDB::bind_method(D_METHOD("set_stylebox", "name", "type", "texture"), &Theme::set_stylebox); - ClassDB::bind_method(D_METHOD("get_stylebox", "name", "type"), &Theme::get_stylebox); - ClassDB::bind_method(D_METHOD("has_stylebox", "name", "type"), &Theme::has_stylebox); - ClassDB::bind_method(D_METHOD("clear_stylebox", "name", "type"), &Theme::clear_stylebox); - ClassDB::bind_method(D_METHOD("get_stylebox_list", "type"), &Theme::_get_stylebox_list); + ClassDB::bind_method(D_METHOD("set_icon", "name", "node_type", "texture"), &Theme::set_icon); + ClassDB::bind_method(D_METHOD("get_icon", "name", "node_type"), &Theme::get_icon); + ClassDB::bind_method(D_METHOD("has_icon", "name", "node_type"), &Theme::has_icon); + ClassDB::bind_method(D_METHOD("clear_icon", "name", "node_type"), &Theme::clear_icon); + ClassDB::bind_method(D_METHOD("get_icon_list", "node_type"), &Theme::_get_icon_list); + + ClassDB::bind_method(D_METHOD("set_stylebox", "name", "node_type", "texture"), &Theme::set_stylebox); + ClassDB::bind_method(D_METHOD("get_stylebox", "name", "node_type"), &Theme::get_stylebox); + ClassDB::bind_method(D_METHOD("has_stylebox", "name", "node_type"), &Theme::has_stylebox); + ClassDB::bind_method(D_METHOD("clear_stylebox", "name", "node_type"), &Theme::clear_stylebox); + ClassDB::bind_method(D_METHOD("get_stylebox_list", "node_type"), &Theme::_get_stylebox_list); ClassDB::bind_method(D_METHOD("get_stylebox_types"), &Theme::_get_stylebox_types); - ClassDB::bind_method(D_METHOD("set_font", "name", "type", "font"), &Theme::set_font); - ClassDB::bind_method(D_METHOD("get_font", "name", "type"), &Theme::get_font); - ClassDB::bind_method(D_METHOD("has_font", "name", "type"), &Theme::has_font); - ClassDB::bind_method(D_METHOD("clear_font", "name", "type"), &Theme::clear_font); - ClassDB::bind_method(D_METHOD("get_font_list", "type"), &Theme::_get_font_list); + ClassDB::bind_method(D_METHOD("set_font", "name", "node_type", "font"), &Theme::set_font); + ClassDB::bind_method(D_METHOD("get_font", "name", "node_type"), &Theme::get_font); + ClassDB::bind_method(D_METHOD("has_font", "name", "node_type"), &Theme::has_font); + ClassDB::bind_method(D_METHOD("clear_font", "name", "node_type"), &Theme::clear_font); + ClassDB::bind_method(D_METHOD("get_font_list", "node_type"), &Theme::_get_font_list); - ClassDB::bind_method(D_METHOD("set_color", "name", "type", "color"), &Theme::set_color); - ClassDB::bind_method(D_METHOD("get_color", "name", "type"), &Theme::get_color); - ClassDB::bind_method(D_METHOD("has_color", "name", "type"), &Theme::has_color); - ClassDB::bind_method(D_METHOD("clear_color", "name", "type"), &Theme::clear_color); - ClassDB::bind_method(D_METHOD("get_color_list", "type"), &Theme::_get_color_list); + ClassDB::bind_method(D_METHOD("set_color", "name", "node_type", "color"), &Theme::set_color); + ClassDB::bind_method(D_METHOD("get_color", "name", "node_type"), &Theme::get_color); + ClassDB::bind_method(D_METHOD("has_color", "name", "node_type"), &Theme::has_color); + ClassDB::bind_method(D_METHOD("clear_color", "name", "node_type"), &Theme::clear_color); + ClassDB::bind_method(D_METHOD("get_color_list", "node_type"), &Theme::_get_color_list); - ClassDB::bind_method(D_METHOD("set_constant", "name", "type", "constant"), &Theme::set_constant); - ClassDB::bind_method(D_METHOD("get_constant", "name", "type"), &Theme::get_constant); - ClassDB::bind_method(D_METHOD("has_constant", "name", "type"), &Theme::has_constant); - ClassDB::bind_method(D_METHOD("clear_constant", "name", "type"), &Theme::clear_constant); - ClassDB::bind_method(D_METHOD("get_constant_list", "type"), &Theme::_get_constant_list); + ClassDB::bind_method(D_METHOD("set_constant", "name", "node_type", "constant"), &Theme::set_constant); + ClassDB::bind_method(D_METHOD("get_constant", "name", "node_type"), &Theme::get_constant); + ClassDB::bind_method(D_METHOD("has_constant", "name", "node_type"), &Theme::has_constant); + ClassDB::bind_method(D_METHOD("clear_constant", "name", "node_type"), &Theme::clear_constant); + ClassDB::bind_method(D_METHOD("get_constant_list", "node_type"), &Theme::_get_constant_list); ClassDB::bind_method(D_METHOD("clear"), &Theme::clear); ClassDB::bind_method(D_METHOD("set_default_font", "font"), &Theme::set_default_theme_font); ClassDB::bind_method(D_METHOD("get_default_font"), &Theme::get_default_theme_font); - ClassDB::bind_method(D_METHOD("get_type_list", "type"), &Theme::_get_type_list); + ClassDB::bind_method(D_METHOD("get_type_list", "node_type"), &Theme::_get_type_list); ClassDB::bind_method("copy_default_theme", &Theme::copy_default_theme); ClassDB::bind_method(D_METHOD("copy_theme", "other"), &Theme::copy_theme); diff --git a/scene/resources/theme.h b/scene/resources/theme.h index 5f46ce6303..9c17a69e5d 100644 --- a/scene/resources/theme.h +++ b/scene/resources/theme.h @@ -51,13 +51,13 @@ class Theme : public Resource { HashMap<StringName, HashMap<StringName, Color>> color_map; HashMap<StringName, HashMap<StringName, int>> constant_map; - Vector<String> _get_icon_list(const String &p_type) const; - Vector<String> _get_stylebox_list(const String &p_type) const; + Vector<String> _get_icon_list(const String &p_node_type) const; + Vector<String> _get_stylebox_list(const String &p_node_type) const; Vector<String> _get_stylebox_types() const; - Vector<String> _get_font_list(const String &p_type) const; - Vector<String> _get_color_list(const String &p_type) const; - Vector<String> _get_constant_list(const String &p_type) const; - Vector<String> _get_type_list(const String &p_type) const; + Vector<String> _get_font_list(const String &p_node_type) const; + Vector<String> _get_color_list(const String &p_node_type) const; + Vector<String> _get_constant_list(const String &p_node_type) const; + Vector<String> _get_type_list(const String &p_node_type) const; protected: bool _set(const StringName &p_name, const Variant &p_value); @@ -88,42 +88,42 @@ public: void set_default_theme_font(const Ref<Font> &p_default_font); Ref<Font> get_default_theme_font() const; - void set_icon(const StringName &p_name, const StringName &p_type, const Ref<Texture2D> &p_icon); - Ref<Texture2D> get_icon(const StringName &p_name, const StringName &p_type) const; - bool has_icon(const StringName &p_name, const StringName &p_type) const; - void clear_icon(const StringName &p_name, const StringName &p_type); - void get_icon_list(StringName p_type, List<StringName> *p_list) const; - - void set_shader(const StringName &p_name, const StringName &p_type, const Ref<Shader> &p_shader); - Ref<Shader> get_shader(const StringName &p_name, const StringName &p_type) const; - bool has_shader(const StringName &p_name, const StringName &p_type) const; - void clear_shader(const StringName &p_name, const StringName &p_type); - void get_shader_list(const StringName &p_type, List<StringName> *p_list) const; - - void set_stylebox(const StringName &p_name, const StringName &p_type, const Ref<StyleBox> &p_style); - Ref<StyleBox> get_stylebox(const StringName &p_name, const StringName &p_type) const; - bool has_stylebox(const StringName &p_name, const StringName &p_type) const; - void clear_stylebox(const StringName &p_name, const StringName &p_type); - void get_stylebox_list(StringName p_type, List<StringName> *p_list) const; + void set_icon(const StringName &p_name, const StringName &p_node_type, const Ref<Texture2D> &p_icon); + Ref<Texture2D> get_icon(const StringName &p_name, const StringName &p_node_type) const; + bool has_icon(const StringName &p_name, const StringName &p_node_type) const; + void clear_icon(const StringName &p_name, const StringName &p_node_type); + void get_icon_list(StringName p_node_type, List<StringName> *p_list) const; + + void set_shader(const StringName &p_name, const StringName &p_node_type, const Ref<Shader> &p_shader); + Ref<Shader> get_shader(const StringName &p_name, const StringName &p_node_type) const; + bool has_shader(const StringName &p_name, const StringName &p_node_type) const; + void clear_shader(const StringName &p_name, const StringName &p_node_type); + void get_shader_list(const StringName &p_node_type, List<StringName> *p_list) const; + + void set_stylebox(const StringName &p_name, const StringName &p_node_type, const Ref<StyleBox> &p_style); + Ref<StyleBox> get_stylebox(const StringName &p_name, const StringName &p_node_type) const; + bool has_stylebox(const StringName &p_name, const StringName &p_node_type) const; + void clear_stylebox(const StringName &p_name, const StringName &p_node_type); + void get_stylebox_list(StringName p_node_type, List<StringName> *p_list) const; void get_stylebox_types(List<StringName> *p_list) const; - void set_font(const StringName &p_name, const StringName &p_type, const Ref<Font> &p_font); - Ref<Font> get_font(const StringName &p_name, const StringName &p_type) const; - bool has_font(const StringName &p_name, const StringName &p_type) const; - void clear_font(const StringName &p_name, const StringName &p_type); - void get_font_list(StringName p_type, List<StringName> *p_list) const; - - void set_color(const StringName &p_name, const StringName &p_type, const Color &p_color); - Color get_color(const StringName &p_name, const StringName &p_type) const; - bool has_color(const StringName &p_name, const StringName &p_type) const; - void clear_color(const StringName &p_name, const StringName &p_type); - void get_color_list(StringName p_type, List<StringName> *p_list) const; - - void set_constant(const StringName &p_name, const StringName &p_type, int p_constant); - int get_constant(const StringName &p_name, const StringName &p_type) const; - bool has_constant(const StringName &p_name, const StringName &p_type) const; - void clear_constant(const StringName &p_name, const StringName &p_type); - void get_constant_list(StringName p_type, List<StringName> *p_list) const; + void set_font(const StringName &p_name, const StringName &p_node_type, const Ref<Font> &p_font); + Ref<Font> get_font(const StringName &p_name, const StringName &p_node_type) const; + bool has_font(const StringName &p_name, const StringName &p_node_type) const; + void clear_font(const StringName &p_name, const StringName &p_node_type); + void get_font_list(StringName p_node_type, List<StringName> *p_list) const; + + void set_color(const StringName &p_name, const StringName &p_node_type, const Color &p_color); + Color get_color(const StringName &p_name, const StringName &p_node_type) const; + bool has_color(const StringName &p_name, const StringName &p_node_type) const; + void clear_color(const StringName &p_name, const StringName &p_node_type); + void get_color_list(StringName p_node_type, List<StringName> *p_list) const; + + void set_constant(const StringName &p_name, const StringName &p_node_type, int p_constant); + int get_constant(const StringName &p_name, const StringName &p_node_type) const; + bool has_constant(const StringName &p_name, const StringName &p_node_type) const; + void clear_constant(const StringName &p_name, const StringName &p_node_type); + void get_constant_list(StringName p_node_type, List<StringName> *p_list) const; void get_type_list(List<StringName> *p_list) const; diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 141d4b09f5..283d89e5cf 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -1849,7 +1849,6 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { }; const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = { - // Spatial, Fragment { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0, 0.0, 1.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "vec3(0.0, 1.0, 0.0)" }, diff --git a/servers/audio/effects/audio_effect_chorus.h b/servers/audio/effects/audio_effect_chorus.h index 81af948530..b32b300dfa 100644 --- a/servers/audio/effects/audio_effect_chorus.h +++ b/servers/audio/effects/audio_effect_chorus.h @@ -60,7 +60,6 @@ class AudioEffectChorus : public AudioEffect { public: enum { - MAX_DELAY_MS = 50, MAX_DEPTH_MS = 20, MAX_WIDTH_MS = 50, diff --git a/servers/audio/effects/audio_effect_delay.h b/servers/audio/effects/audio_effect_delay.h index a55000af4b..3b7f2ea458 100644 --- a/servers/audio/effects/audio_effect_delay.h +++ b/servers/audio/effects/audio_effect_delay.h @@ -62,7 +62,6 @@ class AudioEffectDelay : public AudioEffect { friend class AudioEffectDelayInstance; enum { - MAX_DELAY_MS = 3000, MAX_TAPS = 2 }; diff --git a/servers/audio/effects/audio_effect_pitch_shift.cpp b/servers/audio/effects/audio_effect_pitch_shift.cpp index fb6b56d984..fdba1b59a3 100644 --- a/servers/audio/effects/audio_effect_pitch_shift.cpp +++ b/servers/audio/effects/audio_effect_pitch_shift.cpp @@ -95,14 +95,12 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff expct = 2.*Math_PI*(double)stepSize/(double)fftFrameSize; inFifoLatency = fftFrameSize-stepSize; if (gRover == 0) { gRover = inFifoLatency; - } /* initialize our static arrays */ /* main processing loop */ for (i = 0; i < numSampsToProcess; i++){ - /* As long as we have not yet collected enough data just read in */ gInFIFO[gRover] = indata[i*stride]; outdata[i*stride] = gOutFIFO[gRover-inFifoLatency]; @@ -126,7 +124,6 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff /* this is the analysis step */ for (k = 0; k <= fftFrameSize2; k++) { - /* de-interlace FFT buffer */ real = gFFTworksp[2*k]; imag = gFFTworksp[2*k+1]; @@ -146,7 +143,6 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff qpd = tmp/Math_PI; if (qpd >= 0) { qpd += qpd&1; } else { qpd -= qpd&1; - } tmp -= Math_PI*(double)qpd; @@ -177,7 +173,6 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff /* ***************** SYNTHESIS ******************* */ /* this is the synthesis step */ for (k = 0; k <= fftFrameSize2; k++) { - /* get magnitude and true frequency from synthesis arrays */ magn = gSynMagn[k]; tmp = gSynFreq[k]; @@ -205,7 +200,6 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff /* zero negative frequencies */ for (k = fftFrameSize+2; k < 2*fftFrameSize; k++) { gFFTworksp[k] = 0.; - } /* do inverse transform */ @@ -217,7 +211,6 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff gOutputAccum[k] += 2.*window*gFFTworksp[2*k]/(fftFrameSize2*osamp); } for (k = 0; k < stepSize; k++) { gOutFIFO[k] = gOutputAccum[k]; - } /* shift accumulator */ @@ -225,13 +218,9 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff /* move input FIFO */ for (k = 0; k < inFifoLatency; k++) { gInFIFO[k] = gInFIFO[k+stepSize]; - } } } - - - } @@ -256,7 +245,6 @@ void SMBPitchShift::smbFft(float *fftBuffer, long fftFrameSize, long sign) for (i = 2; i < 2*fftFrameSize-2; i += 2) { for (bitm = 2, j = 0; bitm < 2*fftFrameSize; bitm <<= 1) { if (i & bitm) { j++; - } j <<= 1; } diff --git a/servers/audio/effects/audio_effect_stereo_enhance.h b/servers/audio/effects/audio_effect_stereo_enhance.h index 7fb32bd8ec..98ee18ba5a 100644 --- a/servers/audio/effects/audio_effect_stereo_enhance.h +++ b/servers/audio/effects/audio_effect_stereo_enhance.h @@ -41,7 +41,6 @@ class AudioEffectStereoEnhanceInstance : public AudioEffectInstance { Ref<AudioEffectStereoEnhance> base; enum { - MAX_DELAY_MS = 50 }; diff --git a/servers/audio/effects/eq.h b/servers/audio/effects/eq.h index 720c4dfcaf..c908c9c8fb 100644 --- a/servers/audio/effects/eq.h +++ b/servers/audio/effects/eq.h @@ -43,7 +43,6 @@ class EQ { public: enum Preset { - PRESET_6_BANDS, PRESET_8_BANDS, PRESET_10_BANDS, diff --git a/servers/audio/effects/reverb.cpp b/servers/audio/effects/reverb.cpp index 7c35d88ced..1deb1499b5 100644 --- a/servers/audio/effects/reverb.cpp +++ b/servers/audio/effects/reverb.cpp @@ -127,13 +127,11 @@ void Reverb::process(float *p_src, float *p_dst, int p_frames) { int ap_size_limit[MAX_ALLPASS]; for (int i=0;i<MAX_ALLPASS;i++) { - AllPass &a=allpass[i]; ap_size_limit[i]=a.size-lrintf((float)a.extra_spread_frames*(1.0-params.extra_spread)); } for (int i=0;i<p_frames;i++) { - float sample=p_dst[i]; float aux,in; float AllPass*ap; diff --git a/servers/audio/effects/reverb.h b/servers/audio/effects/reverb.h index 614de0c534..7dd88f9faf 100644 --- a/servers/audio/effects/reverb.h +++ b/servers/audio/effects/reverb.h @@ -46,7 +46,6 @@ public: private: enum { - MAX_COMBS = 8, MAX_ALLPASS = 4, MAX_ECHO_MS = 500 diff --git a/servers/audio_server.h b/servers/audio_server.h index 507aea7b89..83377a5e9e 100644 --- a/servers/audio_server.h +++ b/servers/audio_server.h @@ -122,7 +122,6 @@ public: class AudioDriverManager { enum { - MAX_DRIVERS = 10 }; diff --git a/servers/display_server.h b/servers/display_server.h index c2ffb23531..59bee794b8 100644 --- a/servers/display_server.h +++ b/servers/display_server.h @@ -177,7 +177,6 @@ public: } virtual bool screen_is_touchscreen(int p_screen = SCREEN_OF_MAIN_WINDOW) const; enum ScreenOrientation { - SCREEN_LANDSCAPE, SCREEN_PORTRAIT, SCREEN_REVERSE_LANDSCAPE, diff --git a/servers/physics_2d/physics_server_2d_sw.cpp b/servers/physics_2d/physics_server_2d_sw.cpp index 9d00d01759..755804fe36 100644 --- a/servers/physics_2d/physics_server_2d_sw.cpp +++ b/servers/physics_2d/physics_server_2d_sw.cpp @@ -1230,8 +1230,6 @@ void PhysicsServer2DSW::step(real_t p_step) { _update_shapes(); - doing_sync = false; - last_step = p_step; PhysicsDirectBodyState2DSW::singleton->step = p_step; island_count = 0; diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index a8ab731ead..edadcabe0b 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -603,7 +603,6 @@ int Space2DSW::test_body_ray_separation(Body2DSW *p_body, const Transform2D &p_t * direction. Use a short ray shape if you want to achieve a similar effect. * if (col_obj->is_shape_set_as_one_way_collision(shape_idx)) { - cbk.valid_dir = col_obj_shape_xform.get_axis(1).normalized(); cbk.valid_depth = p_margin; //only valid depth is the collision margin cbk.invalid_by_dir = 0; diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h index 5c5144ae22..93b62e0ba4 100644 --- a/servers/physics_2d/space_2d_sw.h +++ b/servers/physics_2d/space_2d_sw.h @@ -105,7 +105,6 @@ private: real_t test_motion_min_contact_depth; enum { - INTERSECTION_QUERY_MAX = 2048 }; diff --git a/servers/physics_3d/body_3d_sw.cpp b/servers/physics_3d/body_3d_sw.cpp index d1f16cb4ae..841e593ba3 100644 --- a/servers/physics_3d/body_3d_sw.cpp +++ b/servers/physics_3d/body_3d_sw.cpp @@ -628,7 +628,6 @@ void Body3DSW::integrate_velocities(real_t p_step) { /* void BodySW::simulate_motion(const Transform& p_xform,real_t p_step) { - Transform inv_xform = p_xform.affine_inverse(); if (!get_space()) { _set_transform(p_xform); @@ -655,8 +654,6 @@ void BodySW::simulate_motion(const Transform& p_xform,real_t p_step) { get_space()->body_add_to_state_query_list(&direct_state_query_list); simulated_motion=true; _set_transform(p_xform); - - } */ diff --git a/servers/physics_3d/body_pair_3d_sw.h b/servers/physics_3d/body_pair_3d_sw.h index 59e36e7ea5..5f08d0cfa9 100644 --- a/servers/physics_3d/body_pair_3d_sw.h +++ b/servers/physics_3d/body_pair_3d_sw.h @@ -36,7 +36,6 @@ class BodyPair3DSW : public Constraint3DSW { enum { - MAX_CONTACTS = 4 }; diff --git a/servers/physics_3d/gjk_epa.cpp b/servers/physics_3d/gjk_epa.cpp index d99a2532f8..e14949543e 100644 --- a/servers/physics_3d/gjk_epa.cpp +++ b/servers/physics_3d/gjk_epa.cpp @@ -102,7 +102,6 @@ typedef unsigned char U1; // MinkowskiDiff struct MinkowskiDiff { - const Shape3DSW* m_shapes[2]; Transform transform_A; @@ -127,7 +126,6 @@ struct MinkowskiDiff { return ( Support1 ( d ) ); } else { return ( Support0 ( d ) ); - } } }; @@ -281,7 +279,6 @@ struct GJK } } if(mask==15) { m_status=eStatus::Inside; - } } else @@ -312,12 +309,10 @@ struct GJK axis[i]=1; appendvertice(*m_simplex, axis); if(EncloseOrigin()) { return(true); - } removevertice(*m_simplex); appendvertice(*m_simplex,-axis); if(EncloseOrigin()) { return(true); - } removevertice(*m_simplex); } @@ -335,12 +330,10 @@ struct GJK { appendvertice(*m_simplex, p); if(EncloseOrigin()) { return(true); - } removevertice(*m_simplex); appendvertice(*m_simplex,-p); if(EncloseOrigin()) { return(true); - } removevertice(*m_simplex); } @@ -355,12 +348,10 @@ struct GJK { appendvertice(*m_simplex,n); if(EncloseOrigin()) { return(true); - } removevertice(*m_simplex); appendvertice(*m_simplex,-n); if(EncloseOrigin()) { return(true); - } removevertice(*m_simplex); } @@ -372,7 +363,6 @@ struct GJK m_simplex->c[1]->w-m_simplex->c[3]->w, m_simplex->c[2]->w-m_simplex->c[3]->w))>0) { return(true); - } } break; @@ -580,7 +570,6 @@ struct GJK face->l[0] = nullptr; face->l[1] = list.root; if(list.root) { list.root->l[0]=face; - } list.root = face; ++list.count; @@ -588,13 +577,10 @@ struct GJK static inline void remove(sList& list,sFace* face) { if(face->l[1]) { face->l[1]->l[0]=face->l[0]; - } if(face->l[0]) { face->l[0]->l[1]=face->l[1]; - } if(face==list.root) { list.root=face->l[1]; - } --list.count; } @@ -616,7 +602,6 @@ struct GJK GJK::sSimplex& simplex=*gjk.m_simplex; if((simplex.rank>1)&&gjk.EncloseOrigin()) { - /* Clean up */ while(m_hull.root) { @@ -677,7 +662,6 @@ struct GJK append(m_stock,best); best=findbest(); if(best->p>=outer.p) { outer=*best; - } } else { m_status=eStatus::InvalidHull;break; } } else { m_status=eStatus::AccuraryReached;break; } @@ -711,7 +695,6 @@ struct GJK m_normal = m_normal/nl; } else { m_normal = Vector3(1,0,0); - } m_depth = 0; m_result.rank=1; @@ -747,10 +730,8 @@ struct GJK { return(face); } else { m_status=eStatus::NonConvex; - } } else { m_status=eStatus::Degenerated; - } remove(m_hull,face); append(m_stock,face); @@ -793,7 +774,6 @@ struct GJK { bind(nf,0,f,e); if(horizon.cf) { bind(horizon.cf,1,nf,2); } else { horizon.ff=nf; - } horizon.cf=nf; ++horizon.nf; @@ -917,7 +897,6 @@ bool Penetration( const Shape3DSW* shape0, results.distance = -epa.m_depth; return(true); } else { results.status=sResults::EPA_Failed; - } } break; @@ -948,8 +927,6 @@ bool Penetration( const Shape3DSW* shape0, #undef EPA_FALLBACK #undef EPA_PLANE_EPS #undef EPA_INSIDE_EPS - - } // end of namespace /* clang-format on */ diff --git a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp b/servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp index fede40ca65..9ce5ebb7ed 100644 --- a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp +++ b/servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp @@ -253,7 +253,6 @@ void Generic6DOFJoint3DSW::calculateAngleInfo() { /* if(m_debugDrawer) { - char buff[300]; sprintf(buff,"\n X: %.2f ; Y: %.2f ; Z: %.2f ", m_calculatedAxisAngleDiff[0], diff --git a/servers/physics_3d/joints/hinge_joint_3d_sw.cpp b/servers/physics_3d/joints/hinge_joint_3d_sw.cpp index 52c7389e1f..c6fbc0f55f 100644 --- a/servers/physics_3d/joints/hinge_joint_3d_sw.cpp +++ b/servers/physics_3d/joints/hinge_joint_3d_sw.cpp @@ -365,7 +365,6 @@ void HingeJoint3DSW::solve(real_t p_step) { void HingeJointSW::updateRHS(real_t timeStep) { (void)timeStep; - } */ diff --git a/servers/physics_3d/joints/slider_joint_3d_sw.cpp b/servers/physics_3d/joints/slider_joint_3d_sw.cpp index 43bd49b4b5..dd6cc04f7c 100644 --- a/servers/physics_3d/joints/slider_joint_3d_sw.cpp +++ b/servers/physics_3d/joints/slider_joint_3d_sw.cpp @@ -105,7 +105,6 @@ void SliderJoint3DSW::initParams() { m_targetAngMotorVelocity = real_t(0.); m_maxAngMotorForce = real_t(0.); m_accumulatedAngMotorImpulse = real_t(0.0); - } // SliderJointSW::initParams() //----------------------------------------------------------------------------- diff --git a/servers/physics_3d/physics_server_3d_sw.cpp b/servers/physics_3d/physics_server_3d_sw.cpp index 143cc9ebbd..07a7498fec 100644 --- a/servers/physics_3d/physics_server_3d_sw.cpp +++ b/servers/physics_3d/physics_server_3d_sw.cpp @@ -174,7 +174,7 @@ real_t PhysicsServer3DSW::space_get_param(RID p_space, SpaceParameter p_param) c PhysicsDirectSpaceState3D *PhysicsServer3DSW::space_get_direct_state(RID p_space) { Space3DSW *space = space_owner.getornull(p_space); ERR_FAIL_COND_V(!space, nullptr); - ERR_FAIL_COND_V_MSG(!doing_sync || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification."); + ERR_FAIL_COND_V_MSG(space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification."); return space->get_direct_state(); } @@ -888,7 +888,7 @@ int PhysicsServer3DSW::body_test_ray_separation(RID p_body, const Transform &p_t PhysicsDirectBodyState3D *PhysicsServer3DSW::body_get_direct_state(RID p_body) { Body3DSW *body = body_owner.getornull(p_body); ERR_FAIL_COND_V(!body, nullptr); - ERR_FAIL_COND_V_MSG(!doing_sync || body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification."); + ERR_FAIL_COND_V_MSG(body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification."); direct_state->body = body; return direct_state; @@ -1287,7 +1287,6 @@ void PhysicsServer3DSW::set_active(bool p_active) { }; void PhysicsServer3DSW::init() { - doing_sync = true; last_step = 0.001; iterations = 8; // 8? stepper = memnew(Step3DSW); @@ -1303,8 +1302,6 @@ void PhysicsServer3DSW::step(real_t p_step) { _update_shapes(); - doing_sync = false; - last_step = p_step; PhysicsDirectBodyState3DSW::singleton->step = p_step; @@ -1327,8 +1324,6 @@ void PhysicsServer3DSW::flush_queries() { return; } - doing_sync = true; - flushing_queries = true; uint64_t time_beg = OS::get_singleton()->get_ticks_usec(); diff --git a/servers/physics_3d/physics_server_3d_sw.h b/servers/physics_3d/physics_server_3d_sw.h index a45ee7c2c8..f96a8863c3 100644 --- a/servers/physics_3d/physics_server_3d_sw.h +++ b/servers/physics_3d/physics_server_3d_sw.h @@ -44,7 +44,6 @@ class PhysicsServer3DSW : public PhysicsServer3D { friend class PhysicsDirectSpaceState3DSW; bool active; int iterations; - bool doing_sync; real_t last_step; int island_count; @@ -365,7 +364,6 @@ public: virtual void set_active(bool p_active) override; virtual void init() override; virtual void step(real_t p_step) override; - virtual void sync() override {} virtual void flush_queries() override; virtual void finish() override; diff --git a/servers/physics_3d/shape_3d_sw.cpp b/servers/physics_3d/shape_3d_sw.cpp index b8b01de3c3..107f850ebd 100644 --- a/servers/physics_3d/shape_3d_sw.cpp +++ b/servers/physics_3d/shape_3d_sw.cpp @@ -333,7 +333,6 @@ void BoxShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_s int i_n2 = next2[i]; static const real_t sign[4][2] = { - { -1.0, 1.0 }, { 1.0, 1.0 }, { 1.0, -1.0 }, diff --git a/servers/physics_3d/space_3d_sw.h b/servers/physics_3d/space_3d_sw.h index 6380bcc6dc..22535a6adb 100644 --- a/servers/physics_3d/space_3d_sw.h +++ b/servers/physics_3d/space_3d_sw.h @@ -97,7 +97,6 @@ private: real_t test_motion_min_contact_depth; enum { - INTERSECTION_QUERY_MAX = 2048 }; diff --git a/servers/physics_server_2d.h b/servers/physics_server_2d.h index 283a2ab58c..f7607d5dd5 100644 --- a/servers/physics_server_2d.h +++ b/servers/physics_server_2d.h @@ -276,7 +276,6 @@ public: virtual bool space_is_active(RID p_space) const = 0; enum SpaceParameter { - SPACE_PARAM_CONTACT_RECYCLE_RADIUS, SPACE_PARAM_CONTACT_MAX_SEPARATION, SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION, @@ -526,7 +525,6 @@ public: /* JOINT API */ enum JointType { - JOINT_PIN, JOINT_GROOVE, JOINT_DAMPED_SPRING @@ -587,7 +585,6 @@ public: virtual bool is_flushing_queries() const = 0; enum ProcessInfo { - INFO_ACTIVE_OBJECTS, INFO_COLLISION_PAIRS, INFO_ISLAND_COUNT diff --git a/servers/physics_server_3d.h b/servers/physics_server_3d.h index 90ef2bb8dd..3f7ad26257 100644 --- a/servers/physics_server_3d.h +++ b/servers/physics_server_3d.h @@ -259,7 +259,6 @@ public: virtual bool space_is_active(RID p_space) const = 0; enum SpaceParameter { - SPACE_PARAM_CONTACT_RECYCLE_RADIUS, SPACE_PARAM_CONTACT_MAX_SEPARATION, SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION, @@ -578,7 +577,6 @@ public: /* JOINT API */ enum JointType { - JOINT_PIN, JOINT_HINGE, JOINT_SLIDER, @@ -613,7 +611,6 @@ public: virtual Vector3 pin_joint_get_local_b(RID p_joint) const = 0; enum HingeJointParam { - HINGE_JOINT_BIAS, HINGE_JOINT_LIMIT_UPPER, HINGE_JOINT_LIMIT_LOWER, @@ -714,7 +711,6 @@ public: }; enum G6DOFJointAxisFlag { - G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT, G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT, G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING, @@ -749,14 +745,12 @@ public: virtual void set_active(bool p_active) = 0; virtual void init() = 0; virtual void step(float p_step) = 0; - virtual void sync() = 0; virtual void flush_queries() = 0; virtual void finish() = 0; virtual bool is_flushing_queries() const = 0; enum ProcessInfo { - INFO_ACTIVE_OBJECTS, INFO_COLLISION_PAIRS, INFO_ISLAND_COUNT diff --git a/servers/rendering/rasterizer.h b/servers/rendering/rasterizer.h index efaa8f138a..01c957e242 100644 --- a/servers/rendering/rasterizer.h +++ b/servers/rendering/rasterizer.h @@ -809,7 +809,6 @@ public: static RasterizerCanvas *singleton; enum CanvasRectFlags { - CANVAS_RECT_REGION = 1, CANVAS_RECT_TILE = 2, CANVAS_RECT_FLIP_H = 4, @@ -943,7 +942,6 @@ public: struct Command { enum Type { - TYPE_RECT, TYPE_NINEPATCH, TYPE_POLYGON, diff --git a/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp index 5d9e68f2b4..174f2d0e58 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp +++ b/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp @@ -687,7 +687,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ #if 0 case Item::Command::TYPE_MESH: { - Item::CommandMesh *mesh = static_cast<Item::CommandMesh *>(c); _set_texture_rect_mode(false); @@ -702,7 +701,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ RasterizerStorageGLES3::Mesh *mesh_data = storage->mesh_owner.getornull(mesh->mesh); if (mesh_data) { - for (int j = 0; j < mesh_data->surfaces.size(); j++) { RasterizerStorageGLES3::Surface *s = mesh_data->surfaces[j]; // materials are ignored in 2D meshes, could be added but many things (ie, lighting mode, reading from screen, etc) would break as they are not meant be set up at this point of drawing @@ -723,7 +721,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ } break; case Item::Command::TYPE_MULTIMESH: { - Item::CommandMultiMesh *mmesh = static_cast<Item::CommandMultiMesh *>(c); RasterizerStorageGLES3::MultiMesh *multi_mesh = storage->multimesh_owner.getornull(mmesh->multimesh); @@ -786,7 +783,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ int custom_data_ofs = color_ofs; switch (multi_mesh->color_format) { - case RS::MULTIMESH_COLOR_NONE: { glDisableVertexAttribArray(11); glVertexAttrib4f(11, 1, 1, 1, 1); @@ -807,7 +803,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ } switch (multi_mesh->custom_data_format) { - case RS::MULTIMESH_CUSTOM_DATA_NONE: { glDisableVertexAttribArray(12); glVertexAttrib4f(12, 1, 1, 1, 1); @@ -841,7 +836,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ } break; case Item::Command::TYPE_PARTICLES: { - Item::CommandParticles *particles_cmd = static_cast<Item::CommandParticles *>(c); RasterizerStorageGLES3::Particles *particles = storage->particles_owner.getornull(particles_cmd->particles); @@ -875,7 +869,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ } if (!particles->use_local_coords) { - Transform2D inv_xf; inv_xf.set_axis(0, Vector2(particles->emission_transform.basis.get_axis(0).x, particles->emission_transform.basis.get_axis(0).y)); inv_xf.set_axis(1, Vector2(particles->emission_transform.basis.get_axis(1).x, particles->emission_transform.basis.get_axis(1).y)); @@ -893,7 +886,6 @@ void RasterizerCanvasRD::_render_item(RD::DrawListID p_draw_list, const Item *p_ int amount = particles->amount; if (particles->draw_order != RS::PARTICLES_DRAW_ORDER_LIFETIME) { - glEnableVertexAttribArray(8); //xform x glVertexAttribPointer(8, 4, GL_FLOAT, GL_FALSE, stride, CAST_INT_TO_UCHAR_PTR(sizeof(float) * 4 * 3)); glVertexAttribDivisor(8, 1); diff --git a/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp index a275e46473..313188ba87 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp +++ b/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp @@ -1238,7 +1238,6 @@ void RasterizerSceneHighEndRD::_setup_environment(RID p_environment, RID p_rende } #if 0 if (p_render_buffers.is_valid() && render_buffers_is_sdfgi_enabled(p_render_buffers)) { - scene_state.ubo.sdfgi_cascade_count = render_buffers_get_sdfgi_cascade_count(p_render_buffers); scene_state.ubo.sdfgi_probe_axis_size = render_buffers_get_sdfgi_cascade_probe_count(p_render_buffers); scene_state.ubo.sdfgi_cascade_probe_size[0] = scene_state.ubo.sdfgi_probe_axis_size - 1; //float version for performance @@ -1583,7 +1582,6 @@ void RasterizerSceneHighEndRD::_fill_render_list(InstanceBase **p_cull_result, i } break; #if 0 case RS::INSTANCE_IMMEDIATE: { - RasterizerStorageGLES3::Immediate *immediate = storage->immediate_owner.getornull(inst->base); ERR_CONTINUE(!immediate); diff --git a/servers/rendering/rasterizer_rd/rasterizer_scene_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_scene_rd.cpp index e1be9b0ef4..da2b00b7a7 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_scene_rd.cpp +++ b/servers/rendering/rasterizer_rd/rasterizer_scene_rd.cpp @@ -1471,7 +1471,9 @@ void RasterizerSceneRD::_setup_giprobes(RID p_render_buffers, const Transform &p } if (giprobes_changed) { - RD::get_singleton()->free(rb->gi_uniform_set); + if (RD::get_singleton()->uniform_set_is_valid(rb->gi_uniform_set)) { + RD::get_singleton()->free(rb->gi_uniform_set); + } rb->gi_uniform_set = RID(); if (rb->volumetric_fog) { if (RD::get_singleton()->uniform_set_is_valid(rb->volumetric_fog->uniform_set)) { diff --git a/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp index 8bd4362637..847d73fe51 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp +++ b/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp @@ -5549,7 +5549,6 @@ void RasterizerStorageRD::gi_probe_allocate(RID p_gi_probe, const Transform &p_t } RID shared_tex; { - RD::TextureView tv; tv.format_override = RD::DATA_FORMAT_R8_UINT; shared_tex = RD::get_singleton()->texture_create_shared(tv, gi_probe->sdf_texture); diff --git a/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp b/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp index 1a33e9a567..08f4eb6aa0 100644 --- a/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp +++ b/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp @@ -671,7 +671,6 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge } /* for(Map<StringName,SL::ShaderNode::Uniform>::Element *E=pnode->uniforms.front();E;E=E->next()) { - if (SL::is_sampler_type(E->get().type)) { continue; } diff --git a/servers/rendering/rasterizer_rd/shaders/scene_high_end.glsl b/servers/rendering/rasterizer_rd/shaders/scene_high_end.glsl index da3c60af04..285698f060 100644 --- a/servers/rendering/rasterizer_rd/shaders/scene_high_end.glsl +++ b/servers/rendering/rasterizer_rd/shaders/scene_high_end.glsl @@ -868,7 +868,6 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v inout float alpha, #endif inout vec3 diffuse_light, inout vec3 specular_light) { - vec3 light_rel_vec = lights.data[idx].position - vertex; float light_length = length(light_rel_vec); float normalized_distance = light_length * lights.data[idx].inv_radius; @@ -1158,7 +1157,6 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v #endif inout vec3 diffuse_light, inout vec3 specular_light) { - vec3 light_rel_vec = lights.data[idx].position - vertex; float light_length = length(light_rel_vec); float normalized_distance = light_length * lights.data[idx].inv_radius; diff --git a/servers/rendering/rendering_server_canvas.cpp b/servers/rendering/rendering_server_canvas.cpp index 5a12be5659..364839c5d7 100644 --- a/servers/rendering/rendering_server_canvas.cpp +++ b/servers/rendering/rendering_server_canvas.cpp @@ -582,7 +582,6 @@ void RenderingServerCanvas::canvas_item_add_polyline(RID p_item, const Vector<Po } for (int i = 0; i < p_points.size(); i++) { - Vector2 t; if (i == p_points.size() - 1) { t = prev_t; @@ -608,7 +607,6 @@ void RenderingServerCanvas::canvas_item_add_polyline(RID p_item, const Vector<Po pline->triangles.write[i * 2 + 1] = p_points[i] - tangent; if (pline->triangle_colors.size() > 1) { - pline->triangle_colors.write[i * 2 + 0] = p_colors[i]; pline->triangle_colors.write[i * 2 + 1] = p_colors[i]; } diff --git a/servers/rendering/rendering_server_raster.h b/servers/rendering/rendering_server_raster.h index daad706f8e..60b25f1b94 100644 --- a/servers/rendering/rendering_server_raster.h +++ b/servers/rendering/rendering_server_raster.h @@ -41,7 +41,6 @@ class RenderingServerRaster : public RenderingServer { enum { - MAX_INSTANCE_CULL = 8192, MAX_INSTANCE_LIGHTS = 4, LIGHT_CACHE_DIRTY = -1, diff --git a/servers/rendering/rendering_server_scene.h b/servers/rendering/rendering_server_scene.h index a30aac3bb1..646b2a666f 100644 --- a/servers/rendering/rendering_server_scene.h +++ b/servers/rendering/rendering_server_scene.h @@ -45,7 +45,6 @@ class RenderingServerScene { public: enum { - MAX_INSTANCE_CULL = 65536, MAX_LIGHTS_CULLED = 4096, MAX_REFLECTION_PROBES_CULLED = 4096, diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index 046c6ba580..1ab353c9d0 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -2157,7 +2157,6 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = { { "fma", TYPE_VEC4, { TYPE_VEC4, TYPE_VEC4, TYPE_VEC4, TYPE_VOID }, TAG_GLOBAL, false }, { nullptr, TYPE_VOID, { TYPE_VOID }, TAG_GLOBAL, false } - }; const ShaderLanguage::BuiltinFuncOutArgs ShaderLanguage::builtin_func_out_args[] = { diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp index cc959afdaa..bd501f8bc5 100644 --- a/servers/rendering_server.cpp +++ b/servers/rendering_server.cpp @@ -1431,7 +1431,6 @@ Array RenderingServer::mesh_create_arrays_from_surface_data(const SurfaceData &p } #if 0 Array RenderingServer::_mesh_surface_get_skeleton_aabb_bind(RID p_mesh, int p_surface) const { - Vector<AABB> vec = RS::get_singleton()->mesh_surface_get_skeleton_aabb(p_mesh, p_surface); Array arr; for (int i = 0; i < vec.size(); i++) { diff --git a/tests/test_astar.h b/tests/test_astar.h index bef6127471..cd1bd84c15 100644 --- a/tests/test_astar.h +++ b/tests/test_astar.h @@ -362,7 +362,6 @@ TEST_CASE("[Stress][AStar] Find paths") { CHECK_MESSAGE(match, "Found all paths."); } } - } // namespace TestAStar #endif // TEST_ASTAR_H diff --git a/tests/test_basis.h b/tests/test_basis.h index db4e0b347f..00a00b4a5b 100644 --- a/tests/test_basis.h +++ b/tests/test_basis.h @@ -282,7 +282,6 @@ TEST_CASE("[Stress][Basis] Euler conversions") { } } } - } // namespace TestBasis #endif diff --git a/tests/test_class_db.h b/tests/test_class_db.h index 29fe837587..9a30891c16 100644 --- a/tests/test_class_db.h +++ b/tests/test_class_db.h @@ -830,7 +830,6 @@ TEST_SUITE("[ClassDB]") { } } } - } // namespace TestClassDB #endif //GODOT_TEST_CLASS_DB_H diff --git a/tests/test_color.h b/tests/test_color.h index 04b66811e3..c2bb63b7d0 100644 --- a/tests/test_color.h +++ b/tests/test_color.h @@ -202,7 +202,6 @@ TEST_CASE("[Color] Manipulation methods") { red.lerp(yellow, 0.5).is_equal_approx(Color(1, 0.5, 0, 0.5)), "Red interpolated with yellow should be orange (with interpolated alpha)."); } - } // namespace TestColor #endif // TEST_COLOR_H diff --git a/tests/test_command_queue.h b/tests/test_command_queue.h index c3cfa08b61..ce42d94475 100644 --- a/tests/test_command_queue.h +++ b/tests/test_command_queue.h @@ -474,7 +474,6 @@ TEST_CASE("[Stress][CommandQueue] Stress test command queue") { ProjectSettings::get_singleton()->set_setting(COMMAND_QUEUE_SETTING, ProjectSettings::get_singleton()->property_get_revert(COMMAND_QUEUE_SETTING)); } - } // namespace TestCommandQueue #endif // !defined(NO_THREADS) diff --git a/tests/test_config_file.h b/tests/test_config_file.h new file mode 100644 index 0000000000..f910ca4b1f --- /dev/null +++ b/tests/test_config_file.h @@ -0,0 +1,156 @@ +/*************************************************************************/ +/* test_config_file.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_CONFIG_FILE_H +#define TEST_CONFIG_FILE_H + +#include "core/io/config_file.h" + +#include "tests/test_macros.h" + +namespace TestConfigFile { + +TEST_CASE("[ConfigFile] Parsing well-formatted files") { + ConfigFile config_file; + // Formatting is intentionally hand-edited to see how human-friendly the parser is. + const Error error = config_file.parse(R"( +[player] + +name = "Unnamed Player" +tagline="Waiting +for +Godot" + +color =Color( 0, 0.5,1, 1) ; Inline comment +position= Vector2( + 3, + 4 +) + +[graphics] + +antialiasing = true + +; Testing comments and case-sensitivity... +antiAliasing = false +)"); + + CHECK_MESSAGE(error == OK, "The configuration file should parse successfully."); + CHECK_MESSAGE( + String(config_file.get_value("player", "name")) == "Unnamed Player", + "Reading `player/name` should return the expected value."); + CHECK_MESSAGE( + String(config_file.get_value("player", "tagline")) == "Waiting\nfor\nGodot", + "Reading `player/tagline` should return the expected value."); + CHECK_MESSAGE( + Color(config_file.get_value("player", "color")).is_equal_approx(Color(0, 0.5, 1)), + "Reading `player/color` should return the expected value."); + CHECK_MESSAGE( + Vector2(config_file.get_value("player", "position")).is_equal_approx(Vector2(3, 4)), + "Reading `player/position` should return the expected value."); + CHECK_MESSAGE( + bool(config_file.get_value("graphics", "antialiasing")), + "Reading `graphics/antialiasing` should return `true`."); + CHECK_MESSAGE( + bool(config_file.get_value("graphics", "antiAliasing")) == false, + "Reading `graphics/antiAliasing` should return `false`."); + + // An empty ConfigFile is valid. + const Error error_empty = config_file.parse(""); + CHECK_MESSAGE(error_empty == OK, + "An empty configuration file should parse successfully."); +} + +TEST_CASE("[ConfigFile] Parsing malformatted file") { + ConfigFile config_file; + ERR_PRINT_OFF; + const Error error = config_file.parse(R"( +[player] + +name = "Unnamed Player"" ; Extraneous closing quote. +tagline = "Waiting\nfor\nGodot" + +color = Color(0, 0.5, 1) ; Missing 4th parameter. +position = Vector2( + 3,, + 4 +) ; Extraneous comma. + +[graphics] + +antialiasing = true +antialiasing = false ; Duplicate key. +)"); + ERR_PRINT_ON; + + CHECK_MESSAGE(error == ERR_PARSE_ERROR, + "The configuration file shouldn't parse successfully."); +} + +TEST_CASE("[ConfigFile] Saving file") { + ConfigFile config_file; + config_file.set_value("player", "name", "Unnamed Player"); + config_file.set_value("player", "tagline", "Waiting\nfor\nGodot"); + config_file.set_value("player", "color", Color(0, 0.5, 1)); + config_file.set_value("player", "position", Vector2(3, 4)); + config_file.set_value("graphics", "antialiasing", true); + config_file.set_value("graphics", "antiAliasing", false); + +#ifdef WINDOWS_ENABLED + const String config_path = OS::get_singleton()->get_environment("TEMP").plus_file("config.ini"); +#else + const String config_path = "/tmp/config.ini"; +#endif + + config_file.save(config_path); + + // Expected contents of the saved ConfigFile. + const String contents = R"([player] + +name="Unnamed Player" +tagline="Waiting +for +Godot" +color=Color( 0, 0.5, 1, 1 ) +position=Vector2( 3, 4 ) + +[graphics] + +antialiasing=true +antiAliasing=false +)"; + + FileAccessRef file = FileAccess::open(config_path, FileAccess::READ); + CHECK_MESSAGE(file->get_as_utf8_string() == contents, + "The saved configuration file should match the expected format."); +} +} // namespace TestConfigFile + +#endif // TEST_CONFIG_FILE_H diff --git a/tests/test_curve.h b/tests/test_curve.h new file mode 100644 index 0000000000..b123ef6325 --- /dev/null +++ b/tests/test_curve.h @@ -0,0 +1,221 @@ +/*************************************************************************/ +/* test_curve.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_CURVE_H +#define TEST_CURVE_H + +#include "scene/resources/curve.h" + +#include "thirdparty/doctest/doctest.h" + +namespace TestCurve { + +TEST_CASE("[Curve] Default curve") { + const Ref<Curve> curve = memnew(Curve); + + CHECK_MESSAGE( + curve->get_point_count() == 0, + "Default curve should contain the expected number of points."); + CHECK_MESSAGE( + Math::is_zero_approx(curve->interpolate(0)), + "Default curve should return the expected value at offset 0.0."); + CHECK_MESSAGE( + Math::is_zero_approx(curve->interpolate(0.5)), + "Default curve should return the expected value at offset 0.5."); + CHECK_MESSAGE( + Math::is_zero_approx(curve->interpolate(1)), + "Default curve should return the expected value at offset 1.0."); +} + +TEST_CASE("[Curve] Custom curve with free tangents") { + Ref<Curve> curve = memnew(Curve); + // "Sawtooth" curve with an open ending towards the 1.0 offset. + curve->add_point(Vector2(0, 0)); + curve->add_point(Vector2(0.25, 1)); + curve->add_point(Vector2(0.5, 0)); + curve->add_point(Vector2(0.75, 1)); + + CHECK_MESSAGE( + Math::is_zero_approx(curve->get_point_left_tangent(0)), + "get_point_left_tangent() should return the expected value for point index 0."); + CHECK_MESSAGE( + Math::is_zero_approx(curve->get_point_right_tangent(0)), + "get_point_right_tangent() should return the expected value for point index 0."); + CHECK_MESSAGE( + curve->get_point_left_mode(0) == Curve::TangentMode::TANGENT_FREE, + "get_point_left_mode() should return the expected value for point index 0."); + CHECK_MESSAGE( + curve->get_point_right_mode(0) == Curve::TangentMode::TANGENT_FREE, + "get_point_right_mode() should return the expected value for point index 0."); + + CHECK_MESSAGE( + curve->get_point_count() == 4, + "Custom free curve should contain the expected number of points."); + + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(-0.1), 0), + "Custom free curve should return the expected value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.1), 0.352), + "Custom free curve should return the expected value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.4), 0.352), + "Custom free curve should return the expected value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.7), 0.896), + "Custom free curve should return the expected value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(1), 1), + "Custom free curve should return the expected value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(2), 1), + "Custom free curve should return the expected value at offset 0.1."); + + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(-0.1), 0), + "Custom free curve should return the expected baked value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.1), 0.352), + "Custom free curve should return the expected baked value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.4), 0.352), + "Custom free curve should return the expected baked value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.7), 0.896), + "Custom free curve should return the expected baked value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(1), 1), + "Custom free curve should return the expected baked value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(2), 1), + "Custom free curve should return the expected baked value at offset 0.1."); + + curve->remove_point(1); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.1), 0), + "Custom free curve should return the expected value at offset 0.1 after removing point at index 1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.1), 0), + "Custom free curve should return the expected baked value at offset 0.1 after removing point at index 1."); + + curve->clear_points(); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.6), 0), + "Custom free curve should return the expected value at offset 0.6 after clearing all points."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.6), 0), + "Custom free curve should return the expected baked value at offset 0.6 after clearing all points."); +} + +TEST_CASE("[Curve] Custom curve with linear tangents") { + Ref<Curve> curve = memnew(Curve); + // "Sawtooth" curve with an open ending towards the 1.0 offset. + curve->add_point(Vector2(0, 0), 0, 0, Curve::TangentMode::TANGENT_LINEAR, Curve::TangentMode::TANGENT_LINEAR); + curve->add_point(Vector2(0.25, 1), 0, 0, Curve::TangentMode::TANGENT_LINEAR, Curve::TangentMode::TANGENT_LINEAR); + curve->add_point(Vector2(0.5, 0), 0, 0, Curve::TangentMode::TANGENT_LINEAR, Curve::TangentMode::TANGENT_LINEAR); + curve->add_point(Vector2(0.75, 1), 0, 0, Curve::TangentMode::TANGENT_LINEAR, Curve::TangentMode::TANGENT_LINEAR); + + CHECK_MESSAGE( + Math::is_equal_approx(curve->get_point_left_tangent(3), 4), + "get_point_left_tangent() should return the expected value for point index 3."); + CHECK_MESSAGE( + Math::is_zero_approx(curve->get_point_right_tangent(3)), + "get_point_right_tangent() should return the expected value for point index 3."); + CHECK_MESSAGE( + curve->get_point_left_mode(3) == Curve::TangentMode::TANGENT_LINEAR, + "get_point_left_mode() should return the expected value for point index 3."); + CHECK_MESSAGE( + curve->get_point_right_mode(3) == Curve::TangentMode::TANGENT_LINEAR, + "get_point_right_mode() should return the expected value for point index 3."); + + ERR_PRINT_OFF; + CHECK_MESSAGE( + Math::is_zero_approx(curve->get_point_right_tangent(300)), + "get_point_right_tangent() should return the expected value for invalid point index 300."); + CHECK_MESSAGE( + curve->get_point_left_mode(-12345) == Curve::TangentMode::TANGENT_FREE, + "get_point_left_mode() should return the expected value for invalid point index -12345."); + ERR_PRINT_ON; + + CHECK_MESSAGE( + curve->get_point_count() == 4, + "Custom linear curve should contain the expected number of points."); + + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(-0.1), 0), + "Custom linear curve should return the expected value at offset -0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.1), 0.4), + "Custom linear curve should return the expected value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.4), 0.4), + "Custom linear curve should return the expected value at offset 0.4."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.7), 0.8), + "Custom linear curve should return the expected value at offset 0.7."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(1), 1), + "Custom linear curve should return the expected value at offset 1.0."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(2), 1), + "Custom linear curve should return the expected value at offset 2.0."); + + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(-0.1), 0), + "Custom linear curve should return the expected baked value at offset -0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.1), 0.4), + "Custom linear curve should return the expected baked value at offset 0.1."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.4), 0.4), + "Custom linear curve should return the expected baked value at offset 0.4."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.7), 0.8), + "Custom linear curve should return the expected baked value at offset 0.7."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(1), 1), + "Custom linear curve should return the expected baked value at offset 1.0."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(2), 1), + "Custom linear curve should return the expected baked value at offset 2.0."); + + ERR_PRINT_OFF; + curve->remove_point(10); + ERR_PRINT_ON; + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate(0.7), 0.8), + "Custom free curve should return the expected value at offset 0.7 after removing point at invalid index 10."); + CHECK_MESSAGE( + Math::is_equal_approx(curve->interpolate_baked(0.7), 0.8), + "Custom free curve should return the expected baked value at offset 0.7 after removing point at invalid index 10."); +} +} // namespace TestCurve + +#endif // TEST_CURVE_H diff --git a/tests/test_expression.h b/tests/test_expression.h index c9cb0158f3..0d970ba87a 100644 --- a/tests/test_expression.h +++ b/tests/test_expression.h @@ -439,7 +439,6 @@ TEST_CASE("[Expression] Unusual expressions") { // int64_t(expression.execute()) == 0, // "`(-9223372036854775807 - 1) / -1` should return the expected result."); } - } // namespace TestExpression #endif // TEST_EXPRESSION_H diff --git a/tests/test_gradient.h b/tests/test_gradient.h index 8f28dfd9b4..0c018c33e5 100644 --- a/tests/test_gradient.h +++ b/tests/test_gradient.h @@ -146,7 +146,6 @@ TEST_CASE("[Gradient] Custom gradient (points specified out-of-order)") { gradient->get_color_at_offset(0.1).is_equal_approx(Color(1, 0, 0)), "Custom out-of-order gradient should return the expected interpolated value at offset 0.1 after removing point at index 0."); } - } // namespace TestGradient #endif // TEST_GRADIENT_H diff --git a/tests/test_gui.cpp b/tests/test_gui.cpp index 03c9dfd2ba..c2d81bda69 100644 --- a/tests/test_gui.cpp +++ b/tests/test_gui.cpp @@ -265,7 +265,6 @@ public: MainLoop *test() { return memnew(TestMainLoop); } - } // namespace TestGUI #endif diff --git a/tests/test_json.h b/tests/test_json.h new file mode 100644 index 0000000000..fe29e89e06 --- /dev/null +++ b/tests/test_json.h @@ -0,0 +1,166 @@ +/*************************************************************************/ +/* test_json.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_JSON_H +#define TEST_JSON_H + +#include "core/io/json.h" + +#include "thirdparty/doctest/doctest.h" + +namespace TestJSON { + +// NOTE: The current JSON parser accepts many non-conformant strings such as +// single-quoted strings, duplicate commas and trailing commas. +// This is intentionally not tested as users shouldn't rely on this behavior. + +TEST_CASE("[JSON] Parsing single data types") { + // Parsing a single data type as JSON is valid per the JSON specification. + + JSON json; + Variant result; + String err_str; + int err_line; + + json.parse("null", result, err_str, err_line); + CHECK_MESSAGE( + err_line == 0, + "Parsing `null` as JSON should parse successfully."); + CHECK_MESSAGE( + result == Variant(), + "Parsing a double quoted string as JSON should return the expected value."); + + json.parse("true", result, err_str, err_line); + CHECK_MESSAGE( + err_line == 0, + "Parsing boolean `true` as JSON should parse successfully."); + CHECK_MESSAGE( + result, + "Parsing boolean `true` as JSON should return the expected value."); + + json.parse("false", result, err_str, err_line); + CHECK_MESSAGE( + err_line == 0, + "Parsing boolean `false` as JSON should parse successfully."); + CHECK_MESSAGE( + !result, + "Parsing boolean `false` as JSON should return the expected value."); + + // JSON only has a floating-point number type, no integer type. + // This is why we use `is_equal_approx()` for the comparison. + json.parse("123456", result, err_str, err_line); + CHECK_MESSAGE( + err_line == 0, + "Parsing an integer number as JSON should parse successfully."); + CHECK_MESSAGE( + Math::is_equal_approx(result, 123'456), + "Parsing an integer number as JSON should return the expected value."); + + json.parse("0.123456", result, err_str, err_line); + CHECK_MESSAGE( + err_line == 0, + "Parsing a floating-point number as JSON should parse successfully."); + CHECK_MESSAGE( + Math::is_equal_approx(result, 0.123456), + "Parsing a floating-point number as JSON should return the expected value."); + + json.parse("\"hello\"", result, err_str, err_line); + CHECK_MESSAGE( + err_line == 0, + "Parsing a double quoted string as JSON should parse successfully."); + CHECK_MESSAGE( + result == "hello", + "Parsing a double quoted string as JSON should return the expected value."); +} + +TEST_CASE("[JSON] Parsing arrays") { + JSON json; + Variant result; + String err_str; + int err_line; + + // JSON parsing fails if it's split over several lines (even if leading indentation is removed). + json.parse( + R"(["Hello", "world.", "This is",["a","json","array.",[]], "Empty arrays ahoy:", [[["Gotcha!"]]]])", + result, err_str, err_line); + + const Array array = result; + CHECK_MESSAGE( + err_line == 0, + "Parsing a JSON array should parse successfully."); + CHECK_MESSAGE( + array[0] == "Hello", + "The parsed JSON should contain the expected values."); + const Array sub_array = array[3]; + CHECK_MESSAGE( + sub_array.size() == 4, + "The parsed JSON should contain the expected values."); + CHECK_MESSAGE( + sub_array[1] == "json", + "The parsed JSON should contain the expected values."); + CHECK_MESSAGE( + sub_array[3].hash() == Array().hash(), + "The parsed JSON should contain the expected values."); + const Array deep_array = Array(Array(array[5])[0])[0]; + CHECK_MESSAGE( + deep_array[0] == "Gotcha!", + "The parsed JSON should contain the expected values."); +} + +TEST_CASE("[JSON] Parsing objects (dictionaries)") { + JSON json; + Variant result; + String err_str; + int err_line; + + json.parse( + R"({"name": "Godot Engine", "is_free": true, "bugs": null, "apples": {"red": 500, "green": 0, "blue": -20}, "empty_object": {}})", + result, err_str, err_line); + + const Dictionary dictionary = result; + CHECK_MESSAGE( + dictionary["name"] == "Godot Engine", + "The parsed JSON should contain the expected values."); + CHECK_MESSAGE( + dictionary["is_free"], + "The parsed JSON should contain the expected values."); + CHECK_MESSAGE( + dictionary["bugs"] == Variant(), + "The parsed JSON should contain the expected values."); + CHECK_MESSAGE( + Math::is_equal_approx(Dictionary(dictionary["apples"])["blue"], -20), + "The parsed JSON should contain the expected values."); + CHECK_MESSAGE( + dictionary["empty_object"].hash() == Dictionary().hash(), + "The parsed JSON should contain the expected values."); +} +} // namespace TestJSON + +#endif // TEST_JSON_H diff --git a/tests/test_list.h b/tests/test_list.h index adeedaaf3e..1b23233838 100644 --- a/tests/test_list.h +++ b/tests/test_list.h @@ -273,7 +273,6 @@ TEST_CASE("[Stress][List] Swap random 10 elements, 1000 iterations.") { populate_integers(list, n, 10); swap_random(list, n, 10, 1000); } - } // namespace TestList #endif // TEST_LIST_H diff --git a/tests/test_main.cpp b/tests/test_main.cpp index 6430d967c2..4388654d08 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -37,17 +37,23 @@ #include "test_class_db.h" #include "test_color.h" #include "test_command_queue.h" +#include "test_config_file.h" +#include "test_curve.h" #include "test_expression.h" #include "test_gradient.h" #include "test_gui.h" +#include "test_json.h" #include "test_list.h" #include "test_math.h" #include "test_method_bind.h" +#include "test_node_path.h" #include "test_oa_hash_map.h" #include "test_object.h" #include "test_ordered_hash_map.h" +#include "test_pck_packer.h" #include "test_physics_2d.h" #include "test_physics_3d.h" +#include "test_rect2.h" #include "test_render.h" #include "test_shader_lang.h" #include "test_string.h" @@ -109,10 +115,6 @@ int test_main(int argc, char *argv[]) { test_context.applyCommandLine(test_args.size(), doctest_args); - test_context.setOption("order-by", "name"); - test_context.setOption("abort-after", 5); - test_context.setOption("no-breaks", true); - for (int x = 0; x < test_args.size(); x++) { delete[] doctest_args[x]; } diff --git a/tests/test_math.cpp b/tests/test_math.cpp index e745d1609e..a7f99e5401 100644 --- a/tests/test_math.cpp +++ b/tests/test_math.cpp @@ -699,5 +699,4 @@ MainLoop *test() { return nullptr; } - } // namespace TestMath diff --git a/tests/test_method_bind.h b/tests/test_method_bind.h index 9507a10d3e..62d8bd132c 100644 --- a/tests/test_method_bind.h +++ b/tests/test_method_bind.h @@ -159,7 +159,6 @@ TEST_CASE("[MethodBind] check all method binds") { memdelete(mbt); } - } // namespace TestMethodBind #endif // TEST_METHOD_BIND_H diff --git a/tests/test_node_path.h b/tests/test_node_path.h new file mode 100644 index 0000000000..e9e06186f5 --- /dev/null +++ b/tests/test_node_path.h @@ -0,0 +1,172 @@ +/*************************************************************************/ +/* test_node_path.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_NODE_PATH_H +#define TEST_NODE_PATH_H + +#include "core/string/node_path.h" + +#include "thirdparty/doctest/doctest.h" + +namespace TestNodePath { + +TEST_CASE("[NodePath] Relative path") { + const NodePath node_path_relative = NodePath("Path2D/PathFollow2D/Sprite2D:position:x"); + + CHECK_MESSAGE( + node_path_relative.get_as_property_path() == NodePath(":Path2D/PathFollow2D/Sprite2D:position:x"), + "The returned property path should match the expected value."); + CHECK_MESSAGE( + node_path_relative.get_concatenated_subnames() == "position:x", + "The returned concatenated subnames should match the expected value."); + + CHECK_MESSAGE( + node_path_relative.get_name(0) == "Path2D", + "The returned name at index 0 should match the expected value."); + CHECK_MESSAGE( + node_path_relative.get_name(1) == "PathFollow2D", + "The returned name at index 1 should match the expected value."); + CHECK_MESSAGE( + node_path_relative.get_name(2) == "Sprite2D", + "The returned name at index 2 should match the expected value."); + ERR_PRINT_OFF; + CHECK_MESSAGE( + node_path_relative.get_name(3) == "", + "The returned name at invalid index 3 should match the expected value."); + CHECK_MESSAGE( + node_path_relative.get_name(-1) == "", + "The returned name at invalid index -1 should match the expected value."); + ERR_PRINT_ON; + + CHECK_MESSAGE( + node_path_relative.get_name_count() == 3, + "The returned number of names should match the expected value."); + + CHECK_MESSAGE( + node_path_relative.get_subname(0) == "position", + "The returned subname at index 0 should match the expected value."); + CHECK_MESSAGE( + node_path_relative.get_subname(1) == "x", + "The returned subname at index 1 should match the expected value."); + ERR_PRINT_OFF; + CHECK_MESSAGE( + node_path_relative.get_subname(2) == "", + "The returned subname at invalid index 2 should match the expected value."); + CHECK_MESSAGE( + node_path_relative.get_subname(-1) == "", + "The returned subname at invalid index -1 should match the expected value."); + ERR_PRINT_ON; + + CHECK_MESSAGE( + node_path_relative.get_subname_count() == 2, + "The returned number of subnames should match the expected value."); + + CHECK_MESSAGE( + !node_path_relative.is_absolute(), + "The node path should be considered relative."); + + CHECK_MESSAGE( + !node_path_relative.is_empty(), + "The node path shouldn't be considered empty."); +} + +TEST_CASE("[NodePath] Absolute path") { + const NodePath node_path_aboslute = NodePath("/root/Sprite2D"); + + CHECK_MESSAGE( + node_path_aboslute.get_as_property_path() == NodePath(":root/Sprite2D"), + "The returned property path should match the expected value."); + CHECK_MESSAGE( + node_path_aboslute.get_concatenated_subnames() == "", + "The returned concatenated subnames should match the expected value."); + + CHECK_MESSAGE( + node_path_aboslute.get_name(0) == "root", + "The returned name at index 0 should match the expected value."); + CHECK_MESSAGE( + node_path_aboslute.get_name(1) == "Sprite2D", + "The returned name at index 1 should match the expected value."); + ERR_PRINT_OFF; + CHECK_MESSAGE( + node_path_aboslute.get_name(2) == "", + "The returned name at invalid index 2 should match the expected value."); + CHECK_MESSAGE( + node_path_aboslute.get_name(-1) == "", + "The returned name at invalid index -1 should match the expected value."); + ERR_PRINT_ON; + + CHECK_MESSAGE( + node_path_aboslute.get_name_count() == 2, + "The returned number of names should match the expected value."); + + CHECK_MESSAGE( + node_path_aboslute.get_subname_count() == 0, + "The returned number of subnames should match the expected value."); + + CHECK_MESSAGE( + node_path_aboslute.is_absolute(), + "The node path should be considered absolute."); + + CHECK_MESSAGE( + !node_path_aboslute.is_empty(), + "The node path shouldn't be considered empty."); +} + +TEST_CASE("[NodePath] Empty path") { + const NodePath node_path_empty = NodePath(); + + CHECK_MESSAGE( + node_path_empty.get_as_property_path() == NodePath(), + "The returned property path should match the expected value."); + ERR_PRINT_OFF; + CHECK_MESSAGE( + node_path_empty.get_concatenated_subnames() == "", + "The returned concatenated subnames should match the expected value."); + ERR_PRINT_ON; + + CHECK_MESSAGE( + node_path_empty.get_name_count() == 0, + "The returned number of names should match the expected value."); + + CHECK_MESSAGE( + node_path_empty.get_subname_count() == 0, + "The returned number of subnames should match the expected value."); + + CHECK_MESSAGE( + !node_path_empty.is_absolute(), + "The node path shouldn't be considered absolute."); + + CHECK_MESSAGE( + node_path_empty.is_empty(), + "The node path should be considered empty."); +} +} // namespace TestNodePath + +#endif // TEST_NODE_PATH_H diff --git a/tests/test_oa_hash_map.cpp b/tests/test_oa_hash_map.cpp index 44717e5690..b0bb01bc71 100644 --- a/tests/test_oa_hash_map.cpp +++ b/tests/test_oa_hash_map.cpp @@ -295,5 +295,4 @@ MainLoop *test() { return nullptr; } - } // namespace TestOAHashMap diff --git a/tests/test_ordered_hash_map.h b/tests/test_ordered_hash_map.h index 9f987e8833..ef26d2531b 100644 --- a/tests/test_ordered_hash_map.h +++ b/tests/test_ordered_hash_map.h @@ -133,7 +133,6 @@ TEST_CASE("[OrderedHashMap] Const iteration") { ++idx; } } - } // namespace TestOrderedHashMap #endif // TEST_ORDERED_HASH_MAP_H diff --git a/tests/test_pck_packer.h b/tests/test_pck_packer.h new file mode 100644 index 0000000000..e086d65105 --- /dev/null +++ b/tests/test_pck_packer.h @@ -0,0 +1,114 @@ +/*************************************************************************/ +/* test_pck_packer.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_PCK_PACKER_H +#define TEST_PCK_PACKER_H + +#include "core/io/file_access_pack.h" +#include "core/io/pck_packer.h" +#include "core/os/os.h" + +#include "thirdparty/doctest/doctest.h" + +namespace TestPCKPacker { + +// Dummy 64-character encryption key (since it's required). +constexpr const char *ENCRYPTION_KEY = "0000000000000000000000000000000000000000000000000000000000000000"; + +TEST_CASE("[PCKPacker] Pack an empty PCK file") { + PCKPacker pck_packer; + const String output_pck_path = OS::get_singleton()->get_cache_path().plus_file("output_empty.pck"); + CHECK_MESSAGE( + pck_packer.pck_start( + output_pck_path, + 32, + ENCRYPTION_KEY) == OK, + "Starting a PCK file should return an OK error code."); + + CHECK_MESSAGE( + pck_packer.flush() == OK, + "Flushing the PCK should return an OK error code."); + + Error err; + FileAccessRef f = FileAccess::open(output_pck_path, FileAccess::READ, &err); + CHECK_MESSAGE( + err == OK, + "The generated empty PCK file should be opened successfully."); + CHECK_MESSAGE( + f->get_len() >= 100, + "The generated empty PCK file shouldn't be too small (it should have the PCK header)."); + CHECK_MESSAGE( + f->get_len() <= 500, + "The generated empty PCK file shouldn't be too large."); +} + +TEST_CASE("[PCKPacker] Pack a PCK file with some files and directories") { + PCKPacker pck_packer; + const String output_pck_path = OS::get_singleton()->get_cache_path().plus_file("output_with_files.pck"); + CHECK_MESSAGE( + pck_packer.pck_start( + output_pck_path, + 32, + ENCRYPTION_KEY) == OK, + "Starting a PCK file should return an OK error code."); + + const String base_dir = OS::get_singleton()->get_executable_path().get_base_dir(); + + CHECK_MESSAGE( + pck_packer.add_file("version.py", base_dir.plus_file("../version.py"), "version.py") == OK, + "Adding a file to the PCK should return an OK error code."); + CHECK_MESSAGE( + pck_packer.add_file("some/directories with spaces/to/create/icon.png", base_dir.plus_file("../icon.png")) == OK, + "Adding a file to a new subdirectory in the PCK should return an OK error code."); + CHECK_MESSAGE( + pck_packer.add_file("some/directories with spaces/to/create/icon.svg", base_dir.plus_file("../icon.svg")) == OK, + "Adding a file to an existing subdirectory in the PCK should return an OK error code."); + CHECK_MESSAGE( + pck_packer.add_file("some/directories with spaces/to/create/icon.png", base_dir.plus_file("../logo.png")) == OK, + "Overriding a non-flushed file to an existing subdirectory in the PCK should return an OK error code."); + CHECK_MESSAGE( + pck_packer.flush() == OK, + "Flushing the PCK should return an OK error code."); + + Error err; + FileAccessRef f = FileAccess::open(output_pck_path, FileAccess::READ, &err); + CHECK_MESSAGE( + err == OK, + "The generated non-empty PCK file should be opened successfully."); + CHECK_MESSAGE( + f->get_len() >= 25000, + "The generated non-empty PCK file should be large enough to actually hold the contents specified above."); + CHECK_MESSAGE( + f->get_len() <= 35000, + "The generated non-empty PCK file shouldn't be too large."); +} +} // namespace TestPCKPacker + +#endif // TEST_PCK_PACKER_H diff --git a/tests/test_physics_2d.cpp b/tests/test_physics_2d.cpp index 54d373b454..d40df52f1b 100644 --- a/tests/test_physics_2d.cpp +++ b/tests/test_physics_2d.cpp @@ -403,5 +403,4 @@ namespace TestPhysics2D { MainLoop *test() { return memnew(TestPhysics2DMainLoop); } - } // namespace TestPhysics2D diff --git a/tests/test_physics_3d.cpp b/tests/test_physics_3d.cpp index 1b453be76d..5f84b2eb50 100644 --- a/tests/test_physics_3d.cpp +++ b/tests/test_physics_3d.cpp @@ -409,5 +409,4 @@ namespace TestPhysics3D { MainLoop *test() { return memnew(TestPhysics3DMainLoop); } - } // namespace TestPhysics3D diff --git a/tests/test_rect2.h b/tests/test_rect2.h new file mode 100644 index 0000000000..aefceb1128 --- /dev/null +++ b/tests/test_rect2.h @@ -0,0 +1,467 @@ +/*************************************************************************/ +/* test_rect2.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_RECT2_H +#define TEST_RECT2_H + +#include "core/math/rect2.h" + +#include "thirdparty/doctest/doctest.h" + +namespace TestRect2 { +// We also test Rect2i here, for consistency with the source code where Rect2 +// and Rect2i are defined in the same file. + +// Rect2 + +TEST_CASE("[Rect2] Constructor methods") { + const Rect2 rect = Rect2(0, 100, 1280, 720); + const Rect2 rect_vector = Rect2(Vector2(0, 100), Vector2(1280, 720)); + const Rect2 rect_copy_rect = Rect2(rect); + const Rect2 rect_copy_recti = Rect2(Rect2i(0, 100, 1280, 720)); + + CHECK_MESSAGE( + rect == rect_vector, + "Rect2s created with the same dimensions but by different methods should be equal."); + CHECK_MESSAGE( + rect == rect_copy_rect, + "Rect2s created with the same dimensions but by different methods should be equal."); + CHECK_MESSAGE( + rect == rect_copy_recti, + "Rect2s created with the same dimensions but by different methods should be equal."); +} + +TEST_CASE("[Rect2] String conversion") { + // Note: This also depends on the Vector2 string representation. + CHECK_MESSAGE( + String(Rect2(0, 100, 1280, 720)) == "0, 100, 1280, 720", + "The string representation should match the expected value."); +} + +TEST_CASE("[Rect2] Basic getters") { + const Rect2 rect = Rect2(0, 100, 1280, 720); + CHECK_MESSAGE( + rect.get_position().is_equal_approx(Vector2(0, 100)), + "get_position() should return the expected value."); + CHECK_MESSAGE( + rect.get_size().is_equal_approx(Vector2(1280, 720)), + "get_size() should return the expected value."); + CHECK_MESSAGE( + rect.get_end().is_equal_approx(Vector2(1280, 820)), + "get_end() should return the expected value."); +} + +TEST_CASE("[Rect2] Basic setters") { + Rect2 rect = Rect2(0, 100, 1280, 720); + rect.set_end(Vector2(4000, 4000)); + CHECK_MESSAGE( + rect.is_equal_approx(Rect2(0, 100, 4000, 3900)), + "set_end() should result in the expected Rect2."); + + rect = Rect2(0, 100, 1280, 720); + rect.set_position(Vector2(4000, 4000)); + CHECK_MESSAGE( + rect.is_equal_approx(Rect2(4000, 4000, 1280, 720)), + "set_position() should result in the expected Rect2."); + + rect = Rect2(0, 100, 1280, 720); + rect.set_size(Vector2(4000, 4000)); + CHECK_MESSAGE( + rect.is_equal_approx(Rect2(0, 100, 4000, 4000)), + "set_size() should result in the expected Rect2."); +} + +TEST_CASE("[Rect2] Area getters") { + CHECK_MESSAGE( + Math::is_equal_approx(Rect2(0, 100, 1280, 720).get_area(), 921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_equal_approx(Rect2(0, 100, -1280, -720).get_area(), 921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_equal_approx(Rect2(0, 100, 1280, -720).get_area(), -921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_equal_approx(Rect2(0, 100, -1280, 720).get_area(), -921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_zero_approx(Rect2(0, 100, 0, 720).get_area()), + "get_area() should return the expected value."); + + CHECK_MESSAGE( + !Rect2(0, 100, 1280, 720).has_no_area(), + "has_no_area() should return the expected value on Rect2 with an area."); + CHECK_MESSAGE( + Rect2(0, 100, 0, 500).has_no_area(), + "has_no_area() should return the expected value on Rect2 with no area."); + CHECK_MESSAGE( + Rect2(0, 100, 500, 0).has_no_area(), + "has_no_area() should return the expected value on Rect2 with no area."); + CHECK_MESSAGE( + Rect2(0, 100, 0, 0).has_no_area(), + "has_no_area() should return the expected value on Rect2 with no area."); +} + +TEST_CASE("[Rect2] Absolute coordinates") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).abs().is_equal_approx(Rect2(0, 100, 1280, 720)), + "abs() should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, -100, 1280, 720).abs().is_equal_approx(Rect2(0, -100, 1280, 720)), + "abs() should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, -100, -1280, -720).abs().is_equal_approx(Rect2(-1280, -820, 1280, 720)), + "abs() should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, 100, -1280, 720).abs().is_equal_approx(Rect2(-1280, 100, 1280, 720)), + "abs() should return the expected Rect2."); +} + +TEST_CASE("[Rect2] Clipping") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).clip(Rect2(0, 300, 100, 100)).is_equal_approx(Rect2(0, 300, 100, 100)), + "clip() with fully enclosed Rect2 should return the expected result."); + // The resulting Rect2 is 100 pixels high because the first Rect2 is vertically offset by 100 pixels. + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).clip(Rect2(1200, 700, 100, 100)).is_equal_approx(Rect2(1200, 700, 80, 100)), + "clip() with partially enclosed Rect2 should return the expected result."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).clip(Rect2(-4000, -4000, 100, 100)).is_equal_approx(Rect2()), + "clip() with non-enclosed Rect2 should return the expected result."); +} + +TEST_CASE("[Rect2] Enclosing") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).encloses(Rect2(0, 300, 100, 100)), + "clip() with fully contained Rect2 should return the expected result."); + CHECK_MESSAGE( + !Rect2(0, 100, 1280, 720).encloses(Rect2(1200, 700, 100, 100)), + "clip() with partially contained Rect2 should return the expected result."); + CHECK_MESSAGE( + !Rect2(0, 100, 1280, 720).encloses(Rect2(-4000, -4000, 100, 100)), + "clip() with non-contained Rect2 should return the expected result."); +} + +TEST_CASE("[Rect2] Expanding") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).expand(Vector2(500, 600)).is_equal_approx(Rect2(0, 100, 1280, 720)), + "expand() with contained Vector2 should return the expected result."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).expand(Vector2(0, 0)).is_equal_approx(Rect2(0, 0, 1280, 820)), + "expand() with non-contained Vector2 should return the expected result."); +} + +TEST_CASE("[Rect2] Growing") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow(100).is_equal_approx(Rect2(-100, 0, 1480, 920)), + "grow() with positive value should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow(-100).is_equal_approx(Rect2(100, 200, 1080, 520)), + "grow() with negative value should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow(-4000).is_equal_approx(Rect2(4000, 4100, -6720, -7280)), + "grow() with large negative value should return the expected Rect2."); + + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow_individual(100, 200, 300, 400).is_equal_approx(Rect2(-100, -100, 1680, 1320)), + "grow_individual() with positive values should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow_individual(-100, 200, 300, -400).is_equal_approx(Rect2(100, -100, 1480, 520)), + "grow_individual() with positive and negative values should return the expected Rect2."); + + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow_margin(MARGIN_TOP, 500).is_equal_approx(Rect2(0, -400, 1280, 1220)), + "grow_margin() with positive value should return the expected Rect2."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).grow_margin(MARGIN_TOP, -500).is_equal_approx(Rect2(0, 600, 1280, 220)), + "grow_margin() with negative value should return the expected Rect2."); +} + +TEST_CASE("[Rect2] Has point") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).has_point(Vector2(500, 600)), + "has_point() with contained Vector2 should return the expected result."); + CHECK_MESSAGE( + !Rect2(0, 100, 1280, 720).has_point(Vector2(0, 0)), + "has_point() with non-contained Vector2 should return the expected result."); + + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).has_point(Vector2(0, 110)), + "has_point() with positive Vector2 on left edge should return the expected result."); + CHECK_MESSAGE( + !Rect2(0, 100, 1280, 720).has_point(Vector2(1280, 110)), + "has_point() with positive Vector2 on right edge should return the expected result."); + + CHECK_MESSAGE( + Rect2(-4000, 100, 1280, 720).has_point(Vector2(-4000, 110)), + "has_point() with negative Vector2 on left edge should return the expected result."); + CHECK_MESSAGE( + !Rect2(-4000, 100, 1280, 720).has_point(Vector2(-2720, 110)), + "has_point() with negative Vector2 on right edge should return the expected result."); +} + +TEST_CASE("[Rect2] Intersection") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).intersects(Rect2(0, 300, 100, 100)), + "intersects() with fully enclosed Rect2 should return the expected result."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).intersects(Rect2(1200, 700, 100, 100)), + "intersects() with partially enclosed Rect2 should return the expected result."); + CHECK_MESSAGE( + !Rect2(0, 100, 1280, 720).intersects(Rect2(-4000, -4000, 100, 100)), + "intersects() with non-enclosed Rect2 should return the expected result."); +} + +TEST_CASE("[Rect2] Merging") { + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).merge(Rect2(0, 300, 100, 100)).is_equal_approx(Rect2(0, 100, 1280, 720)), + "merge() with fully enclosed Rect2 should return the expected result."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).merge(Rect2(1200, 700, 100, 100)).is_equal_approx(Rect2(0, 100, 1300, 720)), + "merge() with partially enclosed Rect2 should return the expected result."); + CHECK_MESSAGE( + Rect2(0, 100, 1280, 720).merge(Rect2(-4000, -4000, 100, 100)).is_equal_approx(Rect2(-4000, -4000, 5280, 4820)), + "merge() with non-enclosed Rect2 should return the expected result."); +} + +// Rect2i + +TEST_CASE("[Rect2i] Constructor methods") { + Rect2i recti = Rect2i(0, 100, 1280, 720); + Rect2i recti_vector = Rect2i(Vector2i(0, 100), Vector2i(1280, 720)); + Rect2i recti_copy_recti = Rect2i(recti); + Rect2i recti_copy_rect = Rect2i(Rect2(0, 100, 1280, 720)); + + CHECK_MESSAGE( + recti == recti_vector, + "Rect2is created with the same dimensions but by different methods should be equal."); + CHECK_MESSAGE( + recti == recti_copy_recti, + "Rect2is created with the same dimensions but by different methods should be equal."); + CHECK_MESSAGE( + recti == recti_copy_rect, + "Rect2is created with the same dimensions but by different methods should be equal."); +} + +TEST_CASE("[Rect2i] String conversion") { + // Note: This also depends on the Vector2 string representation. + CHECK_MESSAGE( + String(Rect2i(0, 100, 1280, 720)) == "0, 100, 1280, 720", + "The string representation should match the expected value."); +} + +TEST_CASE("[Rect2i] Basic getters") { + const Rect2i rect = Rect2i(0, 100, 1280, 720); + CHECK_MESSAGE( + rect.get_position() == Vector2i(0, 100), + "get_position() should return the expected value."); + CHECK_MESSAGE( + rect.get_size() == Vector2i(1280, 720), + "get_size() should return the expected value."); + CHECK_MESSAGE( + rect.get_end() == Vector2i(1280, 820), + "get_end() should return the expected value."); +} + +TEST_CASE("[Rect2i] Basic setters") { + Rect2i rect = Rect2i(0, 100, 1280, 720); + rect.set_end(Vector2i(4000, 4000)); + CHECK_MESSAGE( + rect == Rect2i(0, 100, 4000, 3900), + "set_end() should result in the expected Rect2i."); + + rect = Rect2i(0, 100, 1280, 720); + rect.set_position(Vector2i(4000, 4000)); + CHECK_MESSAGE( + rect == Rect2i(4000, 4000, 1280, 720), + "set_position() should result in the expected Rect2i."); + + rect = Rect2i(0, 100, 1280, 720); + rect.set_size(Vector2i(4000, 4000)); + CHECK_MESSAGE( + rect == Rect2i(0, 100, 4000, 4000), + "set_size() should result in the expected Rect2i."); +} + +TEST_CASE("[Rect2i] Area getters") { + CHECK_MESSAGE( + Math::is_equal_approx(Rect2i(0, 100, 1280, 720).get_area(), 921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_equal_approx(Rect2i(0, 100, -1280, -720).get_area(), 921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_equal_approx(Rect2i(0, 100, 1280, -720).get_area(), -921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_equal_approx(Rect2i(0, 100, -1280, 720).get_area(), -921'600), + "get_area() should return the expected value."); + CHECK_MESSAGE( + Math::is_zero_approx(Rect2i(0, 100, 0, 720).get_area()), + "get_area() should return the expected value."); + + CHECK_MESSAGE( + !Rect2i(0, 100, 1280, 720).has_no_area(), + "has_no_area() should return the expected value on Rect2i with an area."); + CHECK_MESSAGE( + Rect2i(0, 100, 0, 500).has_no_area(), + "has_no_area() should return the expected value on Rect2i with no area."); + CHECK_MESSAGE( + Rect2i(0, 100, 500, 0).has_no_area(), + "has_no_area() should return the expected value on Rect2i with no area."); + CHECK_MESSAGE( + Rect2i(0, 100, 0, 0).has_no_area(), + "has_no_area() should return the expected value on Rect2i with no area."); +} + +TEST_CASE("[Rect2i] Absolute coordinates") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).abs() == Rect2i(0, 100, 1280, 720), + "abs() should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, -100, 1280, 720).abs() == Rect2i(0, -100, 1280, 720), + "abs() should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, -100, -1280, -720).abs() == Rect2i(-1280, -820, 1280, 720), + "abs() should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, 100, -1280, 720).abs() == Rect2i(-1280, 100, 1280, 720), + "abs() should return the expected Rect2i."); +} + +TEST_CASE("[Rect2i] Clipping") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).clip(Rect2i(0, 300, 100, 100)) == Rect2i(0, 300, 100, 100), + "clip() with fully enclosed Rect2i should return the expected result."); + // The resulting Rect2i is 100 pixels high because the first Rect2i is vertically offset by 100 pixels. + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).clip(Rect2i(1200, 700, 100, 100)) == Rect2i(1200, 700, 80, 100), + "clip() with partially enclosed Rect2i should return the expected result."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).clip(Rect2i(-4000, -4000, 100, 100)) == Rect2i(), + "clip() with non-enclosed Rect2i should return the expected result."); +} + +TEST_CASE("[Rect2i] Enclosing") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).encloses(Rect2i(0, 300, 100, 100)), + "clip() with fully contained Rect2i should return the expected result."); + CHECK_MESSAGE( + !Rect2i(0, 100, 1280, 720).encloses(Rect2i(1200, 700, 100, 100)), + "clip() with partially contained Rect2i should return the expected result."); + CHECK_MESSAGE( + !Rect2i(0, 100, 1280, 720).encloses(Rect2i(-4000, -4000, 100, 100)), + "clip() with non-contained Rect2i should return the expected result."); +} + +TEST_CASE("[Rect2i] Expanding") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).expand(Vector2i(500, 600)) == Rect2i(0, 100, 1280, 720), + "expand() with contained Vector2i should return the expected result."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).expand(Vector2i(0, 0)) == Rect2i(0, 0, 1280, 820), + "expand() with non-contained Vector2i should return the expected result."); +} + +TEST_CASE("[Rect2i] Growing") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow(100) == Rect2i(-100, 0, 1480, 920), + "grow() with positive value should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow(-100) == Rect2i(100, 200, 1080, 520), + "grow() with negative value should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow(-4000) == Rect2i(4000, 4100, -6720, -7280), + "grow() with large negative value should return the expected Rect2i."); + + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow_individual(100, 200, 300, 400) == Rect2i(-100, -100, 1680, 1320), + "grow_individual() with positive values should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow_individual(-100, 200, 300, -400) == Rect2i(100, -100, 1480, 520), + "grow_individual() with positive and negative values should return the expected Rect2i."); + + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow_margin(MARGIN_TOP, 500) == Rect2i(0, -400, 1280, 1220), + "grow_margin() with positive value should return the expected Rect2i."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).grow_margin(MARGIN_TOP, -500) == Rect2i(0, 600, 1280, 220), + "grow_margin() with negative value should return the expected Rect2i."); +} + +TEST_CASE("[Rect2i] Has point") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).has_point(Vector2i(500, 600)), + "has_point() with contained Vector2i should return the expected result."); + CHECK_MESSAGE( + !Rect2i(0, 100, 1280, 720).has_point(Vector2i(0, 0)), + "has_point() with non-contained Vector2i should return the expected result."); + + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).has_point(Vector2(0, 110)), + "has_point() with positive Vector2 on left edge should return the expected result."); + CHECK_MESSAGE( + !Rect2i(0, 100, 1280, 720).has_point(Vector2(1280, 110)), + "has_point() with positive Vector2 on right edge should return the expected result."); + + CHECK_MESSAGE( + Rect2i(-4000, 100, 1280, 720).has_point(Vector2(-4000, 110)), + "has_point() with negative Vector2 on left edge should return the expected result."); + CHECK_MESSAGE( + !Rect2i(-4000, 100, 1280, 720).has_point(Vector2(-2720, 110)), + "has_point() with negative Vector2 on right edge should return the expected result."); +} + +TEST_CASE("[Rect2i] Intersection") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).intersects(Rect2i(0, 300, 100, 100)), + "intersects() with fully enclosed Rect2i should return the expected result."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).intersects(Rect2i(1200, 700, 100, 100)), + "intersects() with partially enclosed Rect2i should return the expected result."); + CHECK_MESSAGE( + !Rect2i(0, 100, 1280, 720).intersects(Rect2i(-4000, -4000, 100, 100)), + "intersects() with non-enclosed Rect2i should return the expected result."); +} + +TEST_CASE("[Rect2i] Merging") { + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).merge(Rect2i(0, 300, 100, 100)) == Rect2i(0, 100, 1280, 720), + "merge() with fully enclosed Rect2i should return the expected result."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).merge(Rect2i(1200, 700, 100, 100)) == Rect2i(0, 100, 1300, 720), + "merge() with partially enclosed Rect2i should return the expected result."); + CHECK_MESSAGE( + Rect2i(0, 100, 1280, 720).merge(Rect2i(-4000, -4000, 100, 100)) == Rect2i(-4000, -4000, 5280, 4820), + "merge() with non-enclosed Rect2i should return the expected result."); +} +} // namespace TestRect2 + +#endif // TEST_RECT2_H diff --git a/tests/test_render.cpp b/tests/test_render.cpp index 8c5cac694c..d14251bc6a 100644 --- a/tests/test_render.cpp +++ b/tests/test_render.cpp @@ -98,7 +98,6 @@ public: } }*/ /*for(int i=0;i<100;i++) { - vts.push_back( Vector3(Math::randf()*2-1.0,Math::randf()*2-1.0,Math::randf()*2-1.0).normalized()*2); }*/ /* @@ -216,7 +215,6 @@ public: vs->instance_set_transform(E->get().instance, pre * E->get().base); /* if( !E->next() ) { - vs->free( E->get().instance ); instances.erase(E ); }*/ @@ -236,5 +234,4 @@ public: MainLoop *test() { return memnew(TestMainLoop); } - } // namespace TestRender diff --git a/tests/test_shader_lang.cpp b/tests/test_shader_lang.cpp index 4bfd593279..e79c83b001 100644 --- a/tests/test_shader_lang.cpp +++ b/tests/test_shader_lang.cpp @@ -357,5 +357,4 @@ MainLoop *test() { return nullptr; } - } // namespace TestShaderLang diff --git a/tests/test_string.h b/tests/test_string.h index acdcaccecd..48132cb278 100644 --- a/tests/test_string.h +++ b/tests/test_string.h @@ -1296,7 +1296,6 @@ TEST_CASE("[String] humanize_size") { CHECK(String::humanize_size(100523550) == "95.86 MiB"); CHECK(String::humanize_size(5345555000) == "4.97 GiB"); } - } // namespace TestString #endif // TEST_STRING_H diff --git a/tests/test_variant.h b/tests/test_variant.h index b7421c29a5..b575f6744d 100644 --- a/tests/test_variant.h +++ b/tests/test_variant.h @@ -105,7 +105,6 @@ TEST_CASE("[Variant] Writer and parser float") { CHECK_MESSAGE(b64_float_parsed == 340282001837565597733306976381245063168.0, "Should not overflow."); } - } // namespace TestVariant #endif // TEST_VARIANT_H diff --git a/thirdparty/README.md b/thirdparty/README.md index f590acaa0b..8533995180 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -76,15 +76,11 @@ Files extracted from upstream source: ## doctest - Upstream: https://github.com/onqtam/doctest -- Version: 1c8da00 (2.4.0) +- Version: 8424be5 (2.4.1) - License: MIT Extracted from .zip provided. Extracted license and header only. -Important: Some files have Godot-made changes. -They are marked with `// -- GODOT start --` and `// -- GODOT end --` -comments. - ## enet - Upstream: http://enet.bespin.org diff --git a/thirdparty/doctest/LICENSE.txt b/thirdparty/doctest/LICENSE.txt index a204721468..50a358cd1b 100644 --- a/thirdparty/doctest/LICENSE.txt +++ b/thirdparty/doctest/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016-2019 Viktor Kirilov +Copyright (c) 2016-2020 Viktor Kirilov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/thirdparty/doctest/doctest.h b/thirdparty/doctest/doctest.h index e4fed12767..acbe6cd321 100644 --- a/thirdparty/doctest/doctest.h +++ b/thirdparty/doctest/doctest.h @@ -4,7 +4,7 @@ // // doctest.h - the lightest feature-rich C++ single-header testing framework for unit tests and TDD // -// Copyright (c) 2016-2019 Viktor Kirilov +// Copyright (c) 2016-2020 Viktor Kirilov // // Distributed under the MIT Software License // See accompanying file LICENSE.txt or copy at @@ -48,8 +48,8 @@ #define DOCTEST_VERSION_MAJOR 2 #define DOCTEST_VERSION_MINOR 4 -#define DOCTEST_VERSION_PATCH 0 -#define DOCTEST_VERSION_STR "2.4.0" +#define DOCTEST_VERSION_PATCH 1 +#define DOCTEST_VERSION_STR "2.4.1" #define DOCTEST_VERSION \ (DOCTEST_VERSION_MAJOR * 10000 + DOCTEST_VERSION_MINOR * 100 + DOCTEST_VERSION_PATCH) @@ -301,11 +301,15 @@ DOCTEST_MSVC_SUPPRESS_WARNING(26812) // Prefer 'enum class' over 'enum' #define DOCTEST_NOINLINE __declspec(noinline) #define DOCTEST_UNUSED #define DOCTEST_ALIGNMENT(x) -#else // MSVC +#elif DOCTEST_CLANG && DOCTEST_CLANG < DOCTEST_COMPILER(3, 5, 0) +#define DOCTEST_NOINLINE +#define DOCTEST_UNUSED +#define DOCTEST_ALIGNMENT(x) +#else #define DOCTEST_NOINLINE __attribute__((noinline)) #define DOCTEST_UNUSED __attribute__((unused)) #define DOCTEST_ALIGNMENT(x) __attribute__((aligned(x))) -#endif // MSVC +#endif #ifndef DOCTEST_NORETURN #define DOCTEST_NORETURN [[noreturn]] @@ -355,14 +359,20 @@ DOCTEST_MSVC_SUPPRESS_WARNING(26812) // Prefer 'enum class' over 'enum' #ifndef DOCTEST_BREAK_INTO_DEBUGGER // should probably take a look at https://github.com/scottt/debugbreak -#ifdef DOCTEST_PLATFORM_MAC -// -- GODOT start -- +#ifdef DOCTEST_PLATFORM_LINUX +#if defined(__GNUC__) && (defined(__i386) || defined(__x86_64)) +// Break at the location of the failing check if possible +#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) +#else +#include <signal.h> +#define DOCTEST_BREAK_INTO_DEBUGGER() raise(SIGTRAP) +#endif +#elif defined(DOCTEST_PLATFORM_MAC) #if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) #define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) #else #define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0"); #endif -// -- GODOT end -- #elif DOCTEST_MSVC #define DOCTEST_BREAK_INTO_DEBUGGER() __debugbreak() #elif defined(__MINGW32__) @@ -371,7 +381,7 @@ extern "C" __declspec(dllimport) void __stdcall DebugBreak(); DOCTEST_GCC_SUPPRESS_WARNING_POP #define DOCTEST_BREAK_INTO_DEBUGGER() ::DebugBreak() #else // linux -#define DOCTEST_BREAK_INTO_DEBUGGER() ((void)0) +#define DOCTEST_BREAK_INTO_DEBUGGER() (static_cast<void>(0)) #endif // linux #endif // DOCTEST_BREAK_INTO_DEBUGGER @@ -381,6 +391,9 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP #endif // DOCTEST_CONFIG_USE_IOSFWD #ifdef DOCTEST_CONFIG_USE_STD_HEADERS +#ifndef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS +#define DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS +#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS #include <iosfwd> #include <cstddef> #include <ostream> @@ -746,7 +759,6 @@ struct ContextOptions //!OCLINT too many fields }; namespace detail { -#if defined(DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING) || defined(DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS) template <bool CONDITION, typename TYPE = void> struct enable_if {}; @@ -754,7 +766,6 @@ namespace detail { template <typename TYPE> struct enable_if<true, TYPE> { typedef TYPE type; }; -#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING) || DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS // clang-format off template<class T> struct remove_reference { typedef T type; }; @@ -763,6 +774,14 @@ namespace detail { template<class T> struct remove_const { typedef T type; }; template<class T> struct remove_const<const T> { typedef T type; }; +#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS + template<class T> struct is_enum : public std::is_enum<T> {}; + template<class T> struct underlying_type : public std::underlying_type<T> {}; +#else + // Use compiler intrinsics + template<class T> struct is_enum { constexpr static bool value = __is_enum(T); }; + template<class T> struct underlying_type { typedef __underlying_type(T) type; }; +#endif // clang-format on template <typename T> @@ -777,12 +796,12 @@ namespace detail { template<class, class = void> struct check { - static constexpr auto value = false; + static constexpr bool value = false; }; template<class T> struct check<T, decltype(os() << val<T>(), void())> { - static constexpr auto value = true; + static constexpr bool value = true; }; } // namespace has_insertion_operator_impl @@ -851,7 +870,7 @@ struct StringMaker<R C::*> } }; -template <typename T> +template <typename T, typename detail::enable_if<!detail::is_enum<T>::value, bool>::type = true> String toString(const DOCTEST_REF_WRAP(T) value) { return StringMaker<T>::convert(value); } @@ -878,6 +897,12 @@ DOCTEST_INTERFACE String toString(int long long in); DOCTEST_INTERFACE String toString(int long long unsigned in); DOCTEST_INTERFACE String toString(std::nullptr_t in); +template <typename T, typename detail::enable_if<detail::is_enum<T>::value, bool>::type = true> +String toString(const DOCTEST_REF_WRAP(T) value) { + typedef typename detail::underlying_type<T>::type UT; + return toString(static_cast<UT>(value)); +} + #if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0) // see this issue on why this is needed: https://github.com/onqtam/doctest/issues/183 DOCTEST_INTERFACE String toString(const std::string& in); @@ -1289,12 +1314,12 @@ namespace detail { template <class L, class R> struct RelationalComparator<n, L, R> { bool operator()(const DOCTEST_REF_WRAP(L) lhs, const DOCTEST_REF_WRAP(R) rhs) const { return op(lhs, rhs); } }; // clang-format on - DOCTEST_BINARY_RELATIONAL_OP(0, eq) - DOCTEST_BINARY_RELATIONAL_OP(1, ne) - DOCTEST_BINARY_RELATIONAL_OP(2, gt) - DOCTEST_BINARY_RELATIONAL_OP(3, lt) - DOCTEST_BINARY_RELATIONAL_OP(4, ge) - DOCTEST_BINARY_RELATIONAL_OP(5, le) + DOCTEST_BINARY_RELATIONAL_OP(0, doctest::detail::eq) + DOCTEST_BINARY_RELATIONAL_OP(1, doctest::detail::ne) + DOCTEST_BINARY_RELATIONAL_OP(2, doctest::detail::gt) + DOCTEST_BINARY_RELATIONAL_OP(3, doctest::detail::lt) + DOCTEST_BINARY_RELATIONAL_OP(4, doctest::detail::ge) + DOCTEST_BINARY_RELATIONAL_OP(5, doctest::detail::le) struct DOCTEST_INTERFACE ResultBuilder : public AssertData { @@ -1421,9 +1446,9 @@ namespace detail { } catch(T ex) { // NOLINT res = m_translateFunction(ex); //!OCLINT parameter reassignment return true; - } catch(...) {} //!OCLINT - empty catch statement -#endif // DOCTEST_CONFIG_NO_EXCEPTIONS - ((void)res); // to silence -Wunused-parameter + } catch(...) {} //!OCLINT - empty catch statement +#endif // DOCTEST_CONFIG_NO_EXCEPTIONS + static_cast<void>(res); // to silence -Wunused-parameter return false; } @@ -2189,37 +2214,37 @@ int registerReporter(const char* name, int priority, bool isReporter) { #ifdef DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS -#define DOCTEST_WARN_THROWS(...) ((void)0) -#define DOCTEST_CHECK_THROWS(...) ((void)0) -#define DOCTEST_REQUIRE_THROWS(...) ((void)0) -#define DOCTEST_WARN_THROWS_AS(expr, ...) ((void)0) -#define DOCTEST_CHECK_THROWS_AS(expr, ...) ((void)0) -#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) ((void)0) -#define DOCTEST_WARN_THROWS_WITH(expr, ...) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH(expr, ...) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) ((void)0) -#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) ((void)0) -#define DOCTEST_WARN_NOTHROW(...) ((void)0) -#define DOCTEST_CHECK_NOTHROW(...) ((void)0) -#define DOCTEST_REQUIRE_NOTHROW(...) ((void)0) - -#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) ((void)0) -#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) ((void)0) -#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) ((void)0) -#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) ((void)0) +#define DOCTEST_WARN_THROWS(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS(...) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_AS(expr, ...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_AS(expr, ...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH(expr, ...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH(expr, ...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) (static_cast<void>(0)) +#define DOCTEST_WARN_NOTHROW(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_NOTHROW(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_NOTHROW(...) (static_cast<void>(0)) + +#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0)) #else // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS @@ -2310,86 +2335,86 @@ int registerReporter(const char* name, int priority, bool isReporter) { #define DOCTEST_REGISTER_REPORTER(name, priority, reporter) #define DOCTEST_REGISTER_LISTENER(name, priority, reporter) -#define DOCTEST_INFO(x) ((void)0) -#define DOCTEST_CAPTURE(x) ((void)0) -#define DOCTEST_ADD_MESSAGE_AT(file, line, x) ((void)0) -#define DOCTEST_ADD_FAIL_CHECK_AT(file, line, x) ((void)0) -#define DOCTEST_ADD_FAIL_AT(file, line, x) ((void)0) -#define DOCTEST_MESSAGE(x) ((void)0) -#define DOCTEST_FAIL_CHECK(x) ((void)0) -#define DOCTEST_FAIL(x) ((void)0) - -#define DOCTEST_WARN(...) ((void)0) -#define DOCTEST_CHECK(...) ((void)0) -#define DOCTEST_REQUIRE(...) ((void)0) -#define DOCTEST_WARN_FALSE(...) ((void)0) -#define DOCTEST_CHECK_FALSE(...) ((void)0) -#define DOCTEST_REQUIRE_FALSE(...) ((void)0) - -#define DOCTEST_WARN_MESSAGE(cond, msg) ((void)0) -#define DOCTEST_CHECK_MESSAGE(cond, msg) ((void)0) -#define DOCTEST_REQUIRE_MESSAGE(cond, msg) ((void)0) -#define DOCTEST_WARN_FALSE_MESSAGE(cond, msg) ((void)0) -#define DOCTEST_CHECK_FALSE_MESSAGE(cond, msg) ((void)0) -#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, msg) ((void)0) - -#define DOCTEST_WARN_THROWS(...) ((void)0) -#define DOCTEST_CHECK_THROWS(...) ((void)0) -#define DOCTEST_REQUIRE_THROWS(...) ((void)0) -#define DOCTEST_WARN_THROWS_AS(expr, ...) ((void)0) -#define DOCTEST_CHECK_THROWS_AS(expr, ...) ((void)0) -#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) ((void)0) -#define DOCTEST_WARN_THROWS_WITH(expr, ...) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH(expr, ...) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) ((void)0) -#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) ((void)0) -#define DOCTEST_WARN_NOTHROW(...) ((void)0) -#define DOCTEST_CHECK_NOTHROW(...) ((void)0) -#define DOCTEST_REQUIRE_NOTHROW(...) ((void)0) - -#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) ((void)0) -#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) ((void)0) -#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) ((void)0) -#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) ((void)0) -#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) ((void)0) -#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) ((void)0) -#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) ((void)0) - -#define DOCTEST_WARN_EQ(...) ((void)0) -#define DOCTEST_CHECK_EQ(...) ((void)0) -#define DOCTEST_REQUIRE_EQ(...) ((void)0) -#define DOCTEST_WARN_NE(...) ((void)0) -#define DOCTEST_CHECK_NE(...) ((void)0) -#define DOCTEST_REQUIRE_NE(...) ((void)0) -#define DOCTEST_WARN_GT(...) ((void)0) -#define DOCTEST_CHECK_GT(...) ((void)0) -#define DOCTEST_REQUIRE_GT(...) ((void)0) -#define DOCTEST_WARN_LT(...) ((void)0) -#define DOCTEST_CHECK_LT(...) ((void)0) -#define DOCTEST_REQUIRE_LT(...) ((void)0) -#define DOCTEST_WARN_GE(...) ((void)0) -#define DOCTEST_CHECK_GE(...) ((void)0) -#define DOCTEST_REQUIRE_GE(...) ((void)0) -#define DOCTEST_WARN_LE(...) ((void)0) -#define DOCTEST_CHECK_LE(...) ((void)0) -#define DOCTEST_REQUIRE_LE(...) ((void)0) - -#define DOCTEST_WARN_UNARY(...) ((void)0) -#define DOCTEST_CHECK_UNARY(...) ((void)0) -#define DOCTEST_REQUIRE_UNARY(...) ((void)0) -#define DOCTEST_WARN_UNARY_FALSE(...) ((void)0) -#define DOCTEST_CHECK_UNARY_FALSE(...) ((void)0) -#define DOCTEST_REQUIRE_UNARY_FALSE(...) ((void)0) +#define DOCTEST_INFO(x) (static_cast<void>(0)) +#define DOCTEST_CAPTURE(x) (static_cast<void>(0)) +#define DOCTEST_ADD_MESSAGE_AT(file, line, x) (static_cast<void>(0)) +#define DOCTEST_ADD_FAIL_CHECK_AT(file, line, x) (static_cast<void>(0)) +#define DOCTEST_ADD_FAIL_AT(file, line, x) (static_cast<void>(0)) +#define DOCTEST_MESSAGE(x) (static_cast<void>(0)) +#define DOCTEST_FAIL_CHECK(x) (static_cast<void>(0)) +#define DOCTEST_FAIL(x) (static_cast<void>(0)) + +#define DOCTEST_WARN(...) (static_cast<void>(0)) +#define DOCTEST_CHECK(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE(...) (static_cast<void>(0)) +#define DOCTEST_WARN_FALSE(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_FALSE(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_FALSE(...) (static_cast<void>(0)) + +#define DOCTEST_WARN_MESSAGE(cond, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_MESSAGE(cond, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_MESSAGE(cond, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_FALSE_MESSAGE(cond, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_FALSE_MESSAGE(cond, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, msg) (static_cast<void>(0)) + +#define DOCTEST_WARN_THROWS(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS(...) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_AS(expr, ...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_AS(expr, ...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH(expr, ...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH(expr, ...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) (static_cast<void>(0)) +#define DOCTEST_WARN_NOTHROW(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_NOTHROW(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_NOTHROW(...) (static_cast<void>(0)) + +#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0)) +#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0)) + +#define DOCTEST_WARN_EQ(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_EQ(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_EQ(...) (static_cast<void>(0)) +#define DOCTEST_WARN_NE(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_NE(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_NE(...) (static_cast<void>(0)) +#define DOCTEST_WARN_GT(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_GT(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_GT(...) (static_cast<void>(0)) +#define DOCTEST_WARN_LT(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_LT(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_LT(...) (static_cast<void>(0)) +#define DOCTEST_WARN_GE(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_GE(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_GE(...) (static_cast<void>(0)) +#define DOCTEST_WARN_LE(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_LE(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_LE(...) (static_cast<void>(0)) + +#define DOCTEST_WARN_UNARY(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_UNARY(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_UNARY(...) (static_cast<void>(0)) +#define DOCTEST_WARN_UNARY_FALSE(...) (static_cast<void>(0)) +#define DOCTEST_CHECK_UNARY_FALSE(...) (static_cast<void>(0)) +#define DOCTEST_REQUIRE_UNARY_FALSE(...) (static_cast<void>(0)) #endif // DOCTEST_CONFIG_DISABLE @@ -3742,8 +3767,8 @@ namespace { DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations") void color_to_stream(std::ostream& s, Color::Enum code) { - ((void)s); // for DOCTEST_CONFIG_COLORS_NONE or DOCTEST_CONFIG_COLORS_WINDOWS - ((void)code); // for DOCTEST_CONFIG_COLORS_NONE + static_cast<void>(s); // for DOCTEST_CONFIG_COLORS_NONE or DOCTEST_CONFIG_COLORS_WINDOWS + static_cast<void>(code); // for DOCTEST_CONFIG_COLORS_NONE #ifdef DOCTEST_CONFIG_COLORS_ANSI if(g_no_colors || (isatty(STDOUT_FILENO) == false && getContextOptions()->force_colors == false)) @@ -3849,7 +3874,28 @@ namespace detail { #ifdef DOCTEST_IS_DEBUGGER_ACTIVE bool isDebuggerActive() { return DOCTEST_IS_DEBUGGER_ACTIVE(); } #else // DOCTEST_IS_DEBUGGER_ACTIVE -#ifdef DOCTEST_PLATFORM_MAC +#ifdef DOCTEST_PLATFORM_LINUX + class ErrnoGuard { + public: + ErrnoGuard() : m_oldErrno(errno) {} + ~ErrnoGuard() { errno = m_oldErrno; } + private: + int m_oldErrno; + }; + // See the comments in Catch2 for the reasoning behind this implementation: + // https://github.com/catchorg/Catch2/blob/v2.13.1/include/internal/catch_debugger.cpp#L79-L102 + bool isDebuggerActive() { + ErrnoGuard guard; + std::ifstream in("/proc/self/status"); + for(std::string line; std::getline(in, line);) { + static const int PREFIX_LEN = 11; + if(line.compare(0, PREFIX_LEN, "TracerPid:\t") == 0) { + return line.length() > PREFIX_LEN && line[PREFIX_LEN] != '0'; + } + } + return false; + } +#elif defined(DOCTEST_PLATFORM_MAC) // The following function is taken directly from the following technical note: // https://developer.apple.com/library/archive/qa/qa1361/_index.html // Returns true if the current process is being debugged (either @@ -5460,25 +5506,28 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP separator_to_stream(); s << std::dec; + auto totwidth = int(std::ceil(log10((std::max(p.numTestCasesPassingFilters, static_cast<unsigned>(p.numAsserts))) + 1))); + auto passwidth = int(std::ceil(log10((std::max(p.numTestCasesPassingFilters - p.numTestCasesFailed, static_cast<unsigned>(p.numAsserts - p.numAssertsFailed))) + 1))); + auto failwidth = int(std::ceil(log10((std::max(p.numTestCasesFailed, static_cast<unsigned>(p.numAssertsFailed))) + 1))); const bool anythingFailed = p.numTestCasesFailed > 0 || p.numAssertsFailed > 0; - s << Color::Cyan << "[doctest] " << Color::None << "test cases: " << std::setw(6) + s << Color::Cyan << "[doctest] " << Color::None << "test cases: " << std::setw(totwidth) << p.numTestCasesPassingFilters << " | " << ((p.numTestCasesPassingFilters == 0 || anythingFailed) ? Color::None : Color::Green) - << std::setw(6) << p.numTestCasesPassingFilters - p.numTestCasesFailed << " passed" + << std::setw(passwidth) << p.numTestCasesPassingFilters - p.numTestCasesFailed << " passed" << Color::None << " | " << (p.numTestCasesFailed > 0 ? Color::Red : Color::None) - << std::setw(6) << p.numTestCasesFailed << " failed" << Color::None << " | "; + << std::setw(failwidth) << p.numTestCasesFailed << " failed" << Color::None << " |"; if(opt.no_skipped_summary == false) { const int numSkipped = p.numTestCases - p.numTestCasesPassingFilters; - s << (numSkipped == 0 ? Color::None : Color::Yellow) << std::setw(6) << numSkipped + s << " " << (numSkipped == 0 ? Color::None : Color::Yellow) << numSkipped << " skipped" << Color::None; } s << "\n"; - s << Color::Cyan << "[doctest] " << Color::None << "assertions: " << std::setw(6) + s << Color::Cyan << "[doctest] " << Color::None << "assertions: " << std::setw(totwidth) << p.numAsserts << " | " << ((p.numAsserts == 0 || anythingFailed) ? Color::None : Color::Green) - << std::setw(6) << (p.numAsserts - p.numAssertsFailed) << " passed" << Color::None - << " | " << (p.numAssertsFailed > 0 ? Color::Red : Color::None) << std::setw(6) + << std::setw(passwidth) << (p.numAsserts - p.numAssertsFailed) << " passed" << Color::None + << " | " << (p.numAssertsFailed > 0 ? Color::Red : Color::None) << std::setw(failwidth) << p.numAssertsFailed << " failed" << Color::None << " |\n"; s << Color::Cyan << "[doctest] " << Color::None << "Status: " << (p.numTestCasesFailed > 0 ? Color::Red : Color::Green) diff --git a/thirdparty/doctest/patches/fix-arm64-mac.patch b/thirdparty/doctest/patches/fix-arm64-mac.patch deleted file mode 100644 index f78014534f..0000000000 --- a/thirdparty/doctest/patches/fix-arm64-mac.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/thirdparty/doctest/doctest.h b/thirdparty/doctest/doctest.h -index 9444698286..e4fed12767 100644 ---- a/thirdparty/doctest/doctest.h -+++ b/thirdparty/doctest/doctest.h -@@ -356,7 +356,13 @@ DOCTEST_MSVC_SUPPRESS_WARNING(26812) // Prefer 'enum class' over 'enum' - #ifndef DOCTEST_BREAK_INTO_DEBUGGER - // should probably take a look at https://github.com/scottt/debugbreak - #ifdef DOCTEST_PLATFORM_MAC -+// -- GODOT start -- -+#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) - #define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) -+#else -+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0"); -+#endif -+// -- GODOT end -- - #elif DOCTEST_MSVC - #define DOCTEST_BREAK_INTO_DEBUGGER() __debugbreak() - #elif defined(__MINGW32__) |